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.
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +599 -4
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +35 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/CoherenceJournal.d.ts +1 -1
- package/dist/core/CoherenceJournal.d.ts.map +1 -1
- package/dist/core/CoherenceJournal.js +9 -2
- package/dist/core/CoherenceJournal.js.map +1 -1
- package/dist/core/FencedLease.d.ts +47 -1
- package/dist/core/FencedLease.d.ts.map +1 -1
- package/dist/core/FencedLease.js +58 -1
- package/dist/core/FencedLease.js.map +1 -1
- package/dist/core/LeaseCoordinator.d.ts +25 -1
- package/dist/core/LeaseCoordinator.d.ts.map +1 -1
- package/dist/core/LeaseCoordinator.js +66 -0
- package/dist/core/LeaseCoordinator.js.map +1 -1
- package/dist/core/LeaseHandbackReconciler.d.ts +212 -0
- package/dist/core/LeaseHandbackReconciler.d.ts.map +1 -0
- package/dist/core/LeaseHandbackReconciler.js +416 -0
- package/dist/core/LeaseHandbackReconciler.js.map +1 -0
- package/dist/core/MeshRpc.d.ts +6 -1
- package/dist/core/MeshRpc.d.ts.map +1 -1
- package/dist/core/MeshRpc.js +9 -0
- package/dist/core/MeshRpc.js.map +1 -1
- package/dist/core/MultiMachineCoordinator.d.ts +20 -0
- package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
- package/dist/core/MultiMachineCoordinator.js +30 -0
- package/dist/core/MultiMachineCoordinator.js.map +1 -1
- package/dist/core/OwnershipReconciler.d.ts +42 -2
- package/dist/core/OwnershipReconciler.d.ts.map +1 -1
- package/dist/core/OwnershipReconciler.js +100 -2
- package/dist/core/OwnershipReconciler.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +31 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/StaleOwnerReleaseEngine.d.ts +290 -0
- package/dist/core/StaleOwnerReleaseEngine.d.ts.map +1 -0
- package/dist/core/StaleOwnerReleaseEngine.js +645 -0
- package/dist/core/StaleOwnerReleaseEngine.js.map +1 -0
- package/dist/core/TopicClaimAnnotationStore.d.ts +121 -0
- package/dist/core/TopicClaimAnnotationStore.d.ts.map +1 -0
- package/dist/core/TopicClaimAnnotationStore.js +234 -0
- package/dist/core/TopicClaimAnnotationStore.js.map +1 -0
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +11 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/handbackLatch.d.ts +28 -0
- package/dist/core/handbackLatch.d.ts.map +1 -0
- package/dist/core/handbackLatch.js +73 -0
- package/dist/core/handbackLatch.js.map +1 -0
- package/dist/core/ropeHealth.d.ts +26 -0
- package/dist/core/ropeHealth.d.ts.map +1 -0
- package/dist/core/ropeHealth.js +32 -0
- package/dist/core/ropeHealth.js.map +1 -0
- package/dist/core/types.d.ts +51 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/StrandedTopicSentinel.d.ts +5 -0
- package/dist/monitoring/StrandedTopicSentinel.d.ts.map +1 -1
- package/dist/monitoring/StrandedTopicSentinel.js +8 -0
- package/dist/monitoring/StrandedTopicSentinel.js.map +1 -1
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +45 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/monitoring/strandedTopicDecision.d.ts +11 -0
- package/dist/monitoring/strandedTopicDecision.d.ts.map +1 -1
- package/dist/monitoring/strandedTopicDecision.js +12 -1
- package/dist/monitoring/strandedTopicDecision.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +2 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +9 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +2 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts +9 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +76 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +65 -65
- package/src/scaffold/templates.ts +2 -1
- package/upgrades/1.3.715.md +92 -0
- 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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,8EAA8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;CAChF;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAID,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB;IAO1D,IAAI,aAAa,IAAI,MAAM,CAE1B;IAID;;;;OAIG;IACH,MAAM,CAAC,YAAY,CACjB,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3G,MAAM;IAmBT;;;OAGG;IACH,SAAS,CACP,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,UAAQ,GACf,WAAW;
|
|
1
|
+
{"version":3,"file":"FencedLease.d.ts","sourceRoot":"","sources":["../../src/core/FencedLease.ts"],"names":[],"mappings":"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"}
|
package/dist/core/FencedLease.js
CHANGED
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"FencedLease.js","sourceRoot":"","sources":["../../src/core/FencedLease.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAgC,MAAM,kBAAkB,CAAC;
|
|
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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"}
|