instar 1.3.714 → 1.3.715

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 (87) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +599 -4
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +35 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/CoherenceJournal.d.ts +1 -1
  8. package/dist/core/CoherenceJournal.d.ts.map +1 -1
  9. package/dist/core/CoherenceJournal.js +9 -2
  10. package/dist/core/CoherenceJournal.js.map +1 -1
  11. package/dist/core/FencedLease.d.ts +47 -1
  12. package/dist/core/FencedLease.d.ts.map +1 -1
  13. package/dist/core/FencedLease.js +58 -1
  14. package/dist/core/FencedLease.js.map +1 -1
  15. package/dist/core/LeaseCoordinator.d.ts +25 -1
  16. package/dist/core/LeaseCoordinator.d.ts.map +1 -1
  17. package/dist/core/LeaseCoordinator.js +66 -0
  18. package/dist/core/LeaseCoordinator.js.map +1 -1
  19. package/dist/core/LeaseHandbackReconciler.d.ts +212 -0
  20. package/dist/core/LeaseHandbackReconciler.d.ts.map +1 -0
  21. package/dist/core/LeaseHandbackReconciler.js +416 -0
  22. package/dist/core/LeaseHandbackReconciler.js.map +1 -0
  23. package/dist/core/MeshRpc.d.ts +6 -1
  24. package/dist/core/MeshRpc.d.ts.map +1 -1
  25. package/dist/core/MeshRpc.js +9 -0
  26. package/dist/core/MeshRpc.js.map +1 -1
  27. package/dist/core/MultiMachineCoordinator.d.ts +20 -0
  28. package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
  29. package/dist/core/MultiMachineCoordinator.js +30 -0
  30. package/dist/core/MultiMachineCoordinator.js.map +1 -1
  31. package/dist/core/OwnershipReconciler.d.ts +42 -2
  32. package/dist/core/OwnershipReconciler.d.ts.map +1 -1
  33. package/dist/core/OwnershipReconciler.js +100 -2
  34. package/dist/core/OwnershipReconciler.js.map +1 -1
  35. package/dist/core/PostUpdateMigrator.d.ts +1 -0
  36. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  37. package/dist/core/PostUpdateMigrator.js +31 -0
  38. package/dist/core/PostUpdateMigrator.js.map +1 -1
  39. package/dist/core/StaleOwnerReleaseEngine.d.ts +290 -0
  40. package/dist/core/StaleOwnerReleaseEngine.d.ts.map +1 -0
  41. package/dist/core/StaleOwnerReleaseEngine.js +645 -0
  42. package/dist/core/StaleOwnerReleaseEngine.js.map +1 -0
  43. package/dist/core/TopicClaimAnnotationStore.d.ts +121 -0
  44. package/dist/core/TopicClaimAnnotationStore.d.ts.map +1 -0
  45. package/dist/core/TopicClaimAnnotationStore.js +234 -0
  46. package/dist/core/TopicClaimAnnotationStore.js.map +1 -0
  47. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  48. package/dist/core/devGatedFeatures.js +11 -0
  49. package/dist/core/devGatedFeatures.js.map +1 -1
  50. package/dist/core/handbackLatch.d.ts +28 -0
  51. package/dist/core/handbackLatch.d.ts.map +1 -0
  52. package/dist/core/handbackLatch.js +73 -0
  53. package/dist/core/handbackLatch.js.map +1 -0
  54. package/dist/core/ropeHealth.d.ts +26 -0
  55. package/dist/core/ropeHealth.d.ts.map +1 -0
  56. package/dist/core/ropeHealth.js +32 -0
  57. package/dist/core/ropeHealth.js.map +1 -0
  58. package/dist/core/types.d.ts +51 -0
  59. package/dist/core/types.d.ts.map +1 -1
  60. package/dist/core/types.js.map +1 -1
  61. package/dist/monitoring/StrandedTopicSentinel.d.ts +5 -0
  62. package/dist/monitoring/StrandedTopicSentinel.d.ts.map +1 -1
  63. package/dist/monitoring/StrandedTopicSentinel.js +8 -0
  64. package/dist/monitoring/StrandedTopicSentinel.js.map +1 -1
  65. package/dist/monitoring/guardManifest.d.ts.map +1 -1
  66. package/dist/monitoring/guardManifest.js +45 -0
  67. package/dist/monitoring/guardManifest.js.map +1 -1
  68. package/dist/monitoring/strandedTopicDecision.d.ts +11 -0
  69. package/dist/monitoring/strandedTopicDecision.d.ts.map +1 -1
  70. package/dist/monitoring/strandedTopicDecision.js +12 -1
  71. package/dist/monitoring/strandedTopicDecision.js.map +1 -1
  72. package/dist/scaffold/templates.d.ts.map +1 -1
  73. package/dist/scaffold/templates.js +2 -1
  74. package/dist/scaffold/templates.js.map +1 -1
  75. package/dist/server/AgentServer.d.ts +9 -0
  76. package/dist/server/AgentServer.d.ts.map +1 -1
  77. package/dist/server/AgentServer.js +2 -0
  78. package/dist/server/AgentServer.js.map +1 -1
  79. package/dist/server/routes.d.ts +9 -0
  80. package/dist/server/routes.d.ts.map +1 -1
  81. package/dist/server/routes.js +76 -0
  82. package/dist/server/routes.js.map +1 -1
  83. package/package.json +1 -1
  84. package/src/data/builtin-manifest.json +65 -65
  85. package/src/scaffold/templates.ts +2 -1
  86. package/upgrades/1.3.715.md +92 -0
  87. package/upgrades/side-effects/u4-stale-owner-release-lease-handback.md +87 -0
