instar 1.3.688 → 1.3.689
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 +106 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +11 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +8 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +5 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/leaseGatedSpawn.d.ts +232 -0
- package/dist/core/leaseGatedSpawn.d.ts.map +1 -0
- package/dist/core/leaseGatedSpawn.js +216 -0
- package/dist/core/leaseGatedSpawn.js.map +1 -0
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +44 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +47 -47
- package/upgrades/1.3.689.md +30 -0
- package/upgrades/side-effects/mesh-self-heal-g3.md +45 -0
- package/upgrades/side-effects/mesh-self-heal-spec.md +37 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA8Z/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA8Z/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAgJnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
|
|
@@ -491,6 +491,11 @@ export const DARK_GATE_EXCLUSIONS = [
|
|
|
491
491
|
category: 'optional-integration',
|
|
492
492
|
reason: 'hold-for-stability policy; trails inboundQueue one rollout stage behind (operator discipline)',
|
|
493
493
|
},
|
|
494
|
+
{
|
|
495
|
+
configPath: 'multiMachine.sessionPool.ownershipCheckedSpawn.enabled',
|
|
496
|
+
category: 'optional-integration',
|
|
497
|
+
reason: 'G3 lease-gated spawn (MESH-SELF-HEAL-SPEC §3.3) — spawn iff holding the fenced awake-lease, else forward to holder; stops the duplicate-session harm. Dark→dry-run→dev-live→fleet, live-verified on the real Mini+Laptop pair before enablement.',
|
|
498
|
+
},
|
|
494
499
|
// (the 7 multiMachine.stateSync.* memory stores — preferences, relationships,
|
|
495
500
|
// learnings, knowledge, evolutionActions, userRegistry, topicOperator — MOVED to
|
|
496
501
|
// DEV_GATED_FEATURES on 2026-06-13 per operator directive topic 13481: "NOTHING
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G3 — Lease-gated session spawn (MESH-SELF-HEAL-SPEC §3.3, FD6).
|
|
3
|
+
*
|
|
4
|
+
* The incident: a non-holder machine spawned its OWN session for a topic the
|
|
5
|
+
* holder already owned → two machines served one topic → double-replies. The
|
|
6
|
+
* structural fix is "spawn iff I hold the fenced awake-lease, else forward to
|
|
7
|
+
* the holder." Per the spec's foundation note B, the gate keys on the ONE
|
|
8
|
+
* trustworthy authority — the fenced awake-lease — NOT a placement view (which
|
|
9
|
+
* is not reliably readable from a non-router machine).
|
|
10
|
+
*
|
|
11
|
+
* This module is a PURE decision function (no I/O), mirroring SessionRouter's
|
|
12
|
+
* testable-pure pattern, so both sides of the boundary are unit-testable.
|
|
13
|
+
* The wiring (calling holdsLease(), forwarding via SessionRouter/deliverMessage)
|
|
14
|
+
* lives at the spawn callsites; this only decides spawn-vs-forward.
|
|
15
|
+
*
|
|
16
|
+
* Fail direction: CLOSED (FD6) — under ambiguity (cannot confirm we hold the
|
|
17
|
+
* lease) we do NOT spawn; we forward/defer, and G2's nobody-polling detector is
|
|
18
|
+
* the bounded backstop that guarantees someone ends up serving. A wrongful spawn
|
|
19
|
+
* is the duplicate the spec exists to prevent; a wrongful forward is recovered.
|
|
20
|
+
*
|
|
21
|
+
* Single-machine + flag-off MUST be byte-for-byte the legacy behavior (always
|
|
22
|
+
* spawn locally) — the gate is additive, dark by default.
|
|
23
|
+
*/
|
|
24
|
+
export interface LeaseGatedSpawnInputs {
|
|
25
|
+
/**
|
|
26
|
+
* Whether THIS machine currently holds the fenced awake-lease.
|
|
27
|
+
* Sourced from MultiMachineCoordinator.holdsLease(), which DEFAULTS TO true on
|
|
28
|
+
* a single-machine agent (no leaseCoordinator) — so single-machine naturally
|
|
29
|
+
* resolves to 'spawn'.
|
|
30
|
+
*/
|
|
31
|
+
holdsLease: boolean;
|
|
32
|
+
/** The ownershipCheckedSpawn flag (multiMachine.sessionPool.ownershipCheckedSpawn.enabled). */
|
|
33
|
+
flagEnabled: boolean;
|
|
34
|
+
/** Dry-run: log the intended decision but still spawn locally (observe-only soak). */
|
|
35
|
+
dryRun: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* True when this agent is NOT running multi-machine (no peers / no lease
|
|
38
|
+
* coordinator). A single-machine agent always spawns locally regardless of
|
|
39
|
+
* the flag — the gate is a no-op there.
|
|
40
|
+
*/
|
|
41
|
+
singleMachine: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Whether the forward path (SessionRouter / deliverMessage to the holder) is
|
|
44
|
+
* actually available. If the gate would forward but no forward seam exists,
|
|
45
|
+
* we must NOT strand the message — we fall back to spawning locally and flag
|
|
46
|
+
* it, because a stranded inbound (nobody serves) is worse than a rare
|
|
47
|
+
* duplicate. G2 is the backstop, but the forward seam is the primary path.
|
|
48
|
+
*/
|
|
49
|
+
forwardAvailable: boolean;
|
|
50
|
+
}
|
|
51
|
+
export type LeaseGatedSpawnAction = 'spawn' | 'forward' | 'dry-run-would-forward' | 'spawn-forward-unavailable';
|
|
52
|
+
export interface LeaseGatedSpawnDecision {
|
|
53
|
+
action: LeaseGatedSpawnAction;
|
|
54
|
+
/** True when a session should actually be spawned locally as a result. */
|
|
55
|
+
spawnLocally: boolean;
|
|
56
|
+
/** Short machine-readable reason for the audit log. */
|
|
57
|
+
reason: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Decide whether to spawn a session locally for an inbound topic message, or
|
|
61
|
+
* forward it to the lease holder. Pure: no I/O, fully unit-testable.
|
|
62
|
+
*/
|
|
63
|
+
export declare function decideLeaseGatedSpawn(inputs: LeaseGatedSpawnInputs): LeaseGatedSpawnDecision;
|
|
64
|
+
/**
|
|
65
|
+
* G3.4 — Single-writer binding lifecycle: clear-on-kill (MESH-SELF-HEAL-SPEC §3.3,
|
|
66
|
+
* FD7). The incident: killing a duplicate session did NOT clear its topic→session
|
|
67
|
+
* binding — only an explicit topic pin stopped the re-spawn, so a dead session's
|
|
68
|
+
* stale binding could silently resurrect work. The invariant is "a binding exists
|
|
69
|
+
* IFF a live session exists for it": the moment a session is killed, its binding
|
|
70
|
+
* must go.
|
|
71
|
+
*
|
|
72
|
+
* Safety note (why clearing on kill never breaks resume): the topic→session
|
|
73
|
+
* binding maps topicId→tmux-session-name; the RESUME UUID lives separately in
|
|
74
|
+
* TopicResumeMap keyed by topicId. Clearing the binding to a dead tmux session
|
|
75
|
+
* does not touch the resume UUID — the next inbound for the topic re-spawns a
|
|
76
|
+
* FRESH session (with --resume) and re-registers a new binding. We are only
|
|
77
|
+
* removing a pointer at a corpse.
|
|
78
|
+
*
|
|
79
|
+
* Pure: no I/O. The wiring (resolving the topic for the killed session, calling
|
|
80
|
+
* unregisterTopic, the audit line) lives at the beforeSessionKill listener.
|
|
81
|
+
*
|
|
82
|
+
* Gating mirrors the spawn gate: dark + dryRun by default ⇒ a strict no-op until
|
|
83
|
+
* the operator opts into the G3 single-writer binding lifecycle.
|
|
84
|
+
*/
|
|
85
|
+
export interface BindingCleanupOnKillInputs {
|
|
86
|
+
/** The ownershipCheckedSpawn flag (multiMachine.sessionPool.ownershipCheckedSpawn.enabled). */
|
|
87
|
+
flagEnabled: boolean;
|
|
88
|
+
/** Dry-run: record the counterfactual but DO NOT clear the binding (observe-only soak). */
|
|
89
|
+
dryRun: boolean;
|
|
90
|
+
/** True when the killed session has a resolvable topic→session binding to clear. */
|
|
91
|
+
hasBinding: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* True when this kill is immediately followed by a SAME-TOPIC respawn
|
|
94
|
+
* (context-exhaustion / recovery bounce, framework swap). The respawn resolves
|
|
95
|
+
* its target via getSessionForTopic, so clearing the binding first would make
|
|
96
|
+
* that lookup return null and the recovery silently abort. A respawn-kill must
|
|
97
|
+
* NEVER clear the binding (and must not record a would-clear counterfactual,
|
|
98
|
+
* since clearing would be the WRONG action there). Mirrors the resume-UUID-save
|
|
99
|
+
* listener's contextExhaustionKills guard. Defaults false (a terminal kill).
|
|
100
|
+
*/
|
|
101
|
+
respawnImminent?: boolean;
|
|
102
|
+
}
|
|
103
|
+
export type BindingCleanupAction = 'clear' | 'dry-run-would-clear' | 'skip-no-binding' | 'skip-respawn-kill' | 'skip-legacy';
|
|
104
|
+
export interface BindingCleanupDecision {
|
|
105
|
+
action: BindingCleanupAction;
|
|
106
|
+
/** True when the binding should actually be unregistered as a result. */
|
|
107
|
+
clearNow: boolean;
|
|
108
|
+
/** Short machine-readable reason for the audit log. */
|
|
109
|
+
reason: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Decide whether to clear a killed session's topic→session binding. Pure: no I/O,
|
|
113
|
+
* fully unit-testable on both sides of the boundary.
|
|
114
|
+
*/
|
|
115
|
+
export declare function decideBindingCleanupOnKill(inputs: BindingCleanupOnKillInputs): BindingCleanupDecision;
|
|
116
|
+
/**
|
|
117
|
+
* Soak-evidence ledger (operator directive 2026-06-27 — "observe-mode must record
|
|
118
|
+
* EVALUABLE counterfactual evidence, not a throwaway log line; otherwise it's
|
|
119
|
+
* useless and can never justify promotion"). This is the structured metric that
|
|
120
|
+
* lets a later promotion-review say, concretely, "G3 caught N real duplicate-spawn
|
|
121
|
+
* attempts in dryRun over the soak → promote it" (or "never fired → remove it").
|
|
122
|
+
*
|
|
123
|
+
* THE load-bearing counterfactual metric is `wouldHavePreventedDuplicate`: in
|
|
124
|
+
* dry-run, every `dry-run-would-forward` is a duplicate session this gate WOULD
|
|
125
|
+
* have prevented had it been enabled — i.e. a real instance of the incident's harm
|
|
126
|
+
* that the gate would have stopped. A nonzero, growing count over a clean soak is
|
|
127
|
+
* the evidence FOR promotion; a flat zero over a long soak is evidence the gate is
|
|
128
|
+
* a no-op here (consider removal). Either way the loop can close.
|
|
129
|
+
*/
|
|
130
|
+
export interface LeaseGatedSpawnSoakSummary {
|
|
131
|
+
/** Decisions observed total. */
|
|
132
|
+
decisions: number;
|
|
133
|
+
/** Spawned locally because we hold the lease (the normal, correct path). */
|
|
134
|
+
spawnedAsHolder: number;
|
|
135
|
+
/** Spawned locally as a single-machine / flag-off no-op. */
|
|
136
|
+
spawnedLegacy: number;
|
|
137
|
+
/** Actually forwarded (gate enabled, non-dry-run, not holder) — enforcement firing. */
|
|
138
|
+
forwarded: number;
|
|
139
|
+
/**
|
|
140
|
+
* THE counterfactual: in dry-run, a non-holder spawn the gate WOULD have
|
|
141
|
+
* forwarded — i.e. a duplicate session it would have prevented if enabled.
|
|
142
|
+
*/
|
|
143
|
+
wouldHavePreventedDuplicate: number;
|
|
144
|
+
/** Not holder but no forward seam available → spawned to avoid a strand (a gap to close). */
|
|
145
|
+
spawnedNoForwardSeam: number;
|
|
146
|
+
/** Binding-cleanup decisions observed on session-kill. */
|
|
147
|
+
bindingCleanupDecisions: number;
|
|
148
|
+
/** Stale bindings actually cleared on kill (enforcement firing). */
|
|
149
|
+
bindingsCleared: number;
|
|
150
|
+
/**
|
|
151
|
+
* THE binding-cleanup counterfactual: in dry-run, each killed session that
|
|
152
|
+
* still had a binding is a stale binding the gate WOULD have cleared — i.e. a
|
|
153
|
+
* potential silent stale-respawn it would have prevented if enabled.
|
|
154
|
+
*/
|
|
155
|
+
wouldHaveClearedStaleBinding: number;
|
|
156
|
+
firstAt: string | null;
|
|
157
|
+
lastAt: string | null;
|
|
158
|
+
}
|
|
159
|
+
export declare class LeaseGatedSpawnSoakLedger {
|
|
160
|
+
private s;
|
|
161
|
+
/** Record one decision. `nowIso` is injected (callers pass a real timestamp). */
|
|
162
|
+
record(decision: LeaseGatedSpawnDecision, nowIso: string): void;
|
|
163
|
+
/**
|
|
164
|
+
* Record one binding-cleanup-on-kill decision (G3.4). `nowIso` is injected.
|
|
165
|
+
* Only decisions that touch a real binding (clear / would-clear) advance the
|
|
166
|
+
* counters; skip-legacy / skip-no-binding are non-events for the soak metric.
|
|
167
|
+
*/
|
|
168
|
+
recordBindingCleanup(decision: BindingCleanupDecision, nowIso: string): void;
|
|
169
|
+
summary(): LeaseGatedSpawnSoakSummary;
|
|
170
|
+
/**
|
|
171
|
+
* A promotion recommendation derived from the soak evidence — the thing that
|
|
172
|
+
* was NEVER produced before (operator: "you've never once recommended promoting
|
|
173
|
+
* a dark feature"). Deterministic, evidence-based, advisory.
|
|
174
|
+
*/
|
|
175
|
+
promotionSignal(minDuplicatesToPromote?: number): {
|
|
176
|
+
recommendation: 'promote' | 'keep-soaking' | 'consider-removal' | 'enforcing';
|
|
177
|
+
why: string;
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* The minimal binding-registry surface the kill-time cleanup needs. Mirrors the
|
|
182
|
+
* relevant slice of TelegramAdapter (getTopicForSession / unregisterTopic) so the
|
|
183
|
+
* cleanup wiring is unit-testable against a fake without a real adapter/tmux.
|
|
184
|
+
*/
|
|
185
|
+
export interface BindingRegistryPort {
|
|
186
|
+
getTopicForSession(sessionName: string): number | null;
|
|
187
|
+
unregisterTopic(topicId: number): void;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* G3.4 wiring helper — resolve the killed session's topic binding, decide whether
|
|
191
|
+
* to clear it (pure fn), record the soak counterfactual, and on a live decision
|
|
192
|
+
* actually unregister the stale binding. Returns the decision for the caller's
|
|
193
|
+
* audit. Kept here (not inlined at the beforeSessionKill listener) so the
|
|
194
|
+
* single-writer-on-kill invariant has a wiring-integrity test target.
|
|
195
|
+
*
|
|
196
|
+
* Order contract: the caller MUST run this AFTER the resume-UUID save (the UUID
|
|
197
|
+
* lives in TopicResumeMap keyed by topicId, so clearing the binding can't lose
|
|
198
|
+
* it — but resolving the topic for the UUID save reads the same binding, so save
|
|
199
|
+
* first, clear second).
|
|
200
|
+
*/
|
|
201
|
+
export interface BindingCleanupAuditEntry {
|
|
202
|
+
ts: string;
|
|
203
|
+
/** 'binding-cleared' when actually cleared; 'binding-would-clear' in dry-run. */
|
|
204
|
+
event: 'binding-cleared' | 'binding-would-clear';
|
|
205
|
+
topicId: number;
|
|
206
|
+
sessionName: string;
|
|
207
|
+
dryRun: boolean;
|
|
208
|
+
reason: string;
|
|
209
|
+
}
|
|
210
|
+
export declare function applyBindingCleanupOnKill(args: {
|
|
211
|
+
registry: BindingRegistryPort;
|
|
212
|
+
sessionName: string;
|
|
213
|
+
flagEnabled: boolean;
|
|
214
|
+
dryRun: boolean;
|
|
215
|
+
ledger: LeaseGatedSpawnSoakLedger;
|
|
216
|
+
nowIso: string;
|
|
217
|
+
log?: (msg: string) => void;
|
|
218
|
+
/** Optional durable audit sink (logs/mesh-selfheal.jsonl) — invoked ONLY on a
|
|
219
|
+
* real transition (clear / would-clear), never on a skip. Spec §6. */
|
|
220
|
+
audit?: (entry: BindingCleanupAuditEntry) => void;
|
|
221
|
+
/** True when a same-topic respawn follows this kill (recovery bounce) — keep the
|
|
222
|
+
* binding so recovery's getSessionForTopic lookup resolves. See input docs. */
|
|
223
|
+
respawnImminent?: boolean;
|
|
224
|
+
}): BindingCleanupDecision;
|
|
225
|
+
/**
|
|
226
|
+
* Process-wide shared soak ledger — one source of truth for the G3 gate's
|
|
227
|
+
* evaluable evidence. server.ts (the spawn callsites) RECORDS to it; routes.ts
|
|
228
|
+
* (GET /mesh-selfheal/g3) READS it for the operator's promotion-evidence surface.
|
|
229
|
+
* A shared singleton avoids threading the ledger through AgentServer's RouteContext.
|
|
230
|
+
*/
|
|
231
|
+
export declare const sharedG3SoakLedger: LeaseGatedSpawnSoakLedger;
|
|
232
|
+
//# sourceMappingURL=leaseGatedSpawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaseGatedSpawn.d.ts","sourceRoot":"","sources":["../../src/core/leaseGatedSpawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G3 — Lease-gated session spawn (MESH-SELF-HEAL-SPEC §3.3, FD6).
|
|
3
|
+
*
|
|
4
|
+
* The incident: a non-holder machine spawned its OWN session for a topic the
|
|
5
|
+
* holder already owned → two machines served one topic → double-replies. The
|
|
6
|
+
* structural fix is "spawn iff I hold the fenced awake-lease, else forward to
|
|
7
|
+
* the holder." Per the spec's foundation note B, the gate keys on the ONE
|
|
8
|
+
* trustworthy authority — the fenced awake-lease — NOT a placement view (which
|
|
9
|
+
* is not reliably readable from a non-router machine).
|
|
10
|
+
*
|
|
11
|
+
* This module is a PURE decision function (no I/O), mirroring SessionRouter's
|
|
12
|
+
* testable-pure pattern, so both sides of the boundary are unit-testable.
|
|
13
|
+
* The wiring (calling holdsLease(), forwarding via SessionRouter/deliverMessage)
|
|
14
|
+
* lives at the spawn callsites; this only decides spawn-vs-forward.
|
|
15
|
+
*
|
|
16
|
+
* Fail direction: CLOSED (FD6) — under ambiguity (cannot confirm we hold the
|
|
17
|
+
* lease) we do NOT spawn; we forward/defer, and G2's nobody-polling detector is
|
|
18
|
+
* the bounded backstop that guarantees someone ends up serving. A wrongful spawn
|
|
19
|
+
* is the duplicate the spec exists to prevent; a wrongful forward is recovered.
|
|
20
|
+
*
|
|
21
|
+
* Single-machine + flag-off MUST be byte-for-byte the legacy behavior (always
|
|
22
|
+
* spawn locally) — the gate is additive, dark by default.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Decide whether to spawn a session locally for an inbound topic message, or
|
|
26
|
+
* forward it to the lease holder. Pure: no I/O, fully unit-testable.
|
|
27
|
+
*/
|
|
28
|
+
export function decideLeaseGatedSpawn(inputs) {
|
|
29
|
+
const { holdsLease, flagEnabled, dryRun, singleMachine, forwardAvailable } = inputs;
|
|
30
|
+
// Legacy / no-op paths — byte-for-byte the prior behavior (always spawn).
|
|
31
|
+
if (!flagEnabled) {
|
|
32
|
+
return { action: 'spawn', spawnLocally: true, reason: 'flag-off-legacy' };
|
|
33
|
+
}
|
|
34
|
+
if (singleMachine) {
|
|
35
|
+
return { action: 'spawn', spawnLocally: true, reason: 'single-machine-noop' };
|
|
36
|
+
}
|
|
37
|
+
// Multi-machine, flag on: gate on the fenced lease.
|
|
38
|
+
if (holdsLease) {
|
|
39
|
+
return { action: 'spawn', spawnLocally: true, reason: 'holds-lease' };
|
|
40
|
+
}
|
|
41
|
+
// We do NOT hold the lease → we must NOT spawn (fail-CLOSED, FD6). Forward to
|
|
42
|
+
// the holder — UNLESS the forward seam is unavailable (then spawn to avoid a
|
|
43
|
+
// strand, and flag it) or we are in dry-run soak (spawn + log the intent).
|
|
44
|
+
if (dryRun) {
|
|
45
|
+
return {
|
|
46
|
+
action: 'dry-run-would-forward',
|
|
47
|
+
spawnLocally: true,
|
|
48
|
+
reason: 'dry-run-would-forward-not-holder',
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (!forwardAvailable) {
|
|
52
|
+
return {
|
|
53
|
+
action: 'spawn-forward-unavailable',
|
|
54
|
+
spawnLocally: true,
|
|
55
|
+
reason: 'not-holder-but-no-forward-seam-avoid-strand',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return { action: 'forward', spawnLocally: false, reason: 'not-holder-forward-to-owner' };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Decide whether to clear a killed session's topic→session binding. Pure: no I/O,
|
|
62
|
+
* fully unit-testable on both sides of the boundary.
|
|
63
|
+
*/
|
|
64
|
+
export function decideBindingCleanupOnKill(inputs) {
|
|
65
|
+
const { flagEnabled, dryRun, hasBinding, respawnImminent } = inputs;
|
|
66
|
+
// Flag off ⇒ byte-for-byte the legacy behavior (binding persists across kill).
|
|
67
|
+
if (!flagEnabled) {
|
|
68
|
+
return { action: 'skip-legacy', clearNow: false, reason: 'flag-off-legacy' };
|
|
69
|
+
}
|
|
70
|
+
// Nothing bound to this session ⇒ nothing to clear (not a counterfactual either).
|
|
71
|
+
if (!hasBinding) {
|
|
72
|
+
return { action: 'skip-no-binding', clearNow: false, reason: 'no-binding-for-session' };
|
|
73
|
+
}
|
|
74
|
+
// Kill is immediately followed by a same-topic respawn (recovery bounce) ⇒ keep
|
|
75
|
+
// the binding so the respawn's getSessionForTopic lookup still resolves. Takes
|
|
76
|
+
// precedence over dryRun so we never record a would-clear counterfactual that
|
|
77
|
+
// would, if promoted, BREAK recovery. (G3 side-effects second-pass review.)
|
|
78
|
+
if (respawnImminent) {
|
|
79
|
+
return { action: 'skip-respawn-kill', clearNow: false, reason: 'respawn-imminent-keep-binding' };
|
|
80
|
+
}
|
|
81
|
+
// Observe-only soak: record the counterfactual, leave the binding in place.
|
|
82
|
+
if (dryRun) {
|
|
83
|
+
return {
|
|
84
|
+
action: 'dry-run-would-clear',
|
|
85
|
+
clearNow: false,
|
|
86
|
+
reason: 'dry-run-would-clear-stale-binding',
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// Enabled + live: enforce the invariant — clear the stale binding now.
|
|
90
|
+
return { action: 'clear', clearNow: true, reason: 'clear-stale-binding-on-kill' };
|
|
91
|
+
}
|
|
92
|
+
export class LeaseGatedSpawnSoakLedger {
|
|
93
|
+
s = {
|
|
94
|
+
decisions: 0,
|
|
95
|
+
spawnedAsHolder: 0,
|
|
96
|
+
spawnedLegacy: 0,
|
|
97
|
+
forwarded: 0,
|
|
98
|
+
wouldHavePreventedDuplicate: 0,
|
|
99
|
+
spawnedNoForwardSeam: 0,
|
|
100
|
+
bindingCleanupDecisions: 0,
|
|
101
|
+
bindingsCleared: 0,
|
|
102
|
+
wouldHaveClearedStaleBinding: 0,
|
|
103
|
+
firstAt: null,
|
|
104
|
+
lastAt: null,
|
|
105
|
+
};
|
|
106
|
+
/** Record one decision. `nowIso` is injected (callers pass a real timestamp). */
|
|
107
|
+
record(decision, nowIso) {
|
|
108
|
+
this.s.decisions += 1;
|
|
109
|
+
if (this.s.firstAt === null)
|
|
110
|
+
this.s.firstAt = nowIso;
|
|
111
|
+
this.s.lastAt = nowIso;
|
|
112
|
+
switch (decision.action) {
|
|
113
|
+
case 'spawn':
|
|
114
|
+
if (decision.reason === 'holds-lease')
|
|
115
|
+
this.s.spawnedAsHolder += 1;
|
|
116
|
+
else
|
|
117
|
+
this.s.spawnedLegacy += 1; // flag-off-legacy | single-machine-noop
|
|
118
|
+
break;
|
|
119
|
+
case 'forward':
|
|
120
|
+
this.s.forwarded += 1;
|
|
121
|
+
break;
|
|
122
|
+
case 'dry-run-would-forward':
|
|
123
|
+
this.s.wouldHavePreventedDuplicate += 1;
|
|
124
|
+
break;
|
|
125
|
+
case 'spawn-forward-unavailable':
|
|
126
|
+
this.s.spawnedNoForwardSeam += 1;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Record one binding-cleanup-on-kill decision (G3.4). `nowIso` is injected.
|
|
132
|
+
* Only decisions that touch a real binding (clear / would-clear) advance the
|
|
133
|
+
* counters; skip-legacy / skip-no-binding are non-events for the soak metric.
|
|
134
|
+
*/
|
|
135
|
+
recordBindingCleanup(decision, nowIso) {
|
|
136
|
+
switch (decision.action) {
|
|
137
|
+
case 'clear':
|
|
138
|
+
this.s.bindingCleanupDecisions += 1;
|
|
139
|
+
this.s.bindingsCleared += 1;
|
|
140
|
+
break;
|
|
141
|
+
case 'dry-run-would-clear':
|
|
142
|
+
this.s.bindingCleanupDecisions += 1;
|
|
143
|
+
this.s.wouldHaveClearedStaleBinding += 1;
|
|
144
|
+
break;
|
|
145
|
+
// skip-legacy / skip-no-binding: nothing to count (no binding was at risk).
|
|
146
|
+
default:
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (this.s.firstAt === null)
|
|
150
|
+
this.s.firstAt = nowIso;
|
|
151
|
+
this.s.lastAt = nowIso;
|
|
152
|
+
}
|
|
153
|
+
summary() {
|
|
154
|
+
return { ...this.s };
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* A promotion recommendation derived from the soak evidence — the thing that
|
|
158
|
+
* was NEVER produced before (operator: "you've never once recommended promoting
|
|
159
|
+
* a dark feature"). Deterministic, evidence-based, advisory.
|
|
160
|
+
*/
|
|
161
|
+
promotionSignal(minDuplicatesToPromote = 1) {
|
|
162
|
+
const s = this.s;
|
|
163
|
+
if (s.forwarded > 0 || s.bindingsCleared > 0) {
|
|
164
|
+
const parts = [];
|
|
165
|
+
if (s.forwarded > 0)
|
|
166
|
+
parts.push(`forwarded ${s.forwarded} inbound(s) to the holder`);
|
|
167
|
+
if (s.bindingsCleared > 0)
|
|
168
|
+
parts.push(`cleared ${s.bindingsCleared} stale binding(s) on kill`);
|
|
169
|
+
return { recommendation: 'enforcing', why: `gate is live and has ${parts.join(' and ')}` };
|
|
170
|
+
}
|
|
171
|
+
const counterfactual = s.wouldHavePreventedDuplicate + s.wouldHaveClearedStaleBinding;
|
|
172
|
+
if (counterfactual >= minDuplicatesToPromote) {
|
|
173
|
+
return {
|
|
174
|
+
recommendation: 'promote',
|
|
175
|
+
why: `dry-run would have prevented ${s.wouldHavePreventedDuplicate} duplicate session(s) and cleared ${s.wouldHaveClearedStaleBinding} stale binding(s) — real harm the gate stops; promote to enabled`,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
const observed = s.decisions + s.bindingCleanupDecisions;
|
|
179
|
+
if (observed === 0) {
|
|
180
|
+
return { recommendation: 'keep-soaking', why: 'no decisions observed yet' };
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
recommendation: 'consider-removal',
|
|
184
|
+
why: `${observed} decision(s) observed, 0 counterfactual prevention — the gate has not fired usefully here`,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export function applyBindingCleanupOnKill(args) {
|
|
189
|
+
const { registry, sessionName, flagEnabled, dryRun, ledger, nowIso, log, audit, respawnImminent } = args;
|
|
190
|
+
const topicId = registry.getTopicForSession(sessionName);
|
|
191
|
+
const decision = decideBindingCleanupOnKill({
|
|
192
|
+
flagEnabled,
|
|
193
|
+
dryRun,
|
|
194
|
+
hasBinding: topicId !== null,
|
|
195
|
+
respawnImminent,
|
|
196
|
+
});
|
|
197
|
+
ledger.recordBindingCleanup(decision, nowIso);
|
|
198
|
+
if (decision.clearNow && topicId !== null) {
|
|
199
|
+
registry.unregisterTopic(topicId);
|
|
200
|
+
log?.(`[g3-binding-cleanup] cleared stale binding for topic ${topicId} (session "${sessionName}") on kill — binding-IFF-live-session`);
|
|
201
|
+
audit?.({ ts: nowIso, event: 'binding-cleared', topicId, sessionName, dryRun, reason: decision.reason });
|
|
202
|
+
}
|
|
203
|
+
else if (decision.action === 'dry-run-would-clear' && topicId !== null) {
|
|
204
|
+
log?.(`[g3-binding-cleanup] DRY-RUN would clear stale binding for topic ${topicId} (session "${sessionName}") on kill`);
|
|
205
|
+
audit?.({ ts: nowIso, event: 'binding-would-clear', topicId, sessionName, dryRun, reason: decision.reason });
|
|
206
|
+
}
|
|
207
|
+
return decision;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Process-wide shared soak ledger — one source of truth for the G3 gate's
|
|
211
|
+
* evaluable evidence. server.ts (the spawn callsites) RECORDS to it; routes.ts
|
|
212
|
+
* (GET /mesh-selfheal/g3) READS it for the operator's promotion-evidence surface.
|
|
213
|
+
* A shared singleton avoids threading the ledger through AgentServer's RouteContext.
|
|
214
|
+
*/
|
|
215
|
+
export const sharedG3SoakLedger = new LeaseGatedSpawnSoakLedger();
|
|
216
|
+
//# sourceMappingURL=leaseGatedSpawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaseGatedSpawn.js","sourceRoot":"","sources":["../../src/core/leaseGatedSpawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CapabilityIndex.d.ts","sourceRoot":"","sources":["../../src/server/CapabilityIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,YAAY,CAAC;IAClB,iFAAiF;IACjF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC;CAC1D;AAID,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EAmiCtD,CAAC;AAsCF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"CapabilityIndex.d.ts","sourceRoot":"","sources":["../../src/server/CapabilityIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,YAAY,CAAC;IAClB,iFAAiF;IACjF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC;CAC1D;AAID,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EAmiCtD,CAAC;AAsCF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwE/E,CAAC;AAIF;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUzD;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,IAAI,GAAG,CAAC,MAAM,CAAC,CAEpD;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,oBAAoB,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB"}
|
|
@@ -1188,6 +1188,7 @@ export const INTERNAL_PREFIXES = [
|
|
|
1188
1188
|
{ prefix: 'hooks', reason: 'hook listing surfaced via the top-level `hooks` field of the response' },
|
|
1189
1189
|
{ prefix: 'threadline', reason: 'surfaced via discovery (threadline-relay feature)' },
|
|
1190
1190
|
{ prefix: 'mesh', reason: 'machine-to-machine MeshRpc transport (§L0 Session Pool) — Ed25519-signed, recipient-bound peer commands; never an agent/user capability' },
|
|
1191
|
+
{ prefix: 'mesh-selfheal', reason: 'G3 lease-gated-spawn promotion-evidence surface (MESH-SELF-HEAL-SPEC §3.3) — read-only soak ledger (would-have-prevented-duplicate / would-have-cleared-stale-binding + promotion recommendation) the agent READS for the dark-feature graduation loop; operational observability like /worktrees/agent-reaper, not a user-invokable capability' },
|
|
1191
1192
|
{ prefix: 'session-pool', reason: 'session-pool rollout-gate E2E results (§Rollout) — operator observability for a dark feature, not a conversational capability' },
|
|
1192
1193
|
];
|
|
1193
1194
|
// ── Public helpers ───────────────────────────────────────────────────────
|