instar 1.3.658 → 1.3.659
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 +52 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +14 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/SessionOwnershipRegistry.d.ts +14 -0
- package/dist/core/SessionOwnershipRegistry.d.ts.map +1 -1
- package/dist/core/SessionOwnershipRegistry.js +9 -0
- package/dist/core/SessionOwnershipRegistry.js.map +1 -1
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +6 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/types.d.ts +22 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/StrandedTopicSentinel.d.ts +102 -0
- package/dist/monitoring/StrandedTopicSentinel.d.ts.map +1 -0
- package/dist/monitoring/StrandedTopicSentinel.js +216 -0
- package/dist/monitoring/StrandedTopicSentinel.js.map +1 -0
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +17 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/monitoring/strandedTopicDecision.d.ts +96 -0
- package/dist/monitoring/strandedTopicDecision.d.ts.map +1 -0
- package/dist/monitoring/strandedTopicDecision.js +160 -0
- package/dist/monitoring/strandedTopicDecision.js.map +1 -0
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.659.md +29 -0
- package/upgrades/side-effects/stranded-inbound-self-heal.md +80 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StrandedTopicSentinel — a pure-signal, dark-gated monitoring sentinel that
|
|
3
|
+
* detects a Telegram/Slack topic whose owner machine is online-but-unable-to-
|
|
4
|
+
* serve and raises ONE aggregated attention item per (owner-machine, stranding
|
|
5
|
+
* window). It MUTATES NOTHING — no ownership CAS, no pin write, no session kill.
|
|
6
|
+
*
|
|
7
|
+
* The wedge (proven live 2026-06-24): a durable ownership record names a machine
|
|
8
|
+
* that is online-by-heartbeat but quota-walled or adapter-disconnected, while a
|
|
9
|
+
* healthy machine holds the lease. Inbound routes to the owner that cannot serve
|
|
10
|
+
* it → silently dead for that topic; outbound still flows from the healthy
|
|
11
|
+
* machine (the "my replies send but his messages never arrive" split). The
|
|
12
|
+
* existing OwnershipReconciler (Case C) only fires on a PROVABLY-DEAD owner, so a
|
|
13
|
+
* walled-but-online owner defers forever — this sentinel covers that gap.
|
|
14
|
+
*
|
|
15
|
+
* Per tick (synchronous, LLM-free, acquires NO spawn-cap slot — asserted by test
|
|
16
|
+
* so a future "ask an LLM if it's stranded" can never silently land on the
|
|
17
|
+
* monitoring hot path):
|
|
18
|
+
* 1. early no-op gates (< 2 machines / not lease-holder / pool view stale)
|
|
19
|
+
* 2. evaluate the PURE decision over the in-memory ownership cache + pool view
|
|
20
|
+
* 3. emit ONE aggregated attention item per owner stranding-window
|
|
21
|
+
* 4. emit ONE separate LOW "can't-assess" item when ≥1 online owner was
|
|
22
|
+
* skipped for missing/unparseable rich heartbeat fields (anti-blind-spot)
|
|
23
|
+
*
|
|
24
|
+
* Spec: docs/specs/stranded-inbound-self-heal.md
|
|
25
|
+
*
|
|
26
|
+
* Signal-vs-authority: PURE SIGNAL. The only output is an advisory attention
|
|
27
|
+
* item; it has no authority to misuse. (The auto-failover is a tracked v2 with
|
|
28
|
+
* its prerequisites named in the spec.)
|
|
29
|
+
*/
|
|
30
|
+
import { EventEmitter } from 'node:events';
|
|
31
|
+
import { evaluateStrandedTopics, } from './strandedTopicDecision.js';
|
|
32
|
+
const DEFAULT_CONFIG = {
|
|
33
|
+
enabled: false,
|
|
34
|
+
tickMs: 60_000,
|
|
35
|
+
dwellMs: 30_000,
|
|
36
|
+
freshnessBoundMs: 45_000,
|
|
37
|
+
clearAfterTicks: 3,
|
|
38
|
+
};
|
|
39
|
+
export class StrandedTopicSentinel extends EventEmitter {
|
|
40
|
+
deps;
|
|
41
|
+
cfg;
|
|
42
|
+
tickHandle = null;
|
|
43
|
+
/** Liveness of the tick loop (GUARD-POSTURE §2.2): 0 = never ticked. */
|
|
44
|
+
lastTickAt = 0;
|
|
45
|
+
/** Per-topic dwell anchor carried across ticks. */
|
|
46
|
+
strandedSince = {};
|
|
47
|
+
/** Per-owner consecutive-empty-tick count (window close discipline). */
|
|
48
|
+
emptyTicks = new Map();
|
|
49
|
+
/** Per-owner open stranding-window id (the dwell-epoch of the first strand). */
|
|
50
|
+
windowId = new Map();
|
|
51
|
+
constructor(deps, cfg = {}) {
|
|
52
|
+
super();
|
|
53
|
+
this.deps = deps;
|
|
54
|
+
this.cfg = { ...DEFAULT_CONFIG, ...cfg };
|
|
55
|
+
}
|
|
56
|
+
start() {
|
|
57
|
+
if (!this.cfg.enabled || this.tickHandle)
|
|
58
|
+
return;
|
|
59
|
+
this.tickHandle = setInterval(() => {
|
|
60
|
+
try {
|
|
61
|
+
this.tick();
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
// @silent-fallback-ok — pure-signal sentinel: a tick error must NEVER
|
|
65
|
+
// propagate or degrade anything (it mutates nothing). The error is
|
|
66
|
+
// surfaced as a 'tick-error' event for observability; swallowing the
|
|
67
|
+
// throw IS the correct fail-closed behavior, not a hidden degradation.
|
|
68
|
+
this.emit('tick-error', { err });
|
|
69
|
+
}
|
|
70
|
+
}, this.cfg.tickMs);
|
|
71
|
+
if (typeof this.tickHandle.unref === 'function')
|
|
72
|
+
this.tickHandle.unref();
|
|
73
|
+
}
|
|
74
|
+
stop() {
|
|
75
|
+
if (this.tickHandle) {
|
|
76
|
+
clearInterval(this.tickHandle);
|
|
77
|
+
this.tickHandle = null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** One synchronous scan pass. LLM-free, no spawn-cap slot, no peer probe. */
|
|
81
|
+
tick() {
|
|
82
|
+
const now = (this.deps.now ?? Date.now)();
|
|
83
|
+
this.lastTickAt = now;
|
|
84
|
+
if (!this.cfg.enabled)
|
|
85
|
+
return;
|
|
86
|
+
const selfId = this.deps.selfMachineId();
|
|
87
|
+
if (!selfId) {
|
|
88
|
+
// Single-machine agent (no mesh id) → strict no-op; drop any stale state.
|
|
89
|
+
this.strandedSince = {};
|
|
90
|
+
this.emptyTicks.clear();
|
|
91
|
+
this.windowId.clear();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const result = evaluateStrandedTopics({
|
|
95
|
+
records: this.deps.listOwnershipRecords(),
|
|
96
|
+
capacities: this.deps.listCapacities(),
|
|
97
|
+
selfMachineId: selfId,
|
|
98
|
+
holdsLease: this.deps.holdsLease(),
|
|
99
|
+
prevStrandedSince: this.strandedSince,
|
|
100
|
+
now,
|
|
101
|
+
cfg: { dwellMs: this.cfg.dwellMs, freshnessBoundMs: this.cfg.freshnessBoundMs },
|
|
102
|
+
resolveScope: this.deps.resolveScope,
|
|
103
|
+
});
|
|
104
|
+
// Reconcile the dwell map (delete stale keys — spec step 2).
|
|
105
|
+
this.strandedSince = result.nextStrandedSince;
|
|
106
|
+
// Group the stranded set by owner for the aggregated item.
|
|
107
|
+
const byOwner = new Map();
|
|
108
|
+
for (const s of result.strandedSet) {
|
|
109
|
+
const list = byOwner.get(s.ownerMachineId) ?? [];
|
|
110
|
+
list.push(s);
|
|
111
|
+
byOwner.set(s.ownerMachineId, list);
|
|
112
|
+
}
|
|
113
|
+
// Emit / update one item per owner with a non-empty stranded set; advance
|
|
114
|
+
// the window-close discipline for every owner we have tracked.
|
|
115
|
+
const seenOwners = new Set();
|
|
116
|
+
for (const [owner, topics] of byOwner) {
|
|
117
|
+
seenOwners.add(owner);
|
|
118
|
+
this.emptyTicks.set(owner, 0);
|
|
119
|
+
this.emitOwnerItem(owner, topics, now);
|
|
120
|
+
}
|
|
121
|
+
// Window close: an owner with no strand this tick increments its empty-tick
|
|
122
|
+
// count; after clearAfterTicks it closes (drops its window).
|
|
123
|
+
for (const owner of [...this.windowId.keys()]) {
|
|
124
|
+
if (seenOwners.has(owner))
|
|
125
|
+
continue;
|
|
126
|
+
const n = (this.emptyTicks.get(owner) ?? 0) + 1;
|
|
127
|
+
if (n >= this.cfg.clearAfterTicks) {
|
|
128
|
+
this.windowId.delete(owner);
|
|
129
|
+
this.emptyTicks.delete(owner);
|
|
130
|
+
this.emit('window-closed', { owner });
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.emptyTicks.set(owner, n);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Separate LOW "can't-assess" anti-blind-spot signal (spec step 4).
|
|
137
|
+
if (result.cantAssessCount > 0) {
|
|
138
|
+
this.emitCantAssessItem(result.cantAssessCount, now);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
emitOwnerItem(owner, topics, now) {
|
|
142
|
+
// The window-id is the FIRST qualifying strandedSince for this owner rounded
|
|
143
|
+
// to the dwell epoch; it stays the same across a partial heal so the item
|
|
144
|
+
// updates in place rather than spawning a new one (spec step 3).
|
|
145
|
+
let windowId = this.windowId.get(owner);
|
|
146
|
+
if (windowId === undefined) {
|
|
147
|
+
const earliest = Math.min(...topics.map((t) => t.strandedSince));
|
|
148
|
+
windowId = Math.floor(earliest / this.cfg.dwellMs) * this.cfg.dwellMs;
|
|
149
|
+
this.windowId.set(owner, windowId);
|
|
150
|
+
}
|
|
151
|
+
const nick = this.deps.nicknameOf?.(owner) ?? owner;
|
|
152
|
+
const reasons = new Set(topics.map((t) => t.reason));
|
|
153
|
+
const reasonText = [...reasons].join(' / ');
|
|
154
|
+
const topicList = topics.map((t) => t.sessionKey).join(', ');
|
|
155
|
+
const anyServable = topics.some((t) => t.servablePeerExists);
|
|
156
|
+
const ageMs = Math.max(0, ...topics.map((t) => t.ownerBeatAgeMs ?? 0));
|
|
157
|
+
const serveLine = anyServable
|
|
158
|
+
? 'another machine can serve them.'
|
|
159
|
+
: 'no machine can currently serve them — fleet-wide wall.';
|
|
160
|
+
const item = {
|
|
161
|
+
id: `stranded-topic:${owner}:${windowId}`,
|
|
162
|
+
title: `Inbound stranded on ${nick} (${topics.length} topic${topics.length === 1 ? '' : 's'})`,
|
|
163
|
+
summary: `Topics owned by ${nick} (${reasonText}) — inbound can't reach a servable machine.`,
|
|
164
|
+
description: `Inbound for topic(s) ${topicList} is going to ${nick}, which can't serve them ` +
|
|
165
|
+
`(${reasonText}); ${serveLine} ` +
|
|
166
|
+
`Based on ${nick}'s last full heartbeat ${Math.round(ageMs / 1000)}s ago.`,
|
|
167
|
+
category: 'agent-health',
|
|
168
|
+
priority: 'NORMAL',
|
|
169
|
+
sourceContext: `stranded-topic:${owner}`,
|
|
170
|
+
lane: 'agent-health',
|
|
171
|
+
healthKey: `stranded-topic:${owner}:${windowId}`,
|
|
172
|
+
};
|
|
173
|
+
try {
|
|
174
|
+
this.deps.raiseAttention(item);
|
|
175
|
+
this.emit('stranded', { owner, windowId, topics });
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
// @silent-fallback-ok — the attention raise is the sentinel's only output;
|
|
179
|
+
// if it throws, the correct signal-only behavior is to surface a
|
|
180
|
+
// 'raise-error' event and continue (no degradation, nothing to fall back
|
|
181
|
+
// to). Never let a raise failure crash the monitoring tick.
|
|
182
|
+
this.emit('raise-error', { err });
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
emitCantAssessItem(count, now) {
|
|
186
|
+
const windowId = Math.floor(now / this.cfg.dwellMs) * this.cfg.dwellMs;
|
|
187
|
+
const item = {
|
|
188
|
+
id: `stranded-topic-blind:${windowId}`,
|
|
189
|
+
title: `Can't assess ${count} online owner${count === 1 ? '' : 's'} for stranding`,
|
|
190
|
+
summary: `${count} online owner machine${count === 1 ? '' : 's'} skipped — rich heartbeat fields missing.`,
|
|
191
|
+
description: `I couldn't tell whether ${count} online machine${count === 1 ? ' is' : 's are'} able to serve their ` +
|
|
192
|
+
`topics because their heartbeat is missing the quota/adapter fields. This is "I can't see", not "all clear" — ` +
|
|
193
|
+
`a heartbeat/schema regression could be blinding the stranded-inbound detector.`,
|
|
194
|
+
category: 'agent-health',
|
|
195
|
+
priority: 'LOW',
|
|
196
|
+
sourceContext: 'stranded-topic-blind',
|
|
197
|
+
lane: 'agent-health',
|
|
198
|
+
healthKey: 'stranded-topic-blind',
|
|
199
|
+
};
|
|
200
|
+
try {
|
|
201
|
+
this.deps.raiseAttention(item);
|
|
202
|
+
this.emit('cant-assess', { count });
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
// @silent-fallback-ok — signal-only: surface a 'raise-error' event and
|
|
206
|
+
// continue; a raise failure must never crash the monitoring tick.
|
|
207
|
+
this.emit('raise-error', { err });
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/** Sync in-memory runtime read for the GuardRegistry (GET /guards). MUST stay
|
|
211
|
+
* a cheap property read — no I/O. */
|
|
212
|
+
guardStatus() {
|
|
213
|
+
return { enabled: this.cfg.enabled, lastTickAt: this.lastTickAt };
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=StrandedTopicSentinel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StrandedTopicSentinel.js","sourceRoot":"","sources":["../../src/monitoring/StrandedTopicSentinel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardManifest.d.ts","sourceRoot":"","sources":["../../src/monitoring/guardManifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,6FAA6F;IAC7F,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;qFAEiF;IACjF,cAAc,EAAE,OAAO,CAAC;IACxB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;wEACoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB;;;;2DAIuD;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,kBAAkB,
|
|
1
|
+
{"version":3,"file":"guardManifest.d.ts","sourceRoot":"","sources":["../../src/monitoring/guardManifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,6FAA6F;IAC7F,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;qFAEiF;IACjF,cAAc,EAAE,OAAO,CAAC;IACxB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;wEACoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB;;;;2DAIuD;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,kBAAkB,EA4gB9C,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,cAAc,EAgFvC,CAAC;AAEX,qFAAqF;AACrF,wBAAgB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAI/D;AAED,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAIhD;AAED,wBAAgB,mBAAmB,IAAI,GAAG,CAAC,MAAM,CAAC,CAEjD"}
|
|
@@ -183,6 +183,23 @@ export const GUARD_MANIFEST = [
|
|
|
183
183
|
component: 'OrphanedWorkSentinel',
|
|
184
184
|
description: 'Detects agent worktrees with uncommitted work whose owning session died + settled.',
|
|
185
185
|
},
|
|
186
|
+
{
|
|
187
|
+
// `enabled` is deliberately OMITTED from ConfigDefaults — the runtime resolves
|
|
188
|
+
// it through the developmentAgent dark-feature gate (dark on the fleet, live on
|
|
189
|
+
// a dev agent). defaultEnabled:false reflects the fleet default. expectRuntime:
|
|
190
|
+
// true REQUIRES the server-boot guardRegistry.register callsite (a pure
|
|
191
|
+
// in-memory guardStatus getter); an enabled-but-unregistered guard reports
|
|
192
|
+
// `missing`. expectedTickMs derives the on-stale threshold (5×).
|
|
193
|
+
key: 'monitoring.strandedTopicSentinel.enabled',
|
|
194
|
+
kind: 'config',
|
|
195
|
+
configPath: 'monitoring.strandedTopicSentinel.enabled',
|
|
196
|
+
defaultEnabled: false,
|
|
197
|
+
expectedTickMs: 60_000,
|
|
198
|
+
process: 'server',
|
|
199
|
+
expectRuntime: true,
|
|
200
|
+
component: 'StrandedTopicSentinel',
|
|
201
|
+
description: 'Pure-signal detector: surfaces a topic whose owner machine is online-but-unable-to-serve (quota-walled / adapter-disconnected) while a healthy machine holds the lease, so inbound is silently dead. Raises ONE aggregated attention item; MUTATES NOTHING.',
|
|
202
|
+
},
|
|
186
203
|
{
|
|
187
204
|
// tmux Event-Loop Resilience (C). `enabled` is deliberately OMITTED from
|
|
188
205
|
// ConfigDefaults — the runtime resolves it through the developmentAgent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardManifest.js","sourceRoot":"","sources":["../../src/monitoring/guardManifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"guardManifest.js","sourceRoot":"","sources":["../../src/monitoring/guardManifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* strandedTopicDecision — the PURE, unit-testable decision core of the
|
|
3
|
+
* StrandedTopicSentinel (spec docs/specs/stranded-inbound-self-heal.md).
|
|
4
|
+
*
|
|
5
|
+
* A topic is STRANDED when its durable ownership record names a machine that is
|
|
6
|
+
* online-by-heartbeat but, persistently across rich beats, cannot serve the
|
|
7
|
+
* topic's channel — quota-walled (`quotaState.blocked === true`, channel-
|
|
8
|
+
* independent) OR adapter-disconnected (`machineServesChannel(...) === 'no'`).
|
|
9
|
+
* Inbound for that topic routes to the owner that cannot serve it, so it is
|
|
10
|
+
* silently dead while outbound still flows from a healthy lease-holder.
|
|
11
|
+
*
|
|
12
|
+
* This module computes the strand verdict ONLY. It mutates nothing: no
|
|
13
|
+
* ownership CAS, no pin write, no session kill. Fail-closed on EVERY
|
|
14
|
+
* uncertainty (missing field, stale beat, underivable scope, pool view
|
|
15
|
+
* unavailable) — an uncertainty can NEVER manufacture a strand, it routes to
|
|
16
|
+
* SKIP. The quota arm carries detection on its own when the adapter arm skips.
|
|
17
|
+
*
|
|
18
|
+
* Signal-vs-authority: pure read + a verdict object. No authority to misuse.
|
|
19
|
+
*/
|
|
20
|
+
import type { SessionOwnershipRecord } from '../core/SessionOwnership.js';
|
|
21
|
+
import type { MachineCapacity } from '../core/types.js';
|
|
22
|
+
import { type ChannelScope } from '../core/machineServesChannel.js';
|
|
23
|
+
/** The reason an owner cannot serve a stranded topic. */
|
|
24
|
+
export type StrandReason = 'quota' | 'adapter';
|
|
25
|
+
/** One stranded topic in a tick's verdict. */
|
|
26
|
+
export interface StrandedTopic {
|
|
27
|
+
/** Ownership record session key (== the topic key). */
|
|
28
|
+
sessionKey: string;
|
|
29
|
+
/** The machine that owns it but cannot serve it. */
|
|
30
|
+
ownerMachineId: string;
|
|
31
|
+
/** Which arm fired. */
|
|
32
|
+
reason: StrandReason;
|
|
33
|
+
/** Epoch-ms of the FIRST qualifying beat for this topic (the dwell anchor). */
|
|
34
|
+
strandedSince: number;
|
|
35
|
+
/** Owner's last-rich-heartbeat age (ms) at evaluation — for staleness disclosure. */
|
|
36
|
+
ownerBeatAgeMs?: number;
|
|
37
|
+
/** Whether a healthy peer could serve this topic's channel (NOT a failover-safe target). */
|
|
38
|
+
servablePeerExists: boolean;
|
|
39
|
+
}
|
|
40
|
+
/** Config knobs for the decision (defaults applied by the sentinel). */
|
|
41
|
+
export interface StrandedDecisionConfig {
|
|
42
|
+
/** The unable-to-serve condition must hold ≥ this span across ≥2 beats. */
|
|
43
|
+
dwellMs: number;
|
|
44
|
+
/** A beat older than this is not a genuine rich beat → fail-closed (skip). */
|
|
45
|
+
freshnessBoundMs: number;
|
|
46
|
+
}
|
|
47
|
+
/** Per-tick inputs to the pure decision. */
|
|
48
|
+
export interface StrandedDecisionInput {
|
|
49
|
+
/** All known ownership records (the in-memory `all()` scan). */
|
|
50
|
+
records: SessionOwnershipRecord[];
|
|
51
|
+
/** The replicated machine-pool capacities (in-memory view). */
|
|
52
|
+
capacities: MachineCapacity[];
|
|
53
|
+
/** This machine's id. */
|
|
54
|
+
selfMachineId: string;
|
|
55
|
+
/** Whether this machine holds the serving lease (sole-actor gate). */
|
|
56
|
+
holdsLease: boolean;
|
|
57
|
+
/** The previous tick's per-topic strandedSince map (sessionKey → first-beat ms). */
|
|
58
|
+
prevStrandedSince: Record<string, number>;
|
|
59
|
+
/** Wall clock. */
|
|
60
|
+
now: number;
|
|
61
|
+
cfg: StrandedDecisionConfig;
|
|
62
|
+
/**
|
|
63
|
+
* Resolve a topic's ChannelScope from its owning adapter binding. Returns
|
|
64
|
+
* undefined when the scope can't be fully derived (the common Telegram case —
|
|
65
|
+
* see the spec's honesty note) → the adapter arm SKIPs and the quota arm
|
|
66
|
+
* carries detection. Optional: absent ⇒ the adapter arm never qualifies.
|
|
67
|
+
*/
|
|
68
|
+
resolveScope?: (sessionKey: string) => ChannelScope | undefined;
|
|
69
|
+
}
|
|
70
|
+
/** The pure decision's output. */
|
|
71
|
+
export interface StrandedDecisionResult {
|
|
72
|
+
/** The topics stranded THIS tick (already dwell-qualified). */
|
|
73
|
+
strandedSet: StrandedTopic[];
|
|
74
|
+
/** Count of online non-self owners SKIPPED because rich fields were missing/unparseable. */
|
|
75
|
+
cantAssessCount: number;
|
|
76
|
+
/**
|
|
77
|
+
* The reconciled strandedSince map to carry into the next tick. A key that did
|
|
78
|
+
* NOT re-qualify this tick (owner offline / record released / scope underivable)
|
|
79
|
+
* is DELETED — never left to resume counting later (spec step 2 reconciliation).
|
|
80
|
+
*/
|
|
81
|
+
nextStrandedSince: Record<string, number>;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The pure strand evaluation for one tick. Synchronous, LLM-free, no I/O.
|
|
85
|
+
*
|
|
86
|
+
* Predicate per `active`, non-self-owned record:
|
|
87
|
+
* owner online
|
|
88
|
+
* AND ( quota arm: quotaState.blocked === true [channel-independent]
|
|
89
|
+
* OR adapter arm: machineServesChannel(servesChannels, scope) === 'no'
|
|
90
|
+
* ['unknown'/undefined-scope ⇒ SKIP that arm] )
|
|
91
|
+
* AND the condition has held ≥2 consecutive rich beats spanning ≥ dwellMs.
|
|
92
|
+
*
|
|
93
|
+
* Early no-op: < 2 machines OR !holdsLease ⇒ empty (and the map is dropped).
|
|
94
|
+
*/
|
|
95
|
+
export declare function evaluateStrandedTopics(input: StrandedDecisionInput): StrandedDecisionResult;
|
|
96
|
+
//# sourceMappingURL=strandedTopicDecision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strandedTopicDecision.d.ts","sourceRoot":"","sources":["../../src/monitoring/strandedTopicDecision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,iCAAiC,CAAC;AAEzC,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/C,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,+EAA+E;IAC/E,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,wEAAwE;AACxE,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,4CAA4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,+DAA+D;IAC/D,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,UAAU,EAAE,OAAO,CAAC;IACpB,oFAAoF;IACpF,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,kBAAkB;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,sBAAsB,CAAC;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;CACjE;AAED,kCAAkC;AAClC,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,4FAA4F;IAC5F,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,sBAAsB,CA6FxB"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* strandedTopicDecision — the PURE, unit-testable decision core of the
|
|
3
|
+
* StrandedTopicSentinel (spec docs/specs/stranded-inbound-self-heal.md).
|
|
4
|
+
*
|
|
5
|
+
* A topic is STRANDED when its durable ownership record names a machine that is
|
|
6
|
+
* online-by-heartbeat but, persistently across rich beats, cannot serve the
|
|
7
|
+
* topic's channel — quota-walled (`quotaState.blocked === true`, channel-
|
|
8
|
+
* independent) OR adapter-disconnected (`machineServesChannel(...) === 'no'`).
|
|
9
|
+
* Inbound for that topic routes to the owner that cannot serve it, so it is
|
|
10
|
+
* silently dead while outbound still flows from a healthy lease-holder.
|
|
11
|
+
*
|
|
12
|
+
* This module computes the strand verdict ONLY. It mutates nothing: no
|
|
13
|
+
* ownership CAS, no pin write, no session kill. Fail-closed on EVERY
|
|
14
|
+
* uncertainty (missing field, stale beat, underivable scope, pool view
|
|
15
|
+
* unavailable) — an uncertainty can NEVER manufacture a strand, it routes to
|
|
16
|
+
* SKIP. The quota arm carries detection on its own when the adapter arm skips.
|
|
17
|
+
*
|
|
18
|
+
* Signal-vs-authority: pure read + a verdict object. No authority to misuse.
|
|
19
|
+
*/
|
|
20
|
+
import { machineServesChannel, } from '../core/machineServesChannel.js';
|
|
21
|
+
/** Is this owner's rich beat genuine (present + fresh)? */
|
|
22
|
+
function richBeatAgeMs(cap, now) {
|
|
23
|
+
if (!cap.routerReceivedAt)
|
|
24
|
+
return undefined;
|
|
25
|
+
const t = Date.parse(cap.routerReceivedAt);
|
|
26
|
+
if (!Number.isFinite(t))
|
|
27
|
+
return undefined;
|
|
28
|
+
return now - t;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The pure strand evaluation for one tick. Synchronous, LLM-free, no I/O.
|
|
32
|
+
*
|
|
33
|
+
* Predicate per `active`, non-self-owned record:
|
|
34
|
+
* owner online
|
|
35
|
+
* AND ( quota arm: quotaState.blocked === true [channel-independent]
|
|
36
|
+
* OR adapter arm: machineServesChannel(servesChannels, scope) === 'no'
|
|
37
|
+
* ['unknown'/undefined-scope ⇒ SKIP that arm] )
|
|
38
|
+
* AND the condition has held ≥2 consecutive rich beats spanning ≥ dwellMs.
|
|
39
|
+
*
|
|
40
|
+
* Early no-op: < 2 machines OR !holdsLease ⇒ empty (and the map is dropped).
|
|
41
|
+
*/
|
|
42
|
+
export function evaluateStrandedTopics(input) {
|
|
43
|
+
const { records, capacities, selfMachineId, holdsLease, prevStrandedSince, now, cfg } = input;
|
|
44
|
+
// Early no-op gates (spec step 1). A single-machine agent can't strand on a
|
|
45
|
+
// peer; a non-lease-holder is not the sole actor. Drop the dwell map so a
|
|
46
|
+
// demotion/scale-down doesn't carry stale anchors.
|
|
47
|
+
if (capacities.length < 2 || !holdsLease) {
|
|
48
|
+
return { strandedSet: [], cantAssessCount: 0, nextStrandedSince: {} };
|
|
49
|
+
}
|
|
50
|
+
const capById = new Map();
|
|
51
|
+
for (const c of capacities)
|
|
52
|
+
capById.set(c.machineId, c);
|
|
53
|
+
const strandedSet = [];
|
|
54
|
+
const nextStrandedSince = {};
|
|
55
|
+
let cantAssessCount = 0;
|
|
56
|
+
for (const rec of records) {
|
|
57
|
+
// Only active, peer-owned records are candidates.
|
|
58
|
+
if (rec.status !== 'active')
|
|
59
|
+
continue;
|
|
60
|
+
if (rec.ownerMachineId === selfMachineId)
|
|
61
|
+
continue;
|
|
62
|
+
const owner = capById.get(rec.ownerMachineId);
|
|
63
|
+
// Unknown owner / not in the pool view → can't assess → skip (fail-closed).
|
|
64
|
+
if (!owner)
|
|
65
|
+
continue;
|
|
66
|
+
// A dead owner is the existing Case C's job; this sentinel only covers the
|
|
67
|
+
// online-but-unable gap.
|
|
68
|
+
if (!owner.online)
|
|
69
|
+
continue;
|
|
70
|
+
// Require a genuine rich beat: present + fresh. A stale/undecodable beat
|
|
71
|
+
// fails closed (skip) and does NOT count toward the dwell.
|
|
72
|
+
const beatAgeMs = richBeatAgeMs(owner, now);
|
|
73
|
+
if (beatAgeMs === undefined || beatAgeMs > cfg.freshnessBoundMs)
|
|
74
|
+
continue;
|
|
75
|
+
// ── Arm (a): quota — channel-independent, the dominant incident case. ──
|
|
76
|
+
const quotaArm = owner.quotaState?.blocked === true;
|
|
77
|
+
// ── Arm (b): adapter — best-effort, channel-specific. ──
|
|
78
|
+
let adapterArm = false;
|
|
79
|
+
// A missing servesChannels on an online owner is the anti-blind-spot case:
|
|
80
|
+
// we cannot evaluate the adapter arm. If the quota arm ALSO can't fire
|
|
81
|
+
// (quotaState absent/undecided), this owner is genuinely unassessable.
|
|
82
|
+
const servesPresent = owner.servesChannels !== undefined;
|
|
83
|
+
let armBlind = false;
|
|
84
|
+
if (input.resolveScope) {
|
|
85
|
+
const scope = input.resolveScope(rec.sessionKey);
|
|
86
|
+
if (scope === undefined) {
|
|
87
|
+
// Underivable scope ⇒ SKIP this arm (not a strand).
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const serve = machineServesChannel(owner.servesChannels, scope);
|
|
91
|
+
if (serve === 'no')
|
|
92
|
+
adapterArm = true;
|
|
93
|
+
else if (serve === 'unknown') {
|
|
94
|
+
// 'unknown' (sparse/absent servesChannels) ⇒ SKIP this arm.
|
|
95
|
+
if (!servesPresent)
|
|
96
|
+
armBlind = true;
|
|
97
|
+
}
|
|
98
|
+
// 'yes' ⇒ owner can serve on this arm → not stranded here.
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const unableToServe = quotaArm || adapterArm;
|
|
102
|
+
if (!unableToServe) {
|
|
103
|
+
// Anti-blind-spot: an online owner we could NOT assess at all — quota
|
|
104
|
+
// undecided AND the adapter arm blinded by a missing servesChannels —
|
|
105
|
+
// increments the can't-assess count (spec step 4). A topic with a usable
|
|
106
|
+
// 'yes' or a derivable scope is genuinely assessed (not blind).
|
|
107
|
+
const quotaUndecided = owner.quotaState === undefined;
|
|
108
|
+
if (quotaUndecided && armBlind)
|
|
109
|
+
cantAssessCount++;
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
// ── Persistence (dwell) — anchor on the FIRST qualifying beat. ──
|
|
113
|
+
const prevSince = prevStrandedSince[rec.sessionKey];
|
|
114
|
+
const strandedSince = typeof prevSince === 'number' ? prevSince : now;
|
|
115
|
+
nextStrandedSince[rec.sessionKey] = strandedSince;
|
|
116
|
+
// The condition must have held ≥ dwellMs (which, given the ≥1 prior beat that
|
|
117
|
+
// set the anchor, spans ≥2 consecutive rich beats). A first-beat strand has
|
|
118
|
+
// dwell 0 < dwellMs → recorded in the map but NOT yet emitted.
|
|
119
|
+
if (now - strandedSince < cfg.dwellMs)
|
|
120
|
+
continue;
|
|
121
|
+
const reason = quotaArm ? 'quota' : 'adapter';
|
|
122
|
+
strandedSet.push({
|
|
123
|
+
sessionKey: rec.sessionKey,
|
|
124
|
+
ownerMachineId: rec.ownerMachineId,
|
|
125
|
+
reason,
|
|
126
|
+
strandedSince,
|
|
127
|
+
ownerBeatAgeMs: beatAgeMs,
|
|
128
|
+
servablePeerExists: servablePeerExists(rec, capacities, selfMachineId, input.resolveScope),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return { strandedSet, cantAssessCount, nextStrandedSince };
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Whether SOME online machine could serve the topic's channel — narrowly "online
|
|
135
|
+
* AND not quota-blocked AND machineServesChannel(...) === 'yes'" (the same
|
|
136
|
+
* PlacementExecutor filter, so detector + placement agree). Deliberately NOT a
|
|
137
|
+
* "safe failover target": it vets no pin policy, lease/router readiness, secrets,
|
|
138
|
+
* or session limits — v1 never fails over, so this only tells the operator
|
|
139
|
+
* "somewhere could serve this" vs "nowhere can (fleet-wide wall)". When the scope
|
|
140
|
+
* can't be derived, a not-quota-blocked online peer counts (quota-arm semantics).
|
|
141
|
+
*/
|
|
142
|
+
function servablePeerExists(rec, capacities, selfMachineId, resolveScope) {
|
|
143
|
+
const scope = resolveScope?.(rec.sessionKey);
|
|
144
|
+
for (const c of capacities) {
|
|
145
|
+
if (c.machineId === rec.ownerMachineId)
|
|
146
|
+
continue;
|
|
147
|
+
if (!c.online)
|
|
148
|
+
continue;
|
|
149
|
+
if (c.quotaState?.blocked === true)
|
|
150
|
+
continue;
|
|
151
|
+
if (scope === undefined) {
|
|
152
|
+
// No channel scope → quota-arm semantics: a healthy peer suffices.
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
if (machineServesChannel(c.servesChannels, scope) === 'yes')
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=strandedTopicDecision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strandedTopicDecision.js","sourceRoot":"","sources":["../../src/monitoring/strandedTopicDecision.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-06-25T01:38:40.089Z",
|
|
5
|
+
"instarVersion": "1.3.659",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|