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.
Files changed (92) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +599 -4
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +35 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/CoherenceJournal.d.ts +1 -1
  8. package/dist/core/CoherenceJournal.d.ts.map +1 -1
  9. package/dist/core/CoherenceJournal.js +9 -2
  10. package/dist/core/CoherenceJournal.js.map +1 -1
  11. package/dist/core/FencedLease.d.ts +47 -1
  12. package/dist/core/FencedLease.d.ts.map +1 -1
  13. package/dist/core/FencedLease.js +58 -1
  14. package/dist/core/FencedLease.js.map +1 -1
  15. package/dist/core/LeaseCoordinator.d.ts +25 -1
  16. package/dist/core/LeaseCoordinator.d.ts.map +1 -1
  17. package/dist/core/LeaseCoordinator.js +66 -0
  18. package/dist/core/LeaseCoordinator.js.map +1 -1
  19. package/dist/core/LeaseHandbackReconciler.d.ts +212 -0
  20. package/dist/core/LeaseHandbackReconciler.d.ts.map +1 -0
  21. package/dist/core/LeaseHandbackReconciler.js +416 -0
  22. package/dist/core/LeaseHandbackReconciler.js.map +1 -0
  23. package/dist/core/MeshRpc.d.ts +6 -1
  24. package/dist/core/MeshRpc.d.ts.map +1 -1
  25. package/dist/core/MeshRpc.js +9 -0
  26. package/dist/core/MeshRpc.js.map +1 -1
  27. package/dist/core/MultiMachineCoordinator.d.ts +20 -0
  28. package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
  29. package/dist/core/MultiMachineCoordinator.js +30 -0
  30. package/dist/core/MultiMachineCoordinator.js.map +1 -1
  31. package/dist/core/OwnershipReconciler.d.ts +42 -2
  32. package/dist/core/OwnershipReconciler.d.ts.map +1 -1
  33. package/dist/core/OwnershipReconciler.js +100 -2
  34. package/dist/core/OwnershipReconciler.js.map +1 -1
  35. package/dist/core/PostUpdateMigrator.d.ts +1 -0
  36. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  37. package/dist/core/PostUpdateMigrator.js +31 -0
  38. package/dist/core/PostUpdateMigrator.js.map +1 -1
  39. package/dist/core/StaleOwnerReleaseEngine.d.ts +290 -0
  40. package/dist/core/StaleOwnerReleaseEngine.d.ts.map +1 -0
  41. package/dist/core/StaleOwnerReleaseEngine.js +645 -0
  42. package/dist/core/StaleOwnerReleaseEngine.js.map +1 -0
  43. package/dist/core/TopicClaimAnnotationStore.d.ts +121 -0
  44. package/dist/core/TopicClaimAnnotationStore.d.ts.map +1 -0
  45. package/dist/core/TopicClaimAnnotationStore.js +234 -0
  46. package/dist/core/TopicClaimAnnotationStore.js.map +1 -0
  47. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  48. package/dist/core/devGatedFeatures.js +11 -0
  49. package/dist/core/devGatedFeatures.js.map +1 -1
  50. package/dist/core/handbackLatch.d.ts +28 -0
  51. package/dist/core/handbackLatch.d.ts.map +1 -0
  52. package/dist/core/handbackLatch.js +73 -0
  53. package/dist/core/handbackLatch.js.map +1 -0
  54. package/dist/core/ropeHealth.d.ts +26 -0
  55. package/dist/core/ropeHealth.d.ts.map +1 -0
  56. package/dist/core/ropeHealth.js +32 -0
  57. package/dist/core/ropeHealth.js.map +1 -0
  58. package/dist/core/types.d.ts +51 -0
  59. package/dist/core/types.d.ts.map +1 -1
  60. package/dist/core/types.js.map +1 -1
  61. package/dist/monitoring/InputClassifier.d.ts.map +1 -1
  62. package/dist/monitoring/InputClassifier.js +6 -1
  63. package/dist/monitoring/InputClassifier.js.map +1 -1
  64. package/dist/monitoring/StrandedTopicSentinel.d.ts +5 -0
  65. package/dist/monitoring/StrandedTopicSentinel.d.ts.map +1 -1
  66. package/dist/monitoring/StrandedTopicSentinel.js +8 -0
  67. package/dist/monitoring/StrandedTopicSentinel.js.map +1 -1
  68. package/dist/monitoring/guardManifest.d.ts.map +1 -1
  69. package/dist/monitoring/guardManifest.js +45 -0
  70. package/dist/monitoring/guardManifest.js.map +1 -1
  71. package/dist/monitoring/strandedTopicDecision.d.ts +11 -0
  72. package/dist/monitoring/strandedTopicDecision.d.ts.map +1 -1
  73. package/dist/monitoring/strandedTopicDecision.js +12 -1
  74. package/dist/monitoring/strandedTopicDecision.js.map +1 -1
  75. package/dist/scaffold/templates.d.ts.map +1 -1
  76. package/dist/scaffold/templates.js +2 -1
  77. package/dist/scaffold/templates.js.map +1 -1
  78. package/dist/server/AgentServer.d.ts +9 -0
  79. package/dist/server/AgentServer.d.ts.map +1 -1
  80. package/dist/server/AgentServer.js +2 -0
  81. package/dist/server/AgentServer.js.map +1 -1
  82. package/dist/server/routes.d.ts +9 -0
  83. package/dist/server/routes.d.ts.map +1 -1
  84. package/dist/server/routes.js +76 -0
  85. package/dist/server/routes.js.map +1 -1
  86. package/package.json +1 -1
  87. package/src/data/builtin-manifest.json +65 -65
  88. package/src/scaffold/templates.ts +2 -1
  89. package/upgrades/1.3.715.md +92 -0
  90. package/upgrades/1.3.716.md +32 -0
  91. package/upgrades/side-effects/input-classifier-unsure-contract.md +76 -0
  92. package/upgrades/side-effects/u4-stale-owner-release-lease-handback.md +87 -0
