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
@@ -0,0 +1,416 @@
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
+ export const DEFAULT_LEASE_HANDBACK_CONFIG = {
58
+ enabled: false,
59
+ dryRun: true,
60
+ healthWindowMs: 600_000,
61
+ deferralCeilingMs: 7_200_000,
62
+ operatorLatchMs: 86_400_000,
63
+ maxPerWindow: 2,
64
+ windowMs: 21_600_000,
65
+ };
66
+ /** Consent-token TTL: short — one offer round-trip plus slack. */
67
+ export const HANDBACK_CONSENT_TTL_MS = 60_000;
68
+ /** "No ingress in the last ~90s" clean-boundary bound (drift-promoter shape). */
69
+ export const HANDBACK_QUIET_INGRESS_MS = 90_000;
70
+ /**
71
+ * §5 HARD graduation dependency, enforced at the enable chokepoint:
72
+ * `dryRun:false` with pollFollowsLease still dry-run is REFUSED loudly at boot
73
+ * — otherwise hand-back moves the lease while the old holder keeps polling
74
+ * Telegram (a lease/ingress split, the exact class this project eliminates).
75
+ * `hasPollerSplit` false (the install has no poller split) waives the check.
76
+ * Returns null when valid, else the rejection message.
77
+ */
78
+ export function validateHandbackEnableChokepoint(cfg, pollFollowsLeaseLive, hasPollerSplit) {
79
+ if (!cfg.enabled || cfg.dryRun)
80
+ return null;
81
+ if (!hasPollerSplit)
82
+ return null;
83
+ if (pollFollowsLeaseLive)
84
+ return null;
85
+ return ('multiMachine.leaseSelfHeal.preferredCaptainHandback: dryRun:false requires pollFollowsLease to be LIVE ' +
86
+ '(multiMachine.pollFollowsLease enabled AND dryRun:false) — otherwise a hand-back moves the serving lease ' +
87
+ 'while Telegram polling stays on the old holder (a lease/ingress split). Refusing to start (u4-4 spec §5).');
88
+ }
89
+ export class LeaseHandbackReconciler {
90
+ d;
91
+ // Hysteresis window (in-memory on the holder; restart resets — safe).
92
+ windowOpenMono = null;
93
+ windowOpenWall = null;
94
+ armedAtMono = null;
95
+ armedAtWall = null;
96
+ ceilingRelaxed = false;
97
+ ceilingNoticeSent = false;
98
+ offerInFlight = false;
99
+ nextOfferAtMono = 0;
100
+ offerFailures = 0;
101
+ stopOfferingThisEpisode = false;
102
+ /** Rolling episode events (offers + completed hand-backs — R-r2-3). */
103
+ episodeEvents = [];
104
+ episodeCapNoticeSent = false;
105
+ lastOfferAccepted = false;
106
+ lastEpisode = null;
107
+ state = 'inactive';
108
+ wouldHandbackLogged = false;
109
+ counters = {};
110
+ constructor(deps) {
111
+ this.d = deps;
112
+ }
113
+ now() {
114
+ return (this.d.now ?? Date.now)();
115
+ }
116
+ mono() {
117
+ if (this.d.monotonicNow)
118
+ return this.d.monotonicNow();
119
+ return Number(process.hrtime.bigint() / 1000000n);
120
+ }
121
+ log(m) {
122
+ try {
123
+ this.d.logger?.(`[LeaseHandback] ${m}`);
124
+ }
125
+ catch { /* @silent-fallback-ok — a logger fault must never gate the lease decision (observability only) */ }
126
+ }
127
+ metric(event) {
128
+ this.counters[event] = (this.counters[event] ?? 0) + 1;
129
+ try {
130
+ this.d.metric(event);
131
+ }
132
+ catch { /* @silent-fallback-ok — a metrics-sink fault must never gate the lease decision (the in-memory counter above already recorded it) */ }
133
+ }
134
+ resetWindow(reason) {
135
+ if (this.windowOpenMono !== null) {
136
+ this.metric('window-reset');
137
+ this.log(`hysteresis window reset (${reason})`);
138
+ }
139
+ this.windowOpenMono = null;
140
+ this.windowOpenWall = null;
141
+ this.armedAtMono = null;
142
+ this.armedAtWall = null;
143
+ this.ceilingRelaxed = false;
144
+ this.ceilingNoticeSent = false;
145
+ this.wouldHandbackLogged = false;
146
+ }
147
+ pruneEpisodeEvents(nowMono, windowMs) {
148
+ const floor = nowMono - windowMs;
149
+ this.episodeEvents = this.episodeEvents.filter((e) => e.atMono > floor);
150
+ }
151
+ /**
152
+ * One holder-side observation (rides the ~5s lease pull tick). Synchronous
153
+ * decision; the offer send is fired asynchronously with a single-flight
154
+ * latch. Every gate fails toward HOLDING.
155
+ */
156
+ observe() {
157
+ const cfg = this.d.config();
158
+ if (!cfg.enabled) {
159
+ this.state = 'inactive';
160
+ return;
161
+ }
162
+ const self = this.d.selfMachineId();
163
+ const preferred = this.d.preferredAwakeMachineId();
164
+ if (!self || !preferred) {
165
+ // Unset preference = today's sticky behavior (strict no-op).
166
+ this.state = 'inactive';
167
+ return;
168
+ }
169
+ if (self === preferred) {
170
+ // We ARE the preferred captain — nothing to hand back FROM us.
171
+ this.state = 'self-is-preferred';
172
+ this.resetWindowIfOpen();
173
+ return;
174
+ }
175
+ if (!this.d.holdsLease()) {
176
+ // Post-hand-back: if our last offer was accepted and we no longer hold,
177
+ // the step-down landed — count the flip + close the episode.
178
+ if (this.lastOfferAccepted) {
179
+ this.lastOfferAccepted = false;
180
+ this.metric('step-down');
181
+ try {
182
+ this.d.recordChurnFlip();
183
+ }
184
+ catch { /* breaker feed is best-effort */ }
185
+ this.lastEpisode = { at: new Date(this.now()).toISOString(), outcome: 'handed-back', target: preferred };
186
+ this.episodeEvents.push({ atMono: this.mono(), kind: 'handback' });
187
+ this.state = 'handed-back';
188
+ this.log(`hand-back to ${preferred} completed (higher epoch observed — stepped down)`);
189
+ }
190
+ else {
191
+ this.state = 'not-holder';
192
+ }
193
+ this.resetWindowIfOpen();
194
+ return;
195
+ }
196
+ const nowMono = this.mono();
197
+ const nowWall = this.now();
198
+ // The human always wins (R-r2-5): the latch fully inerts the reconciler.
199
+ const latchUntil = this.d.operatorLatchUntilMs();
200
+ if (latchUntil !== null && nowWall < latchUntil) {
201
+ if (this.state !== 'latched')
202
+ this.metric('suppressed-by-latch');
203
+ this.state = 'latched';
204
+ this.resetWindowIfOpen();
205
+ return;
206
+ }
207
+ // A LATCHED churn breaker suppresses hand-back (the two compose: breaker wins).
208
+ if (this.d.churnLatched()) {
209
+ if (this.state !== 'suppressed-churn')
210
+ this.metric('suppressed-by-churn');
211
+ this.state = 'suppressed-churn';
212
+ this.resetWindowIfOpen();
213
+ return;
214
+ }
215
+ // Split-brain: reconciliation waits for a settled mesh.
216
+ if (this.d.splitBrainActive()) {
217
+ if (this.state !== 'suppressed-split-brain')
218
+ this.metric('suppressed-by-split-brain');
219
+ this.state = 'suppressed-split-brain';
220
+ this.resetWindowIfOpen();
221
+ return;
222
+ }
223
+ // Preferred-captain health (R-r2-7: absent rope snapshot ⇒ NOT healthy).
224
+ const h = this.d.preferredHealth(preferred);
225
+ const healthy = h.heartbeatFresh && h.ropeReachable === true && h.leaseEligible && h.quotaOk;
226
+ if (!healthy) {
227
+ this.state = 'observing';
228
+ this.resetWindowIfOpen();
229
+ return;
230
+ }
231
+ // Hysteresis: continuous health for healthWindowMs arms the hand-back.
232
+ if (this.windowOpenMono === null) {
233
+ this.windowOpenMono = nowMono;
234
+ this.windowOpenWall = nowWall;
235
+ this.metric('window-start');
236
+ this.state = 'window-open';
237
+ return;
238
+ }
239
+ if (nowMono - this.windowOpenMono < cfg.healthWindowMs) {
240
+ this.state = 'window-open';
241
+ return;
242
+ }
243
+ if (this.armedAtMono === null) {
244
+ this.armedAtMono = nowMono;
245
+ this.armedAtWall = nowWall;
246
+ this.metric('armed');
247
+ this.log(`hand-back to ${preferred} ARMED (healthy ${Math.round(cfg.healthWindowMs / 60000)}m)`);
248
+ }
249
+ this.state = 'armed';
250
+ // Episode cap (R-r2-3: offers count too) → sticky + ONE deduped item.
251
+ this.pruneEpisodeEvents(nowMono, cfg.windowMs);
252
+ if (this.episodeEvents.length >= cfg.maxPerWindow) {
253
+ this.state = 'episode-cap-sticky';
254
+ if (!this.episodeCapNoticeSent) {
255
+ this.episodeCapNoticeSent = true;
256
+ this.metric('episode-cap-trip');
257
+ try {
258
+ this.d.notify('lease-handback-episode-cap', 'Lease hand-back went sticky (ping-pong bound)', `Hand-back to ${preferred} hit the episode cap (${cfg.maxPerWindow} offers/hand-backs per ${Math.round(cfg.windowMs / 3_600_000)}h). ` +
259
+ 'The lease stays where it is until the window rolls or you flip manually — this bounds a slow oscillation the churn window cannot see.');
260
+ }
261
+ catch { /* notice is best-effort */ }
262
+ }
263
+ return;
264
+ }
265
+ this.episodeCapNoticeSent = false;
266
+ if (this.stopOfferingThisEpisode)
267
+ return; // legacy peer — sticky this episode
268
+ if (this.offerInFlight) {
269
+ this.state = 'offer-in-flight';
270
+ return;
271
+ }
272
+ if (nowMono < this.nextOfferAtMono)
273
+ return; // offer backoff (R-r2-3)
274
+ // Clean boundary, bounded deferral (P19 + R-r2-6).
275
+ const b = this.d.cleanBoundary();
276
+ const quietIngress = b.msSinceLastIngress === null || b.msSinceLastIngress >= HANDBACK_QUIET_INGRESS_MS;
277
+ const cleanOk = !b.inFlightForwards && b.queuedInbound === 0 && quietIngress;
278
+ if (!cleanOk) {
279
+ this.metric('deferral');
280
+ this.state = 'deferring';
281
+ const deferredMs = nowMono - (this.armedAtMono ?? nowMono);
282
+ if (deferredMs >= cfg.deferralCeilingMs) {
283
+ if (!this.ceilingNoticeSent) {
284
+ this.ceilingNoticeSent = true;
285
+ this.ceilingRelaxed = true;
286
+ this.metric('ceiling-relaxation');
287
+ try {
288
+ this.d.notify('lease-handback-deferral-ceiling', `Hand-back to ${preferred} has been waiting for a quiet moment`, `The armed hand-back has deferred for ${Math.round(deferredMs / 3_600_000 * 10) / 10}h waiting for a clean boundary. ` +
289
+ 'Relaxing the boundary to "no in-flight forward" — queued messages are drained across first, never abandoned.');
290
+ }
291
+ catch { /* notice is best-effort */ }
292
+ }
293
+ }
294
+ if (!this.ceilingRelaxed)
295
+ return;
296
+ // Relaxed boundary (R-r2-6): queued/held inbound is DRAINED before
297
+ // step-down — never abandoned on the old holder.
298
+ if (b.queuedInbound > 0) {
299
+ try {
300
+ this.d.kickInboundDrain();
301
+ }
302
+ catch { /* drain kick is best-effort; retried next tick */ }
303
+ return;
304
+ }
305
+ if (b.inFlightForwards)
306
+ return;
307
+ // fall through: relaxed boundary satisfied (no in-flight forward, queue empty)
308
+ }
309
+ // Fire (or dry-run).
310
+ if (cfg.dryRun) {
311
+ if (!this.wouldHandbackLogged) {
312
+ this.wouldHandbackLogged = true;
313
+ this.metric('would-hand-back');
314
+ this.log(`DRY-RUN would hand back the lease to ${preferred} at a clean boundary`);
315
+ this.lastEpisode = { at: new Date(nowWall).toISOString(), outcome: 'would-hand-back (dry-run)', target: preferred };
316
+ }
317
+ return;
318
+ }
319
+ const token = this.d.mintConsentToken(preferred, HANDBACK_CONSENT_TTL_MS);
320
+ if (!token)
321
+ return; // not actually holding / mint refused — hold
322
+ this.offerInFlight = true;
323
+ this.episodeEvents.push({ atMono: nowMono, kind: 'offer' });
324
+ this.metric('offer');
325
+ this.lastEpisode = { at: new Date(nowWall).toISOString(), outcome: 'offer-sent', target: preferred };
326
+ void this.d
327
+ .sendOffer(preferred, { proposedEpoch: this.d.currentEpoch() + 1, consentToken: token, expiresAt: token.expiresAt })
328
+ .then((resp) => {
329
+ this.offerInFlight = false;
330
+ const monoNow = this.mono();
331
+ if (resp === 'accept') {
332
+ this.lastOfferAccepted = true;
333
+ this.metric('claim');
334
+ this.lastEpisode = { at: new Date(this.now()).toISOString(), outcome: 'offer-accepted (claim pending)', target: preferred };
335
+ this.log(`hand-back offer accepted by ${preferred} — awaiting its fenced claim (holder keeps holding until the higher epoch lands)`);
336
+ // The step-down is observed on a later tick via holdsLease() —
337
+ // claim-before-release; a silent claim leaves us holding.
338
+ this.nextOfferAtMono = monoNow + HANDBACK_CONSENT_TTL_MS * 2;
339
+ return;
340
+ }
341
+ this.metric('failure');
342
+ this.offerFailures++;
343
+ // Widening backoff on decline/timeout (R-r2-3).
344
+ this.nextOfferAtMono = monoNow + Math.min(6, this.offerFailures) * 5 * 60_000;
345
+ this.lastEpisode = { at: new Date(this.now()).toISOString(), outcome: resp, target: preferred };
346
+ if (resp === 'declined:legacy-peer') {
347
+ // Version skew: peer-cannot-hand-back — STOP re-offering for the
348
+ // episode (degrade to today's sticky behavior).
349
+ this.stopOfferingThisEpisode = true;
350
+ this.log(`peer ${preferred} cannot hand-back (legacy/refused) — sticky for this episode`);
351
+ }
352
+ else {
353
+ this.log(`hand-back offer to ${preferred} ${resp} — holder keeps holding, backoff widened`);
354
+ }
355
+ })
356
+ .catch(() => {
357
+ // @silent-fallback-ok — a rejected offer send reads as failure: the holder
358
+ // KEEPS HOLDING (claim-before-release, the safe direction), metered + backed off.
359
+ this.offerInFlight = false;
360
+ this.offerFailures++;
361
+ this.metric('failure');
362
+ this.nextOfferAtMono = this.mono() + Math.min(6, this.offerFailures) * 5 * 60_000;
363
+ });
364
+ }
365
+ resetWindowIfOpen() {
366
+ if (this.windowOpenMono !== null)
367
+ this.resetWindow('role-change');
368
+ this.stopOfferingThisEpisode = false;
369
+ this.offerFailures = 0;
370
+ }
371
+ status() {
372
+ const cfg = this.d.config();
373
+ const latchUntil = (() => { try {
374
+ return this.d.operatorLatchUntilMs();
375
+ }
376
+ catch {
377
+ return null; /* @silent-fallback-ok — status read only; observe() reads the latch itself */
378
+ } })();
379
+ return {
380
+ enabled: cfg.enabled,
381
+ dryRun: cfg.dryRun,
382
+ preferred: (() => { try {
383
+ return this.d.preferredAwakeMachineId();
384
+ }
385
+ catch {
386
+ return null; /* @silent-fallback-ok — status read only; observe() fails toward inactive on the same fault */
387
+ } })(),
388
+ state: this.state,
389
+ windowOpenedAt: this.windowOpenWall !== null ? new Date(this.windowOpenWall).toISOString() : null,
390
+ armedAt: this.armedAtWall !== null ? new Date(this.armedAtWall).toISOString() : null,
391
+ deferralSinceMs: this.armedAtMono !== null && this.state === 'deferring' ? this.mono() - this.armedAtMono : null,
392
+ latchSuppressedUntil: latchUntil !== null ? new Date(latchUntil).toISOString() : null,
393
+ lastEpisode: this.lastEpisode,
394
+ episodeEventsInWindow: this.episodeEvents.length,
395
+ counters: { ...this.counters },
396
+ };
397
+ }
398
+ }
399
+ export function decideHandbackOffer(deps) {
400
+ if (!deps.enabled)
401
+ return 'declined:legacy-peer'; // feature dark here = cannot hand-back
402
+ if (!deps.selfMachineId || deps.preferredAwakeMachineId !== deps.selfMachineId) {
403
+ // Config disagreement — this machine does not consider itself the
404
+ // preferred captain, so it cannot accept the role (the sender stops
405
+ // re-offering for the episode; disagreement is visible on GET /pool).
406
+ return 'declined:legacy-peer';
407
+ }
408
+ if (deps.tokenAlreadyUsed)
409
+ return 'declined:other'; // replayed offer never re-authorizes
410
+ if (deps.churnLatched)
411
+ return 'declined:churn-latched';
412
+ if (deps.quotaBlocked)
413
+ return 'declined:quota';
414
+ return 'accept';
415
+ }
416
+ //# sourceMappingURL=LeaseHandbackReconciler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeaseHandbackReconciler.js","sourceRoot":"","sources":["../../src/core/LeaseHandbackReconciler.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,11 @@ export type MeshCommand = {
52
52
  session: string;