@@ -1 +1 @@
1
- {"version":3,"file":"FencedLease.d.ts","sourceRoot":"","sources":["../../src/core/FencedLease.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FencedLease.d.ts","sourceRoot":"","sources":["../../src/core/FencedLease.ts"],"names":[],"mappings":"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"}
@@ -76,6 +76,37 @@ export class FencedLease {
76
76
  const signature = this.crypto.sign(FencedLease.canonicalize(base));
77
77
  return { ...base, signature };
78
78
  }
79
+ // ── U4.4 hand-back consent token (mint + verify) ──────────────────
80
+ /** Stable, field-ordered serialization of the signable consent fields. The
81
+ * leading discriminator prevents cross-protocol confusion with a lease
82
+ * record's canonical form (a consent token can never verify as a lease). */
83
+ static canonicalizeHandbackConsent(t) {
84
+ return JSON.stringify(['handback-consent', t.holder, t.epoch, t.target, t.expiresAt, t.nonce]);
85
+ }
86
+ /** Mint a consent token naming THIS machine as the consenting holder.
87
+ * The CALLER (LeaseCoordinator) is responsible for only minting while it
88
+ * actually holds the lease at `epoch`. */
89
+ signHandbackConsent(epoch, target, expiresAtIso, nonce) {
90
+ const base = {
91
+ holder: this.crypto.selfMachineId,
92
+ epoch,
93
+ target,
94
+ expiresAt: expiresAtIso,
95
+ nonce,
96
+ };
97
+ return { ...base, signature: this.crypto.sign(FencedLease.canonicalizeHandbackConsent(base)) };
98
+ }
99
+ /** Verify a consent token's signature against its claimed holder's
100
+ * REGISTERED key (an unknown/forged holder never verifies). */
101
+ verifyHandbackConsent(token) {
102
+ if (!token || typeof token.holder !== 'string' || typeof token.epoch !== 'number')
103
+ return false;
104
+ if (typeof token.target !== 'string' || typeof token.expiresAt !== 'string')
105
+ return false;
106
+ if (typeof token.nonce !== 'number' || typeof token.signature !== 'string')
107
+ return false;
108
+ return this.crypto.verify(FencedLease.canonicalizeHandbackConsent(token), token.signature, token.holder);
109
+ }
79
110
  /** Verify a lease's signature against its claimed holder's registered key. */
80
111
  verifyLease(lease) {
81
112
  if (!lease || typeof lease.holder !== 'string' || typeof lease.epoch !== 'number')
@@ -160,7 +191,7 @@ export class FencedLease {
160
191
  * A genuinely-live contended lease is resolved by the CAS itself (only one
161
192
  * epoch advance wins); this method only decides whether to try.
162
193
  */
163
- canAcquire(currentLease, presumedDeadHolders, nowMs, staleHolderOpts) {
194
+ canAcquire(currentLease, presumedDeadHolders, nowMs, staleHolderOpts, handbackOpts) {
164
195
  if (!currentLease)
165
196
  return { can: true, reason: 'no-current-lease' };
166
197
  if (this.isExpired(currentLease, nowMs))
@@ -188,6 +219,32 @@ export class FencedLease {
188
219
  return { can: true, reason: `holder-not-renewing (nonce watermark stalled ${stalledS}s)` };
189
220
  }
190
221
  }
222
+ // U4.4 (preferredCaptainHandback, R-r2-1) — the consent-authorized
223
+ // acquisition branch. `held-by-live-peer` is EXACTLY the hand-back state
224
+ // (the holder is alive and consenting, not stale), so a claim is granted
225
+ // ONLY when the presented consent token:
226
+ // • verifies against the HOLDER's registered key (unforgeable),
227
+ // • names THIS machine as the target,
228
+ // • matches the LIVE lease's holder AND epoch (epoch-bound — a token
229
+ // minted for an older epoch is dead the moment the lease moves),
230
+ // • is unexpired (TTL-bounded), and
231
+ // • is unused (single-use — the caller's used-nonce check).
232
+ // FAIL-CLOSED default: absent/invalid/expired/replayed/reused token ⇒ the
233
+ // legacy `held-by-live-peer` refusal below, byte-for-byte unchanged.
234
+ if (handbackOpts) {
235
+ const t = handbackOpts.token;
236
+ const expMs = Date.parse(t?.expiresAt ?? '');
237
+ if (!handbackOpts.alreadyUsed &&
238
+ t &&
239
+ t.target === this.crypto.selfMachineId &&
240
+ t.holder === currentLease.holder &&
241
+ t.epoch === currentLease.epoch &&
242
+ Number.isFinite(expMs) &&
243
+ nowMs < expMs &&
244
+ this.verifyHandbackConsent(t)) {
245
+ return { can: true, reason: `handback-consent (from ${t.holder} at epoch ${t.epoch})` };
246
+ }
247
+ }
191
248
  return { can: false, reason: `held-by-live-peer (${currentLease.holder})` };
192
249
  }
193
250
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"FencedLease.js","sourceRoot":"","sources":["../../src/core/FencedLease.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FencedLease.js","sourceRoot":"","sources":["../../src/core/FencedLease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAwFH,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,MAAM,OAAO,WAAW;IACL,MAAM,CAAc;IACpB,UAAU,CAAS;IACnB,mBAAmB,CAAS;IAC5B,aAAa,CAAS;IAEvC,YAAY,MAAmB,EAAE,MAAyB;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QACtD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,uBAAuB,CAAC;IACvE,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,qEAAqE;IAErE;;;;OAIG;IACH,MAAM,CAAC,YAAY,CACjB,KAA4G;QAE5G,MAAM,IAAI,GAAqC;YAC7C,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,KAAK;YACX,KAAK,CAAC,UAAU;YAChB,KAAK,CAAC,SAAS;YACf,KAAK,CAAC,KAAK;SACZ,CAAC;QACF,8EAA8E;QAC9E,6EAA6E;QAC7E,8EAA8E;QAC9E,6EAA6E;QAC7E,yEAAyE;QACzE,0EAA0E;QAC1E,yCAAyC;QACzC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,SAAS,CACP,KAAa,EACb,aAAqB,EACrB,YAAoB,EACpB,KAAa,EACb,QAAQ,GAAG,KAAK;QAEhB,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;YACjC,KAAK;YACL,UAAU,EAAE,aAAa;YACzB,SAAS,EAAE,YAAY;YACvB,KAAK;YACL,yEAAyE;YACzE,2EAA2E;YAC3E,6DAA6D;YAC7D,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,qEAAqE;IAErE;;iFAE6E;IAC7E,MAAM,CAAC,2BAA2B,CAChC,CAAoF;QAEpF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACjG,CAAC;IAED;;+CAE2C;IAC3C,mBAAmB,CAAC,KAAa,EAAE,MAAc,EAAE,YAAoB,EAAE,KAAa;QACpF,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;YACjC,KAAK;YACL,MAAM;YACN,SAAS,EAAE,YAAY;YACvB,KAAK;SACN,CAAC;QACF,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IACjG,CAAC;IAED;oEACgE;IAChE,qBAAqB,CAAC,KAA2B;QAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChG,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC1F,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACzF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3G,CAAC;IAED,8EAA8E;IAC9E,WAAW,CAAC,KAAkB;QAC5B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChG,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5F,CAAC;IAED,qEAAqE;IAErE,0DAA0D;IAC1D,SAAS,CAAC,KAAqC,EAAE,KAAa;QAC5D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,KAAK,IAAI,KAAK,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,WAAmB,EAAE,QAAgB;QACzD,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,qEAAqE;IAErE;;;;;OAKG;IACH,eAAe,CAAC,KAAqC,EAAE,cAAsB,EAAE,KAAa;QAC1F,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QAC7D,2EAA2E;QAC3E,6DAA6D;QAC7D,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc;YAAE,OAAO,KAAK,CAAC;QACjD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,YAAoB,EAAE,cAAsB;QAChE,OAAO,YAAY,KAAK,cAAc,CAAC;IACzC,CAAC;IAED,qEAAqE;IAErE;;;;;;OAMG;IACH,iBAAiB,CACf,GAAgB,EAChB,iBAAyB,EACzB,iBAAyC;QAEzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;QAC1E,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,GAAG,iBAAiB,EAAE,CAAC;YAClC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,GAAG,CAAC,KAAK,gBAAgB,iBAAiB,GAAG,EAAE,CAAC;QAChH,CAAC;QACD,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,IAAI,GAAG,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;YAC3B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,GAAG,CAAC,KAAK,OAAO,SAAS,GAAG,EAAE,CAAC;QAC7F,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC9C,CAAC;IAED,qEAAqE;IAErE;;;;;;;;OAQG;IACH,UAAU,CACR,YAA4C,EAC5C,mBAAwC,EACxC,KAAa,EACb,eAAyC,EACzC,YAAmC;QAEnC,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QACpE,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;QAC/F,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACtD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QAChF,CAAC;QACD,4EAA4E;QAC5E,sEAAsE;QACtE,sEAAsE;QACtE,sEAAsE;QACtE,2EAA2E;QAC3E,0EAA0E;QAC1E,gEAAgE;QAChE,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,GAAG,eAAe,CAAC;YACvF,IACE,OAAO,mBAAmB,KAAK,QAAQ;gBACvC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACpC,qBAAqB,GAAG,CAAC;gBACzB,cAAc,GAAG,mBAAmB,GAAG,qBAAqB,EAC5D,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,mBAAmB,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC3E,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,gDAAgD,QAAQ,IAAI,EAAE,CAAC;YAC7F,CAAC;QACH,CAAC;QACD,mEAAmE;QACnE,yEAAyE;QACzE,yEAAyE;QACzE,yCAAyC;QACzC,kEAAkE;QAClE,wCAAwC;QACxC,uEAAuE;QACvE,qEAAqE;QACrE,sCAAsC;QACtC,8DAA8D;QAC9D,0EAA0E;QAC1E,qEAAqE;QACrE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;YAC7C,IACE,CAAC,YAAY,CAAC,WAAW;gBACzB,CAAC;gBACD,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa;gBACtC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;gBAChC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK;gBAC9B,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACtB,KAAK,GAAG,KAAK;gBACb,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAC7B,CAAC;gBACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1F,CAAC;QACH,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,YAA4C,EAAE,KAAa,EAAE,KAAa;QACzF,MAAM,YAAY,GAAG,YAAY,EAAE,KAAK,IAAI,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,4BAA4B,CAAC,UAAkB,EAAE,kBAA0B;QACzE,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QAClD,6EAA6E;QAC7E,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,kBAAkB,CAAC;IACxD,CAAC;IAED,oDAAoD;IACpD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,4DAA4D;IAC5D,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;CACF"}
@@ -19,7 +19,7 @@
19
19
  * The store/transport are injected so the dangerous CAS-contention and
20
20
  * self-suspend logic are unit-testable with in-memory fakes.
21
21
  */
22
- import { FencedLease } from './FencedLease.js';
22
+ import { FencedLease, type HandbackConsentToken } from './FencedLease.js';
23
23
  import type { LeaseRecord } from './types.js';
24
24
  /** Durable (git-backed) view + CAS write of the lease. */
25
25
  export interface LeaseStore {
@@ -364,6 +364,30 @@ export declare class LeaseCoordinator {
364
364
  * trigger a takeover. On success: CAS to epoch+1, broadcast, emit the new epoch.
365
365
  */
366
366
  acquireOnConsent(yieldFromMachineId: string): Promise<boolean>;
367
+ /** Used consent-token nonces per holder (single-use enforcement on the
368
+ * ACQUIRING side). In-memory: a restart forgets, but the token TTL is short
369
+ * and the envelope nonce guard is durable — the safe direction. */
370
+ private usedHandbackNonces;
371
+ /**
372
+ * HOLDER side — mint the SIGNED, epoch-bound, TTL-bounded, SINGLE-USE consent
373
+ * token a `handback-offer` carries (R-r2-1). Refuses (null) unless THIS
374
+ * machine currently holds a valid lease — a non-holder can never mint
375
+ * consent for a lease it does not hold.
376
+ */
377
+ mintHandbackConsent(target: string, ttlMs: number): HandbackConsentToken | null;
378
+ /**
379
+ * PREFERRED-CAPTAIN side — claim the lease by presenting the holder's consent
380
+ * token through the `handbackOpts` branch of canAcquire (R-r2-1). Claim-
381
+ * before-release: on success the CAS advances the epoch and the old holder
382
+ * steps down by observing it (isStampCurrent fencing — no double-serve
383
+ * window); on ANY failure nothing changes and the holder keeps holding (a
384
+ * failed hand-back can never leave zero holders). Single-use: the token's
385
+ * (holder, nonce) is burned on FIRST presentation, success or not.
386
+ */
387
+ acquireOnHandbackConsent(token: HandbackConsentToken): Promise<{
388
+ ok: boolean;
389
+ reason: string;
390
+ }>;
367
391
  /**
368
392
  * Renew the held lease: re-sign with a fresh expiry, broadcast over the
369
393
  * tunnel, and (coarsely, via the store on epoch change) keep git current.
@@ -1 +1 @@
1
- {"version":3,"file":"LeaseCoordinator.d.ts","sourceRoot":"","sources":["../../src/core/LeaseCoordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LeaseCoordinator.d.ts","sourceRoot":"","sources":["../../src/core/LeaseCoordinator.ts"],"names":[],"mappings":"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"}
@@ -469,6 +469,72 @@ export class LeaseCoordinator {
469
469
  this.log(`consent acquire lost CAS to epoch ${res.observed.epoch}`);
470
470
  return false;
471
471
  }
472
+ // ── U4.4 lease hand-back (docs/specs/u4-4-lease-handback.md) ────────
473
+ /** Used consent-token nonces per holder (single-use enforcement on the
474
+ * ACQUIRING side). In-memory: a restart forgets, but the token TTL is short
475
+ * and the envelope nonce guard is durable — the safe direction. */
476
+ usedHandbackNonces = new Map();
477
+ /**
478
+ * HOLDER side — mint the SIGNED, epoch-bound, TTL-bounded, SINGLE-USE consent
479
+ * token a `handback-offer` carries (R-r2-1). Refuses (null) unless THIS
480
+ * machine currently holds a valid lease — a non-holder can never mint
481
+ * consent for a lease it does not hold.
482
+ */
483
+ mintHandbackConsent(target, ttlMs) {
484
+ if (!this.holdsLease())
485
+ return null;
486
+ const view = this.effectiveView();
487
+ if (!view.lease || view.lease.holder !== this.selfMachineId)
488
+ return null;
489
+ const expiresAt = new Date(this.now() + Math.max(1_000, ttlMs)).toISOString();
490
+ return this.fl.signHandbackConsent(view.epoch, target, expiresAt, this.nextNonce());
491
+ }
492
+ /**
493
+ * PREFERRED-CAPTAIN side — claim the lease by presenting the holder's consent
494
+ * token through the `handbackOpts` branch of canAcquire (R-r2-1). Claim-
495
+ * before-release: on success the CAS advances the epoch and the old holder
496
+ * steps down by observing it (isStampCurrent fencing — no double-serve
497
+ * window); on ANY failure nothing changes and the holder keeps holding (a
498
+ * failed hand-back can never leave zero holders). Single-use: the token's
499
+ * (holder, nonce) is burned on FIRST presentation, success or not.
500
+ */
501
+ async acquireOnHandbackConsent(token) {
502
+ const view = this.effectiveView();
503
+ const used = this.usedHandbackNonces.get(token?.holder ?? '') ?? new Set();
504
+ const alreadyUsed = used.has(token?.nonce);
505
+ const decision = this.fl.canAcquire(view.lease, this.d.presumedDeadHolders(), this.now(), undefined, {
506
+ token,
507
+ alreadyUsed,
508
+ });
509
+ // Burn the nonce on first presentation (replay/reuse fail-closed after).
510
+ if (token && typeof token.nonce === 'number') {
511
+ used.add(token.nonce);
512
+ this.usedHandbackNonces.set(token.holder, used);
513
+ if (used.size > 256) {
514
+ // bounded memory: keep the newest nonces
515
+ const keep = [...used].sort((a, b) => b - a).slice(0, 128);
516
+ this.usedHandbackNonces.set(token.holder, new Set(keep));
517
+ }
518
+ }
519
+ if (!decision.can || !decision.reason.startsWith('handback-consent')) {
520
+ // FAIL-CLOSED: only the consent branch may authorize this path — a
521
+ // coincidentally-expired lease must not turn a bad token into a claim.
522
+ return { ok: false, reason: decision.can ? `non-consent-grant-refused (${decision.reason})` : decision.reason };
523
+ }
524
+ const candidate = this.fl.buildAcquisition(view.lease, this.now(), this.nextNonce());
525
+ const res = this.d.store.casWrite(candidate);
526
+ if (res.ok) {
527
+ this.selfIssued = candidate;
528
+ await this.broadcast(candidate);
529
+ this.markRenewOk();
530
+ this.emitEpoch(candidate.epoch);
531
+ this.log(`acquired lease on hand-back consent at epoch ${candidate.epoch} (from ${token.holder})`);
532
+ return { ok: true, reason: 'handback-claimed' };
533
+ }
534
+ this.emitEpoch(res.observed.epoch);
535
+ this.log(`hand-back consent acquire lost CAS to epoch ${res.observed.epoch} — holder keeps holding`);
536
+ return { ok: false, reason: 'cas-lost' };
537
+ }
472
538
  /**
473
539
  * Renew the held lease: re-sign with a fresh expiry, broadcast over the
474
540
  * tunnel, and (coarsely, via the store on epoch change) keep git current.
@@ -1 +1 @@
1
- {"version":3,"file":"LeaseCoordinator.js","sourceRoot":"","sources":["../../src/core/LeaseCoordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LeaseCoordinator.js","sourceRoot":"","sources":["../../src/core/LeaseCoordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * LeaseHandbackReconciler — U4.4 (docs/specs/u4-4-lease-handback.md): the
3
+ * missing RECONCILER for F4's `preferredAwakeMachineId`. Today the preference
4
+ * only SUPPRESSES standby acquisition while the preferred holder is healthy;
5
+ * nothing hands the lease BACK after a failover — the mesh drifts onto the
6
+ * wrong long-term holder until a human runs the manual captain-flip playbook.
7
+ *
8
+ * Design (all R-markers binding):
9
+ * - Authority: F4's EXISTING per-machine config field, unchanged. NOT
10
+ * replicated, NOT in the lease record, NEVER writable by a peer. Unset =
11
+ * today's sticky behavior (strict no-op).
12
+ * - Observation rides the existing ~5s lease pull tick (no new dial loop);
13
+ * the HOLDER (only) evaluates.
14
+ * - Health source: the U4.3 rope-health snapshot seam (R-r2-7). An ABSENT
15
+ * snapshot reading for the preferred captain reads NOT-HEALTHY → defer —
16
+ * the reconciler fails toward HOLDING, never toward a transfer on missing
17
+ * data. (Pre-U4.3 there is no health source at all, so the reconciler
18
+ * never arms — safe.)
19
+ * - Hysteresis: hand-back arms only after `healthWindowMs` (default 10 min)
20
+ * of CONTINUOUS preferred-captain health; any unhealthy observation resets
21
+ * the window. In-memory; a holder restart resets it (declared: the safe
22
+ * direction — defers, never rushes).
23
+ * - Clean boundary, bounded deferral (P19): fires only at a quiet moment (no
24
+ * in-flight forwards, no queued inbound, no ingress ~90s). Past
25
+ * `deferralCeilingMs` (default 2h) of continuous deferral: ONE deduped
26
+ * notice + the boundary relaxes to "no in-flight forward" only — but the
27
+ * relaxed boundary must NOT strand queued inbound (R-r2-6): queued/held
28
+ * items are drained (via the existing durable inbound-queue semantics)
29
+ * BEFORE step-down, never abandoned.
30
+ * - Transfer ordering: claim-before-release via the holder-signed consent
31
+ * token (R-r2-1) carried on the `handback-offer` MeshCommand (R-r2-2). If
32
+ * the claim never lands, the holder KEEPS HOLDING — zero-holder states are
33
+ * impossible by construction.
34
+ * - Refused/failed offers never loop (R-r2-3): per-target offer backoff
35
+ * (widening), offers metered, and the episode cap counts OFFERS as well as
36
+ * completed hand-backs. A legacy peer (403/no-handler) stops re-offering
37
+ * for the episode.
38
+ * - The human always wins (R-r2-5): the operator latch is WRITTEN BY the
39
+ * explicit flip action itself (the PIN-gated flip route / playbook POST
40
+ * step) — NEVER inferred from a transfer's origin. While latched, the
41
+ * reconciler is fully inert and says so in its status.
42
+ * - Flap bounds: hand-backs COUNT as flips for the existing churn breaker,
43
+ * and a LATCHED breaker suppresses hand-back (breaker wins). Own episode
44
+ * cap: `maxPerWindow` (default 2) per rolling `windowMs` (6h) — at the cap
45
+ * the reconciler goes sticky + raises ONE deduped item.
46
+ * - Split-brain: suppressed while `splitBrainState` is active.
47
+ * - Post-hand-back verification: the NEW holder runs one delivery-canary
48
+ * round-trip; failure raises ONE loud escalation (never silent). That side
49
+ * lives in the offer HANDLER path (`decideOffer` + the claim runner).
50
+ *
51
+ * Observability (§4 — half-metered funnels forbidden): every transition emits
52
+ * a `lease-handback` feature-metric event (window-starts, window-resets,
53
+ * armed, deferrals, ceiling-relaxations, offers, claims, step-downs, failures,
54
+ * canary-verify, suppressed-by-latch, suppressed-by-churn, episode-cap trips,
55
+ * dry-run would-hand-back).
56
+ */
57
+ import type { HandbackConsentToken } from './FencedLease.js';
58
+ /** Config subtree: multiMachine.leaseSelfHeal.preferredCaptainHandback (§5). */
59
+ export interface LeaseHandbackConfig {
60
+ enabled: boolean;
61
+ dryRun: boolean;
62
+ healthWindowMs: number;
63
+ deferralCeilingMs: number;
64
+ operatorLatchMs: number;
65
+ maxPerWindow: number;
66
+ windowMs: number;
67
+ }
68
+ export declare const DEFAULT_LEASE_HANDBACK_CONFIG: LeaseHandbackConfig;
69
+ /** Consent-token TTL: short — one offer round-trip plus slack. */
70
+ export declare const HANDBACK_CONSENT_TTL_MS = 60000;
71
+ /** "No ingress in the last ~90s" clean-boundary bound (drift-promoter shape). */
72
+ export declare const HANDBACK_QUIET_INGRESS_MS = 90000;
73
+ /**
74
+ * §5 HARD graduation dependency, enforced at the enable chokepoint:
75
+ * `dryRun:false` with pollFollowsLease still dry-run is REFUSED loudly at boot
76
+ * — otherwise hand-back moves the lease while the old holder keeps polling
77
+ * Telegram (a lease/ingress split, the exact class this project eliminates).
78
+ * `hasPollerSplit` false (the install has no poller split) waives the check.
79
+ * Returns null when valid, else the rejection message.
80
+ */
81
+ export declare function validateHandbackEnableChokepoint(cfg: Pick<LeaseHandbackConfig, 'enabled' | 'dryRun'>, pollFollowsLeaseLive: boolean, hasPollerSplit: boolean): string | null;
82
+ export type HandbackOfferResponse = 'accept' | 'declined:churn-latched' | 'declined:quota' | 'declined:legacy-peer' | 'declined:other' | 'timeout';
83
+ export interface PreferredHealthView {
84
+ /** Heartbeat-fresh in the pool registry (observer-stamped). */
85
+ heartbeatFresh: boolean;
86
+ /** Reachable on ≥1 rope per the U4.3 rope-health snapshot. `undefined` =
87
+ * absent snapshot record (never dialed / evicted / pre-U4.3) ⇒ NOT healthy. */
88
+ ropeReachable: boolean | undefined;
89
+ /** Registered + eligible to hold the lease. */
90
+ leaseEligible: boolean;
91
+ /** Not quota-blocked. */
92
+ quotaOk: boolean;
93
+ }
94
+ export interface CleanBoundaryView {
95
+ inFlightForwards: boolean;
96
+ queuedInbound: number;
97
+ /** ms since the last inbound ingress (null = none observed / no signal). */
98
+ msSinceLastIngress: number | null;
99
+ }
100
+ export interface HandbackMetricSink {
101
+ (event: 'window-start' | 'window-reset' | 'armed' | 'deferral' | 'ceiling-relaxation' | 'offer' | 'claim' | 'step-down' | 'failure' | 'canary-verify-ok' | 'canary-verify-fail' | 'suppressed-by-latch' | 'suppressed-by-churn' | 'suppressed-by-split-brain' | 'episode-cap-trip' | 'would-hand-back'): void;
102
+ }
103
+ export interface LeaseHandbackDeps {
104
+ config: () => LeaseHandbackConfig;
105
+ selfMachineId: () => string | null;
106
+ /** F4's `multiMachine.leaseSelfHeal.preferredAwakeMachineId` — the ONE
107
+ * authority; the wiring MUST read the same config field
108
+ * `shouldDeferToPreferred` reads (asserted by the wiring test). */
109
+ preferredAwakeMachineId: () => string | null;
110
+ holdsLease: () => boolean;
111
+ currentEpoch: () => number;
112
+ /** Health of the preferred captain (heartbeat + U4.3 rope snapshot + quota). */
113
+ preferredHealth: (machineId: string) => PreferredHealthView;
114
+ cleanBoundary: () => CleanBoundaryView;
115
+ /** Kick one drain pass of the durable inbound queue (R-r2-6). */
116
+ kickInboundDrain: () => void;
117
+ splitBrainActive: () => boolean;
118
+ churnLatched: () => boolean;
119
+ /** Hand-back transfers COUNT as flips for the existing churn breaker. */
120
+ recordChurnFlip: () => void;
121
+ /** The machine-local operator latch marker (written BY the flip action —
122
+ * R-r2-5; never inferred). Returns the suppressed-until epoch-ms, or null. */
123
+ operatorLatchUntilMs: () => number | null;
124
+ /** HOLDER-side mint (LeaseCoordinator.mintHandbackConsent). Null = refused. */
125
+ mintConsentToken: (target: string, ttlMs: number) => HandbackConsentToken | null;
126
+ /** Send the handback-offer to the preferred captain (MeshRpcClient). The
127
+ * wiring maps 403/`no-handler` to 'declined:legacy-peer' and transport
128
+ * timeout/silence to 'timeout'. */
129
+ sendOffer: (target: string, offer: {
130
+ proposedEpoch: number;
131
+ consentToken: HandbackConsentToken;
132
+ expiresAt: string;
133
+ }) => Promise<HandbackOfferResponse>;
134
+ metric: HandbackMetricSink;
135
+ /** ONE deduped operator notice (deferral ceiling / episode cap). */
136
+ notify: (key: string, title: string, body: string) => void;
137
+ now?: () => number;
138
+ monotonicNow?: () => number;
139
+ logger?: (msg: string) => void;
140
+ }
141
+ export interface LeaseHandbackStatus {
142
+ enabled: boolean;
143
+ dryRun: boolean;
144
+ preferred: string | null;
145
+ state: 'inactive' | 'not-holder' | 'self-is-preferred' | 'latched' | 'suppressed-churn' | 'suppressed-split-brain' | 'observing' | 'window-open' | 'armed' | 'deferring' | 'offer-in-flight' | 'episode-cap-sticky' | 'handed-back';
146
+ windowOpenedAt: string | null;
147
+ armedAt: string | null;
148
+ deferralSinceMs: number | null;
149
+ latchSuppressedUntil: string | null;
150
+ lastEpisode: {
151
+ at: string;
152
+ outcome: string;
153
+ target: string;
154
+ } | null;
155
+ episodeEventsInWindow: number;
156
+ counters: Record<string, number>;
157
+ }
158
+ export declare class LeaseHandbackReconciler {
159
+ private readonly d;
160
+ private windowOpenMono;
161
+ private windowOpenWall;
162
+ private armedAtMono;
163
+ private armedAtWall;
164
+ private ceilingRelaxed;
165
+ private ceilingNoticeSent;
166
+ private offerInFlight;
167
+ private nextOfferAtMono;
168
+ private offerFailures;
169
+ private stopOfferingThisEpisode;
170
+ /** Rolling episode events (offers + completed hand-backs — R-r2-3). */
171
+ private episodeEvents;
172
+ private episodeCapNoticeSent;
173
+ private lastOfferAccepted;
174
+ private lastEpisode;
175
+ private state;
176
+ private wouldHandbackLogged;
177
+ private readonly counters;
178
+ constructor(deps: LeaseHandbackDeps);
179
+ private now;
180
+ private mono;
181
+ private log;
182
+ private metric;
183
+ private resetWindow;
184
+ private pruneEpisodeEvents;
185
+ /**
186
+ * One holder-side observation (rides the ~5s lease pull tick). Synchronous
187
+ * decision; the offer send is fired asynchronously with a single-flight
188
+ * latch. Every gate fails toward HOLDING.
189
+ */
190
+ observe(): void;
191
+ private resetWindowIfOpen;
192
+ status(): LeaseHandbackStatus;
193
+ }
194
+ /**
195
+ * PREFERRED-CAPTAIN side — decide an inbound `handback-offer` (typed declines,
196
+ * R-r2-2). The RBAC gate already proved the SENDER is the current lease
197
+ * holder; the load-bearing authority is the consent token presented at
198
+ * acquire time. Pure decision: the caller (server handler) runs the async
199
+ * claim + delivery canary on 'accept'.
200
+ */
201
+ export interface HandbackOfferDecisionDeps {
202
+ enabled: boolean;
203
+ selfMachineId: string | null;
204
+ /** The SAME F4 field — does this machine agree it is the preferred captain? */
205
+ preferredAwakeMachineId: string | null;
206
+ churnLatched: boolean;
207
+ quotaBlocked: boolean;
208
+ /** Single-use: has this (holder, nonce) consent token been seen before? */
209
+ tokenAlreadyUsed: boolean;
210
+ }
211
+ export declare function decideHandbackOffer(deps: HandbackOfferDecisionDeps): Exclude<HandbackOfferResponse, 'timeout'>;
212
+ //# sourceMappingURL=LeaseHandbackReconciler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeaseHandbackReconciler.d.ts","sourceRoot":"","sources":["../../src/core/LeaseHandbackReconciler.ts"],"names":[],"mappings":"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"}