instar 1.3.553 → 1.3.554

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiH7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAy3CD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0wbtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiH7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAy3CD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmzbtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
@@ -12998,6 +12998,42 @@ export async function startServer(options) {
12998
12998
  });
12999
12999
  const poolSelfId = machineHeartbeat?.config?.machineId ??
13000
13000
  (poolIdMgr.hasIdentity() ? poolIdMgr.loadIdentity().machineId : null);
13001
+ // WS4.3 journal-lease cutover (MULTI-MACHINE-SEAMLESSNESS-SPEC §WS4.3,
13002
+ // "Cutover discipline"). Wired HERE (not at setRoleGuard) because the
13003
+ // gate needs the machinePoolRegistry — declared after the scheduler is
13004
+ // built. The gate-input is read LIVE at each claim boundary: the flag +
13005
+ // dry-run from config, this machine's lease epoch from the coordinator,
13006
+ // and the pool peers' advertised ws43JournalLease capability from their
13007
+ // last heartbeat (absent = older peer = non-participant → the whole pool
13008
+ // stays on the bus). Single-machine (no peers) is a strict no-op inside
13009
+ // the gate. The cutover guarantees the journal-lease and the legacy bus
13010
+ // broadcast are NEVER both live for a job set (the named migration hazard).
13011
+ if (poolSelfId && scheduler) {
13012
+ const leaseMod = await import('../scheduler/JobLeaseClaimStore.js');
13013
+ const leaseStore = new leaseMod.JobLeaseClaimStore({
13014
+ machineId: poolSelfId,
13015
+ stateDir: config.stateDir,
13016
+ });
13017
+ const registryForCutover = machinePoolRegistry;
13018
+ scheduler.setJournalLeaseCutover(leaseStore, () => ({
13019
+ enabled: config.multiMachine?.seamlessness?.ws43JournalLease === true,
13020
+ dryRun: config.multiMachine?.seamlessness?.ws43JournalLeaseDryRun !== false,
13021
+ epoch: coordinator.getLeaseEpoch(),
13022
+ peers: registryForCutover
13023
+ .getCapacities()
13024
+ .filter((c) => c.machineId !== poolSelfId)
13025
+ .map((c) => ({
13026
+ machineId: c.machineId,
13027
+ online: c.online,
13028
+ ws43JournalLease: c.seamlessnessFlags?.ws43JournalLease === true,
13029
+ })),
13030
+ }), (slug, decision) => {
13031
+ if (decision.reason === 'peers-incoherent' && decision.incoherentPeers.length > 0) {
13032
+ console.log(pc.dim(` [scheduler] WS4.3 cutover withheld for "${slug}" — pool not flag-coherent (peers without ws43JournalLease: ${decision.incoherentPeers.join(', ')}); staying on the legacy bus path.`));
13033
+ }
13034
+ });
13035
+ console.log(pc.dim(' [scheduler] WS4.3 journal-lease cutover wired (engages only when flag on + pool coherent).'));
13036
+ }
13001
13037
  if (poolSelfId) {
13002
13038
  try {
13003
13039
  poolIdMgr.recordSelfHardware(poolSelfId, poolMod.captureHardware());
@@ -13081,7 +13117,7 @@ export async function startServer(options) {
13081
13117
  // WS1.1 capability advertisement (spec invariant 5): a bounded
13082
13118
  // fixed-size summary, never an inventory. Reported live each
13083
13119
  // heartbeat so a queue going dark withdraws the capability.
13084
- seamlessnessFlags: { ws11DeliverReceive: !!_inboundQueue, ws12DrainReceive: !!_drainRunner, ws44PoolLinks: !!_poolLink, ws44PoolCache: !!_poolPollCache, stateSyncReceive: selfStateSyncReceive() },
13120
+ seamlessnessFlags: { ws11DeliverReceive: !!_inboundQueue, ws12DrainReceive: !!_drainRunner, ws44PoolLinks: !!_poolLink, ws44PoolCache: !!_poolPollCache, ws43JournalLease: config.multiMachine?.seamlessness?.ws43JournalLease === true && config.multiMachine?.seamlessness?.ws43JournalLeaseDryRun !== true, stateSyncReceive: selfStateSyncReceive() },
13085
13121
  // Durable Inbound Message Queue §5.1: depth + oldest + tenure +
13086
13122
  // bounded top-K — the survivor's loss-SUSPECTED item, capped
13087
13123
  // re-placement arm, and supersede-dedupe key all read these.