refactor: make provisioning own instance lifecycle operations

This commit is contained in:
2026-09-27 14:45:00 -04:00
parent cfed584614
commit df265d1900
44 changed files with 1791 additions and 1609 deletions
+32
View File
@@ -0,0 +1,32 @@
// Integration ticks reflect the production worker: callers submit/observe;
// Provisioning alone executes jobs between those reconciliation passes.
let campaignFlight: Promise<Awaited<ReturnType<typeof import('../../src/lib/server/pipeline/sweep.js').sweep>>> | null = null;
export function sweep() {
if (campaignFlight) return campaignFlight;
campaignFlight = (async () => {
const caller = await import('../../src/lib/server/pipeline/sweep.js');
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
await caller.sweep(); await processProvisioning(); return caller.sweep();
})().finally(() => { campaignFlight = null; });
return campaignFlight;
}
let betaFlight: Promise<{ processed: number }> | null = null;
export function betaTick() {
if (betaFlight) return betaFlight;
betaFlight = (async () => {
const caller = await import('../../src/lib/server/pipeline/beta-runner.js');
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
await caller.betaTick(); await processProvisioning(); return caller.betaTick();
})().finally(() => { betaFlight = null; });
return betaFlight;
}
let maintenanceFlight: Promise<void> | null = null;
export function maintenanceTick(): Promise<void> {
if (maintenanceFlight) return maintenanceFlight;
maintenanceFlight = (async () => {
const caller = await import('../../src/lib/server/fleet/plutonium.js');
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
await caller.maintenanceTick(); await processProvisioning(); await caller.maintenanceTick();
})().finally(() => { maintenanceFlight = null; });
return maintenanceFlight;
}