instar 1.3.562 → 1.3.564

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.
Files changed (35) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +37 -2
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  5. package/dist/core/PostUpdateMigrator.js +18 -0
  6. package/dist/core/PostUpdateMigrator.js.map +1 -1
  7. package/dist/core/WorkEvidence.d.ts +18 -0
  8. package/dist/core/WorkEvidence.d.ts.map +1 -1
  9. package/dist/core/WorkEvidence.js +22 -0
  10. package/dist/core/WorkEvidence.js.map +1 -1
  11. package/dist/core/inboundQueueConfig.d.ts +17 -0
  12. package/dist/core/inboundQueueConfig.d.ts.map +1 -1
  13. package/dist/core/inboundQueueConfig.js +16 -0
  14. package/dist/core/inboundQueueConfig.js.map +1 -1
  15. package/dist/core/types.d.ts +14 -0
  16. package/dist/core/types.d.ts.map +1 -1
  17. package/dist/core/types.js.map +1 -1
  18. package/dist/monitoring/ResumeQueue.d.ts +12 -1
  19. package/dist/monitoring/ResumeQueue.d.ts.map +1 -1
  20. package/dist/monitoring/ResumeQueue.js +26 -3
  21. package/dist/monitoring/ResumeQueue.js.map +1 -1
  22. package/dist/monitoring/ResumeQueueDrainer.d.ts +49 -0
  23. package/dist/monitoring/ResumeQueueDrainer.d.ts.map +1 -1
  24. package/dist/monitoring/ResumeQueueDrainer.js +112 -3
  25. package/dist/monitoring/ResumeQueueDrainer.js.map +1 -1
  26. package/dist/scaffold/templates.d.ts.map +1 -1
  27. package/dist/scaffold/templates.js +1 -0
  28. package/dist/scaffold/templates.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/data/builtin-manifest.json +19 -19
  31. package/src/scaffold/templates.ts +1 -0
  32. package/upgrades/1.3.563.md +32 -0
  33. package/upgrades/1.3.564.md +40 -0
  34. package/upgrades/side-effects/inbound-queue-boot-order-fix.md +72 -0
  35. package/upgrades/side-effects/resume-queue-stale-emergency-pause.md +212 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkCH,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,CAg5btE;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;AAkCH,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,CAk7btE;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"}
@@ -6396,6 +6396,13 @@ export async function startServer(options) {
6396
6396
  breakerThreshold: rqCfg.breakerThreshold ?? 3,
6397
6397
  breakerCooldownMin: rqCfg.breakerCooldownMin ?? 30,
6398
6398
  tier1Check: rqCfg.tier1Check ?? true,
6399
+ // Stale-emergency-pause auto-recovery (spec:
6400
+ // resume-queue-stale-emergency-pause.md). CODE-defaulted like the
6401
+ // other resumeQueue.* keys (never frozen into ConfigDefaults — the
6402
+ // fleet flip stays in code). Layer 1 (paused-with-waiting alert) is
6403
+ // always on; autoResumeStalePause gates only Layer 2.
6404
+ staleEmergencyPauseAutoResumeMin: rqCfg.staleEmergencyPauseAutoResumeMin ?? 60,
6405
+ autoResumeStalePause: rqCfg.autoResumeStalePause ?? true,
6399
6406
  });
6400
6407
  resumeDrainer.start();
6401
6408
  console.log(pc.green(` ResumeQueue started (${(rqCfg.dryRun ?? !resolveDevAgentGate(undefined, config)) ? 'dry-run observe-only' : 'LIVE'}; drainer ${rqCfg.drainIntervalSec ?? 60}s tick)`));
@@ -15032,7 +15039,34 @@ export async function startServer(options) {
15032
15039
  // wouldEnqueue/wouldHold/wouldRefuse counters ARE the promotion
15033
15040
  // evidence and /pool/queue must serve them. The boot sweep already
15034
15041
  // gate-expired any live→dry-run residual rows.
15035
- if (qcfg.enabled && _sessionPoolStage() !== 'dark') {
15042
+ //
15043
+ // BOOT-ORDER FIX: do NOT consult `_sessionPoolStage()` here — at this
15044
+ // point in the synchronous boot flow it is still the line-~443 stub
15045
+ // (`() => 'dark'`); the real impl is only assigned ~350 lines BELOW
15046
+ // (the `_sessionPoolStage = () => { ... }` reassignment after the
15047
+ // peer-presence puller is wired). Reading the stub made the gate
15048
+ // ALWAYS false, so the inbound-queue engine never constructed even
15049
+ // when correctly configured, and `/pool/queue` 503'd forever. Resolve
15050
+ // the stage INLINE from config here — mirroring the line-~16045 impl
15051
+ // exactly (liveConfig override with the static config block as the
15052
+ // fallback) — instead of depending on the not-yet-wired ref.
15053
+ const _sessionPoolStageNow = (() => {
15054
+ try {
15055
+ const fallback = (config.multiMachine?.sessionPool ?? {});
15056
+ const live = liveConfig.get('multiMachine.sessionPool', fallback);
15057
+ return iqcMod.resolveSessionPoolStage(live);
15058
+ }
15059
+ catch {
15060
+ // @silent-fallback-ok: a config-read failure resolves the stage
15061
+ // to 'dark' (the inert default) → the queue simply does not
15062
+ // construct this boot, byte-identical to the ships-dark default.
15063
+ // This is the SAFE direction (fail-closed: no queue), not a
15064
+ // degraded capability worth a DegradationReporter event. Mirrors
15065
+ // the live _sessionPoolStage getter's identical guard below.
15066
+ return 'dark';
15067
+ }
15068
+ })();
15069
+ if (qcfg.enabled && _sessionPoolStageNow !== 'dark') {
15036
15070
  const inv = iqcMod.validateInboundQueueInvariants(qcfg, hcfg);
15037
15071
  if (!inv.ok) {
15038
15072
  for (const v of inv.violations) {
@@ -15365,11 +15399,12 @@ export async function startServer(options) {
15365
15399
  const peerPresenceTimer = setInterval(() => { void peerPresencePuller.pullOnce(); }, 30_000);
15366
15400
  if (typeof peerPresenceTimer.unref === 'function')
15367
15401
  peerPresenceTimer.unref();
15402
+ const { resolveSessionPoolStage: _resolveSessionPoolStage } = await import('../core/inboundQueueConfig.js');
15368
15403
  _sessionPoolStage = () => {
15369
15404
  try {
15370
15405
  const fallback = (config.multiMachine?.sessionPool ?? {});
15371
15406
  const live = liveConfig.get('multiMachine.sessionPool', fallback);
15372
- return live?.enabled && live?.stage ? String(live.stage) : 'dark';
15407
+ return _resolveSessionPoolStage(live);
15373
15408
  }
15374
15409
  catch {
15375
15410
  return 'dark';