@@ -0,0 +1,290 @@
1
+ /**
2
+ * StaleOwnerReleaseEngine — U4.2 (docs/specs/u4-2-stale-owner-release.md): the
3
+ * CMT-1786 auto-failover, built as the EVIDENCE UPGRADE to OwnershipReconciler
4
+ * Case C. When a topic's owner machine is genuinely dead/dark, the serving-lease
5
+ * HOLDER force-claims its topics — but only after an evidence bar in which EVERY
6
+ * predicate is a mechanical check over authenticated state, and every ambiguity
7
+ * fails CLOSED (a brief strand beats a split-brain).
8
+ *
9
+ * One actor (spec §2.7.6): this engine is invoked FROM OwnershipReconciler.tick()
10
+ * and issues claims through the reconciler's single CAS funnel — it is Case C's
11
+ * evidence bar, not a second takeover authority. `ownershipEpoch` is the only
12
+ * fence; the §2.4 `topic-claim-annotation` kind is deliberately NOT ownership
13
+ * state (it can never answer or fence ownership).
14
+ *
15
+ * The evidence bar (§2.2 — ALL required; fail CLOSED on any ambiguity):
16
+ * 1. machine death: owner offline in the pool AND observer-stamped staleness
17
+ * ≥ deathEvidenceMs on the OBSERVER's monotonic clock (never the owner's
18
+ * self-reported wall clock — R-r2-5a). Never-observed-since-boot follows
19
+ * the bounded bootstrap rule (R-r2-2), never a silent forever-strand.
20
+ * 2. multi-transport disproof: unreachable via the authenticated probe on
21
+ * EVERY advertised transport; the advert set must be owner-authenticated
22
+ * (PeerEndpointRecorder provenance ONLY — R-r2-5b), non-empty, fresh, and
23
+ * multi-transport (a single-rope advert set is automatic ambiguity).
24
+ * 3. quorum (verbatim Case C): online × 2 > machines.
25
+ * 4. claimant self-connectivity proof (a claimer with a broken NIC sees
26
+ * everyone as dead and must never claim). 2-machine git-less mesh: the
27
+ * claim path is DISABLED outright (detection + escalation still run).
28
+ * 5. owner liveness disproof over a PROVABLY FRESH evidence mirror — a stale
29
+ * mirror classifies AMBIGUITY, never "no recent side-effects" (R-r2-3).
30
+ * 6. fresh re-read immediately before the claim (the caller's CAS funnel
31
+ * re-reads; the engine re-checks the record at claim time).
32
+ *
33
+ * Bounded blast radius (§2.5): maxClaimsPerTick; per-topic claim budget +
34
+ * widening backoff carried on the REPLICATED topic-claim-annotation kind
35
+ * (R-r2-4 — the claimer role moves with the lease, the budget must follow the
36
+ * topic); probe verdicts single-flight + TTL-memoized + backoff + a P19 breaker
37
+ * that degrades to ONE attention item. A declined demote (operator "no") rides
38
+ * the same replicated kind and blocks the episode's claims on ANY claimer.
39
+ *
40
+ * Honesty surfaces (§2.6): every stale-detect, probe verdict, would-claim
41
+ * (dry-run), claim and REFUSAL lands in the decision trace (state-change-gated
42
+ * per episode, never per-tick); ambiguity persisting past the ceiling escalates
43
+ * ONE per-episode deduped attention item — raisable by ANY quorum member
44
+ * (R-r2-1), while the CLAIM stays lease-holder-only.
45
+ *
46
+ * Supervision: Tier 0 by explicit argument (§2.8) — deterministic fencing path;
47
+ * LLM-free, synchronous verdicts, acquires NO spawn-cap slot (asserted by test).
48
+ */
49
+ import type { SessionOwnershipRecord } from './SessionOwnership.js';
50
+ import type { MergedClaimAnnotation } from './TopicClaimAnnotationStore.js';
51
+ /** Config subtree: multiMachine.sessionPool.staleOwnerRelease (§5). */
52
+ export interface StaleOwnerReleaseConfig {
53
+ enabled: boolean;
54
+ dryRun: boolean;
55
+ /** Death-evidence bound (ms). Default 180_000 (existing Case C bound). */
56
+ deathEvidenceMs: number;
57
+ /** Per-endpoint probe timeout (ms) — well below the lease transport's 30s. */
58
+ probeTimeoutMs: number;
59
+ /** Ambiguity escalates after ambiguityCeilingMultiple × deathEvidenceMs. */
60
+ ambiguityCeilingMultiple: number;
61
+ /** Hard cap on claims landed per tick (P19). */
62
+ maxClaimsPerTick: number;
63
+ /** Bootstrap rule (R-r2-2): never-observed-since-boot classifies EXPIRED only
64
+ * after bootstrapNonObservationMultiple × deathEvidenceMs of continuous
65
+ * non-observation since claimant boot (plus the durable-heartbeat tie-break). */
66
+ bootstrapNonObservationMultiple: number;
67
+ /** The owner self-fence TTL the §2.3 ordering invariant is validated against. */
68
+ selfFenceTtlMs: number;
69
+ }
70
+ export declare const DEFAULT_STALE_OWNER_RELEASE_CONFIG: Omit<StaleOwnerReleaseConfig, 'enabled'>;
71
+ /**
72
+ * §2.3 TTL-ordering invariant (R-r2-3, part 1): "expired implies self-fenced by
73
+ * construction" holds ONLY when
74
+ * deathEvidenceMs > selfFenceTtlMs + reconcilerTickMs + clockSkewSlackMs.
75
+ * This is an INVARIANT of the design, not a tuning suggestion — a violating
76
+ * combination is REJECTED at config validation (the existing multiMachine
77
+ * reject-nonsensical-combinations-at-startup pattern). Returns null when valid,
78
+ * else a human-readable rejection message.
79
+ */
80
+ export declare function validateStaleOwnerReleaseInvariants(cfg: Pick<StaleOwnerReleaseConfig, 'deathEvidenceMs' | 'selfFenceTtlMs'>, reconcilerTickMs: number, clockSkewSlackMs: number): string | null;
81
+ /** §2.9 refusal reasons (closed enum — the FD-7 telemetry the soak is judged on). */
82
+ export type StaleOwnerRefusalReason = 'transport-ambiguity' | 'not-expired' | 'quorum-fail' | 'self-proof-fail' | 'side-effect-fresh';
83
+ /** The machine-level evidence verdict for one owner in one tick. */
84
+ export type OwnerEvidenceVerdict = {
85
+ verdict: 'healthy';
86
+ } | {
87
+ verdict: 'expired';
88
+ } | {
89
+ verdict: 'refused';
90
+ reason: StaleOwnerRefusalReason;
91
+ } | {
92
+ verdict: 'ambiguity';
93
+ reason: StaleOwnerRefusalReason;
94
+ };
95
+ /** One probe outcome per (owner, episode) — memoized, single-flight. */
96
+ export type ProbeVerdict = 'reachable' | 'unreachable' | 'error';
97
+ export interface AdvertSetView {
98
+ /** Owner-authenticated endpoints (PeerEndpointRecorder provenance ONLY). */
99
+ endpoints: Array<{
100
+ kind: string;
101
+ url: string;
102
+ }>;
103
+ /** Whether the advert set is freshness-bounded (wiring computes the bound). */
104
+ fresh: boolean;
105
+ }
106
+ export interface StaleOwnerTraceEntry {
107
+ ts: string;
108
+ type: 'stale-detect' | 'probe-verdict' | 'would-claim' | 'claim' | 'refusal' | 'ambiguity-escalated' | 'p19-giveup' | 'declined-demote';
109
+ owner?: string;
110
+ episodeId?: string;
111
+ topic?: string;
112
+ reason?: string;
113
+ detail?: string;
114
+ }
115
+ export interface StaleOwnerAttentionItem {
116
+ id: string;
117
+ title: string;
118
+ body: string;
119
+ priority: 'high' | 'medium';
120
+ sourceContext: string;
121
+ }
122
+ export interface StaleOwnerReleaseDeps {
123
+ /** Live-read feature gate (dev-gate resolved by the wiring). */
124
+ enabled: () => boolean;
125
+ dryRun: () => boolean;
126
+ config: () => StaleOwnerReleaseConfig;
127
+ selfMachineId: () => string | null;
128
+ /** All registered machines with OBSERVER-STAMPED liveness (R-r2-5a: the wiring
129
+ * MUST feed routerReceivedAt-derived values, never selfReportedLastSeen). */
130
+ machines: () => Array<{
131
+ machineId: string;
132
+ online: boolean;
133
+ observerLastSeenMs: number;
134
+ }>;
135
+ /** Whether THIS machine holds the serving lease (the sole-claimer arbiter). */
136
+ holdsLease: () => boolean;
137
+ /** All known ownership records (the registry `all()` scan). */
138
+ listOwnershipRecords: () => SessionOwnershipRecord[];
139
+ /**
140
+ * Durable last-known heartbeat for a machine (the git-synced coarseHeartbeat
141
+ * re-feed — bootstrap rule condition (b), a tie-breaker only per R-r3-3).
142
+ * null = no durable record. Wall-clock epoch-ms.
143
+ */
144
+ durableLastKnownHeartbeatMs: (machineId: string) => number | null;
145
+ /** Owner-authenticated advert set (R-r2-5b — PeerEndpointRecorder provenance
146
+ * ONLY; the git registry's lastKnownUrl is NOT acceptable input). */
147
+ advertSet: (machineId: string) => AdvertSetView;
148
+ /** Probe ONE advertised endpoint with the authenticated signed handshake.
149
+ * Resolves true iff an identity-verified response arrived within the timeout. */
150
+ probeEndpoint: (machineId: string, endpoint: {
151
+ kind: string;
152
+ url: string;
153
+ }, timeoutMs: number) => Promise<boolean>;
154
+ /** Claimant self-connectivity proof (evidence 4): a successful authenticated
155
+ * probe of a third peer, or (2-machine) verified reach of the durable lease
156
+ * authority. Resolves false on ANY uncertainty. */
157
+ selfConnectivityProof: () => Promise<boolean>;
158
+ /** Whether a durable third-party lease authority exists (git substrate). A
159
+ * 2-machine mesh WITHOUT one has its claim path DISABLED (fail closed). */
160
+ hasDurableLeaseAuthority: () => boolean;
161
+ /** Evidence-5 mirror (§2.2.5): the claimant's replicated-channel mirror. */
162
+ evidenceMirror: () => {
163
+ /** Last SUCCESSFUL sync of the replicated channel (epoch-ms), or null. */
164
+ lastSyncOkMs: number | null;
165
+ /** Newest authenticated side-effect from `machineId` on the mirror
166
+ * (placement/ownership emissions + lease/ownership renewals), or null. */
167
+ lastOwnerSideEffectMs: (machineId: string) => number | null;
168
+ };
169
+ /** Merged replicated topic-claim-annotations (per-topic budget / suspension /
170
+ * declined-demote — R-r2-4: read the REPLICATED view, never local memory). */
171
+ claimAnnotations: () => Map<number, MergedClaimAnnotation>;
172
+ /**
173
+ * Issue the force-claim through the reconciler's single CAS funnel. The
174
+ * callee re-reads the record (evidence 6) and stamps the extended nonce
175
+ * `${self}:stale-owner-release:${sessionKey}:${episodeId}:${now}` (§2.7.5).
176
+ * Returns true iff the CAS landed.
177
+ */
178
+ actForceClaim: (sessionKey: string, episodeId: string) => boolean;
179
+ /** Emit/refresh the claim annotation (suspension + budget) — level-reconciled:
180
+ * a claim that landed without its annotation is re-emitted idempotently. */
181
+ emitClaimAnnotation: (input: {
182
+ topic: number;
183
+ episodeId: string;
184
+ suspended: boolean;
185
+ claimedBy: string;
186
+ claimCount: number;
187
+ backoffUntilMs?: number;
188
+ declinedDemote?: boolean;
189
+ }) => void;
190
+ /** Attempt the working-set pull for a claimed topic (queues durably against a
191
+ * provably-dark producer — §2.4; failures never block the claim). */
192
+ pullWorkingSet: (topic: number) => void;
193
+ /** Post-claim hook (continuation disclosure + paced resume routing). */
194
+ onClaimed?: (topic: number, episodeId: string, prevOwner: string) => void;
195
+ /** Append one decision-trace line (logs/stale-owner-release.jsonl). */
196
+ trace: (entry: StaleOwnerTraceEntry) => void;
197
+ /** Raise ONE deduped attention item (episode-keyed; P17-coalesced pool-wide). */
198
+ raiseAttention: (item: StaleOwnerAttentionItem) => void;
199
+ now?: () => number;
200
+ monotonicNow?: () => number;
201
+ logger?: (msg: string) => void;
202
+ }
203
+ export interface StaleOwnerReleaseStatus {
204
+ enabled: boolean;
205
+ dryRun: boolean;
206
+ lastTickAt: string | null;
207
+ counters: {
208
+ attempts: number;
209
+ claims: number;
210
+ wouldClaims: number;
211
+ refusalsByReason: Record<StaleOwnerRefusalReason, number>;
212
+ ambiguities: number;
213
+ escalations: number;
214
+ p19GiveUps: number;
215
+ };
216
+ evidenceClasses: Record<string, number>;
217
+ probeBreaker: {
218
+ openOwners: string[];
219
+ };
220
+ lastEpisode: {
221
+ episodeId: string;
222
+ owner: string;
223
+ verdict: string;
224
+ at: string;
225
+ } | null;
226
+ openEpisodes: Array<{
227
+ episodeId: string;
228
+ owner: string;
229
+ openedAt: string;
230
+ lastVerdict: string | null;
231
+ escalated: boolean;
232
+ }>;
233
+ }
234
+ export declare class StaleOwnerReleaseEngine {
235
+ private readonly d;
236
+ private readonly episodes;
237
+ /** Observer-clock liveness: mono-ms an owner's observer-stamped lastSeen last
238
+ * ADVANCED (the FencedLease-F2 verified fold-in pattern). Absent = never
239
+ * observed since claimant boot (the R-r2-2 bootstrap case). */
240
+ private readonly lastSeenMono;
241
+ private readonly lastSeenWallReading;
242
+ private readonly bootMono;
243
+ private lastTickAtWall;
244
+ private lastEpisodeSummary;
245
+ private readonly counters;
246
+ private readonly evidenceClasses;
247
+ constructor(deps: StaleOwnerReleaseDeps);
248
+ private now;
249
+ private mono;
250
+ private log;
251
+ private trace;
252
+ private bumpEvidenceClass;
253
+ isActive(): boolean;
254
+ /**
255
+ * One evidence pass (invoked from OwnershipReconciler.tick()). Deterministic
256
+ * over injected state; probes are kicked off asynchronously and their
257
+ * verdicts consumed on LATER ticks (single-flight, memoized) — the tick
258
+ * itself never blocks on the network.
259
+ */
260
+ tick(): void;
261
+ /** Record the operator's durable "no" for an owner's current episode (§2.6). */
262
+ recordDeclinedDemote(topic: number, episodeId: string): void;
263
+ private openEpisode;
264
+ /** The §2.2 evidence bar for ONE owner. Fail CLOSED on every uncertainty. */
265
+ private classifyOwner;
266
+ private selfProofState;
267
+ private selfProofAtMono;
268
+ private kickSelfProof;
269
+ /**
270
+ * ONE reachability verdict per (owner, episode) — single-flight, TTL-memoized,
271
+ * widening backoff between attempts, P19 breaker that degrades to the
272
+ * attention item. Returns the memoized verdict, or 'error' while pending /
273
+ * breaker-open (which classifies as ambiguity upstream — fail closed).
274
+ */
275
+ private probeVerdict;
276
+ private recordVerdict;
277
+ private p19GiveUp;
278
+ /** §2.9 status surface (assembled per tick, never stale on early return). */
279
+ status(): StaleOwnerReleaseStatus;
280
+ }
281
+ /**
282
+ * §2.9 `ownershipLeaseState` derivation for /pool/placement (R-r2 minor) —
283
+ * DERIVED from record status + evidence state, per the spec's table.
284
+ */
285
+ export type OwnershipLeaseState = 'held' | 'stale' | 'releasing' | 'claimed';
286
+ export declare function deriveOwnershipLeaseState(record: Pick<SessionOwnershipRecord, 'status' | 'nonce'> | null, opts: {
287
+ evidenceEpisodeOpen: boolean;
288
+ suspensionAnnotationPresent: boolean;
289
+ }): OwnershipLeaseState | null;
290
+ //# sourceMappingURL=StaleOwnerReleaseEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaleOwnerReleaseEngine.d.ts","sourceRoot":"","sources":["../../src/core/StaleOwnerReleaseEngine.ts"],"names":[],"mappings":"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"}