53
53
  target: MachineId;
54
54
  ownershipEpoch: number;
55
+ } | {
56
+ type: 'handback-offer';
57
+ proposedEpoch: number;
58
+ consentToken: import('./FencedLease.js').HandbackConsentToken;
59
+ expiresAt: string;
55
60
  } | {
56
61
  type: 'capacity-report';
57
62
  } | {
@@ -182,7 +187,7 @@ export declare function verifyEnvelope(env: MeshEnvelope, deps: VerifyEnvelopeDe
182
187
  ok: boolean;
183
188
  reason: VerifyReason;
184
189
  };
185
- export type RbacReason = 'ok' | 'not-router' | 'claim-unauthorized' | 'release-unauthorized' | 'drain-unauthorized' | 'slice-renew-unauthorized' | 'mandate-deliver-unauthorized';
190
+ export type RbacReason = 'ok' | 'not-router' | 'claim-unauthorized' | 'release-unauthorized' | 'drain-unauthorized' | 'slice-renew-unauthorized' | 'mandate-deliver-unauthorized' | 'handback-offer-unauthorized';
186
191
  export interface RbacDeps {
187
192
  /** The machine currently holding the router lease (verify-on-read, §L1), or null. */
188
193
  routerHolder: () => MachineId | null;
@@ -1 +1 @@
1
- {"version":3,"file":"MeshRpc.d.ts","sourceRoot":"","sources":["../../src/core/MeshRpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MeshRpc.d.ts","sourceRoot":"","sources":["../../src/core/MeshRpc.ts"],"names":[],"mappings":"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"}
@@ -73,6 +73,14 @@ export function checkCommandRBAC(command, sender, deps) {
73
73
  // lease-holder — may order an owner to drain; a peer (even the transfer
74
74
  // TARGET) may not.
75
75
  return isRouter ? { ok: true, reason: 'ok' } : { ok: false, reason: 'drain-unauthorized' };
76
+ case 'handback-offer':
77
+ // U4.4 (R-r2-2): only the CURRENT lease holder may offer the lease back —
78
+ // verified against the live lease view, default-deny, its OWN refusal
79
+ // reason (mirrors the drain verb's posture). A non-holder — including the
80
+ // preferred captain itself — can never manufacture a hand-back offer;
81
+ // the LOAD-BEARING authority remains the holder-signed consent token the
82
+ // handler verifies at acquire time (this gate is the coarse pre-filter).
83
+ return isRouter ? { ok: true, reason: 'ok' } : { ok: false, reason: 'handback-offer-unauthorized' };
76
84
  case 'claim': {
77
85
  // The router's assigned target for this session, OR the router on a failover re-place.
78
86
  if (deps.placementTargetOf(command.session) === sender)
@@ -193,6 +201,7 @@ function statusForReason(reason) {
193
201
  case 'drain-unauthorized':
194
202
  case 'slice-renew-unauthorized':
195
203
  case 'mandate-deliver-unauthorized':
204
+ case 'handback-offer-unauthorized':
196
205
  return 403;
197
206
  case 'replayed-nonce':
198
207
  case 'stale-timestamp':
@@ -1 +1 @@
1
- {"version":3,"file":"MeshRpc.js","sourceRoot":"","sources":["../../src/core/MeshRpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MeshRpc.js","sourceRoot":"","sources":["../../src/core/MeshRpc.ts"],"names":[],"mappings":"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"}
@@ -83,6 +83,13 @@ export interface CoordinatorConfig {
83
83
  * fleet). Threaded from the server's top-level `config.developmentAgent`.
84
84
  */
85
85
  developmentAgent?: boolean;
86
+ /**
87
+ * U4.4 (lease hand-back) — invoked once per lease PULL tick (~5s), AFTER the
88
+ * pull folded peer state in. The hand-back reconciler's observation rides
89
+ * this existing tick (spec: "no new dial loop"); the callback is throw-
90
+ * guarded so an observer fault can never wedge the pull loop.
91
+ */
92
+ onLeasePullTick?: () => void;
86
93
  }
87
94
  export interface CoordinatorEvents {
88
95
  /** Emitted when this machine should promote to awake */
@@ -469,6 +476,19 @@ export declare class MultiMachineCoordinator extends EventEmitter {
469
476
  * Returns true if this machine now holds the lease.
470
477
  */
471
478
  acquireLeaseOnConsent(yieldFromMachineId: string): Promise<boolean>;
479
+ /**
480
+ * U4.4 — acquire the lease by presenting the holder's signed hand-back
481
+ * consent token (the `handbackOpts` branch of canAcquire; claim-before-
482
+ * release). Called by the handback-offer handler on the PREFERRED CAPTAIN.
483
+ * On success reconciles role → awake; on ANY failure nothing changes (the
484
+ * holder keeps holding — zero-holder states impossible by construction).
485
+ */
486
+ acquireLeaseOnHandbackConsent(token: import('./FencedLease.js').HandbackConsentToken): Promise<{
487
+ ok: boolean;
488
+ reason: string;
489
+ }>;
490
+ /** U4.4 — is the churn breaker currently latched (breaker wins over hand-back)? */
491
+ churnBreakerLatched(): boolean;
472
492
  /**
473
493
  * Drive the lease on each monitor tick: renew if we hold it, else attempt
474
494
  * failover acquisition. Reconciles role afterward. Fire-and-forget safe.
@@ -1 +1 @@
1
- {"version":3,"file":"MultiMachineCoordinator.d.ts","sourceRoot":"","sources":["../../src/core/MultiMachineCoordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAa9D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAErG,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,8FAA8F;IAC9F,eAAe,EAAE,OAAO,GAAG,WAAW,GAAG,gBAAgB,CAAC;IAC1D,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACrF,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;QACxC,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC,CAAC;CACJ;AAsBD,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,yDAAyD;IACzD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,6BAA6B;IAC7B,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;CAC1D;AAID,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,mBAAmB,CAA+C;IAC1E;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0D;IACzF,OAAO,CAAC,mBAAmB,CAA+C;IAC1E;;;;;OAKG;IACH,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,qBAAqB,CAAkB;IAC/C;;;OAGG;IACH,OAAO,CAAC,YAAY,CAA6B;IACjD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4D;IACnF;qEACiE;IACjE,OAAO,CAAC,6BAA6B,CAAkB;IACvD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,YAAY,CAAkB;IACtC;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C;;;;;;;;;;OAUG;IACH,OAAO,CAAC,gBAAgB,CAAuF;IAE/G;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,gBAAgB,CAAkB;IAI1C,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,uFAAuF;IACvF,OAAO,CAAC,yBAAyB,CAAkB;IACnD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAA0E;IACpG;;;;OAIG;IACH,OAAO,CAAC,sBAAsB,CAAyB;gBAE3C,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB;IAc1D,uDAAuD;IACvD,IAAI,OAAO,IAAI,OAAO,CAA0B;IAEhD,mCAAmC;IACnC,IAAI,IAAI,IAAI,WAAW,CAAuB;IAE9C,yDAAyD;IACzD,IAAI,QAAQ,IAAI,eAAe,GAAG,IAAI,CAA2B;IAEjE,2DAA2D;IAC3D,IAAI,OAAO,IAAI,OAAO,CAAmC;IAEzD;;;;;;;;;;;;OAYG;IACH,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;IAO9B,uFAAuF;IACvF,OAAO,CAAC,kBAAkB;IAI1B,0DAA0D;IAC1D,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IAED,kDAAkD;IAClD,IAAI,QAAQ;;;;;MAOX;IAID;;;OAGG;IACH,KAAK,IAAI,WAAW;IAuGpB;;OAEG;IACH;;;;OAIG;IACH,OAAO,CAAC,sCAAsC;IAiB9C,IAAI,IAAI,IAAI;IA2BZ;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA0CpC;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAgCrC;;;OAGG;IACH,oBAAoB,IAAI,OAAO;IAoB/B;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI;IAIlD;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAavB;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAM/B,mFAAmF;IACnF,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAK;IACpD;;0CAEsC;IACtC,OAAO,CAAC,aAAa,CAAS;IAE9B;;;kFAG8E;IAC9E,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAK;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAEvD;kFAC8E;IAC9E,OAAO,CAAC,mBAAmB;IAQ3B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAyD3E;;;;;;;;;;;;;;;;OAgBG;IACG,qBAAqB,CACzB,UAAU,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,EACnF,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAmDrH;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAK7B,iFAAiF;IACjF,OAAO,CAAC,eAAe;IAKvB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;;;;OAKG;YACW,cAAc;IAoB5B,kFAAkF;IAClF,UAAU,IAAI,OAAO;IAIrB;;;;;;;;;OASG;IACH,QAAQ,IAAI,OAAO;IAInB;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;;OAKG;IACH,aAAa,IAAI,sBAAsB;IAuCvC;;;;OAIG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,WAAW,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI;IAIjG,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,2BAA2B,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BtC;;;;;;OAMG;IACG,qBAAqB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOzE;;;OAGG;YACW,SAAS;IAyDvB,wEAAwE;IACxE,OAAO,CAAC,oBAAoB;IAoD5B;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;;;;;OAMG;YACW,aAAa;IAwD3B;;;;;;;;OAQG;IACH,OAAO,CAAC,+BAA+B;IAoBvC;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,0BAA0B;IAgExC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,qBAAqB;IA4B7B,2FAA2F;IAC3F,OAAO,CAAC,SAAS;IAIjB,8FAA8F;IAC9F,OAAO,KAAK,eAAe,GAS1B;IAED;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;IAkEvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAkC7B"}
1
+ {"version":3,"file":"MultiMachineCoordinator.d.ts","sourceRoot":"","sources":["../../src/core/MultiMachineCoordinator.ts"],"names":[],"mappings":"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"}