instar 1.3.714 → 1.3.716
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/InputClassifier.d.ts.map +1 -1
- package/dist/monitoring/InputClassifier.js +6 -1
- package/dist/monitoring/InputClassifier.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/1.3.716.md +32 -0
- package/upgrades/side-effects/input-classifier-unsure-contract.md +76 -0
- 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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"}
|
package/dist/core/MeshRpc.d.ts
CHANGED
|
@@ -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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"}
|
package/dist/core/MeshRpc.js
CHANGED
|
@@ -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':
|
package/dist/core/MeshRpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeshRpc.js","sourceRoot":"","sources":["../../src/core/MeshRpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
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;
|
|
1
|
+
{"version":3,"file":"MultiMachineCoordinator.d.ts","sourceRoot":"","sources":["../../src/core/MultiMachineCoordinator.ts"],"names":[],"mappings":"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"}
|