instar 1.3.62 → 1.3.64

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 (64) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +132 -8
  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 +20 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  8. package/dist/core/PostUpdateMigrator.js +22 -0
  9. package/dist/core/PostUpdateMigrator.js.map +1 -1
  10. package/dist/core/ReapGuard.d.ts +79 -0
  11. package/dist/core/ReapGuard.d.ts.map +1 -0
  12. package/dist/core/ReapGuard.js +114 -0
  13. package/dist/core/ReapGuard.js.map +1 -0
  14. package/dist/core/SessionLivenessOracle.d.ts +104 -0
  15. package/dist/core/SessionLivenessOracle.d.ts.map +1 -0
  16. package/dist/core/SessionLivenessOracle.js +201 -0
  17. package/dist/core/SessionLivenessOracle.js.map +1 -0
  18. package/dist/core/SessionManager.d.ts +90 -10
  19. package/dist/core/SessionManager.d.ts.map +1 -1
  20. package/dist/core/SessionManager.js +200 -40
  21. package/dist/core/SessionManager.js.map +1 -1
  22. package/dist/core/types.d.ts +30 -0
  23. package/dist/core/types.d.ts.map +1 -1
  24. package/dist/core/types.js.map +1 -1
  25. package/dist/monitoring/ReapLog.d.ts +51 -0
  26. package/dist/monitoring/ReapLog.d.ts.map +1 -0
  27. package/dist/monitoring/ReapLog.js +82 -0
  28. package/dist/monitoring/ReapLog.js.map +1 -0
  29. package/dist/monitoring/ReapNotifier.d.ts +66 -0
  30. package/dist/monitoring/ReapNotifier.d.ts.map +1 -0
  31. package/dist/monitoring/ReapNotifier.js +112 -0
  32. package/dist/monitoring/ReapNotifier.js.map +1 -0
  33. package/dist/monitoring/RevertDetector.d.ts +52 -0
  34. package/dist/monitoring/RevertDetector.d.ts.map +1 -0
  35. package/dist/monitoring/RevertDetector.js +219 -0
  36. package/dist/monitoring/RevertDetector.js.map +1 -0
  37. package/dist/monitoring/SessionReaper.d.ts +4 -0
  38. package/dist/monitoring/SessionReaper.d.ts.map +1 -1
  39. package/dist/monitoring/SessionReaper.js +19 -42
  40. package/dist/monitoring/SessionReaper.js.map +1 -1
  41. package/dist/monitoring/StaleSessionBackstop.d.ts +89 -0
  42. package/dist/monitoring/StaleSessionBackstop.d.ts.map +1 -0
  43. package/dist/monitoring/StaleSessionBackstop.js +176 -0
  44. package/dist/monitoring/StaleSessionBackstop.js.map +1 -0
  45. package/dist/scaffold/templates.d.ts.map +1 -1
  46. package/dist/scaffold/templates.js +5 -0
  47. package/dist/scaffold/templates.js.map +1 -1
  48. package/dist/server/AgentServer.d.ts +4 -0
  49. package/dist/server/AgentServer.d.ts.map +1 -1
  50. package/dist/server/AgentServer.js +36 -0
  51. package/dist/server/AgentServer.js.map +1 -1
  52. package/dist/server/routes.d.ts +1 -0
  53. package/dist/server/routes.d.ts.map +1 -1
  54. package/dist/server/routes.js +33 -11
  55. package/dist/server/routes.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/data/builtin-manifest.json +64 -64
  58. package/src/scaffold/templates.ts +5 -0
  59. package/upgrades/1.3.61.md +9 -14
  60. package/upgrades/1.3.62.md +43 -45
  61. package/upgrades/1.3.63.md +87 -0
  62. package/upgrades/1.3.64.md +27 -0
  63. package/upgrades/side-effects/failure-learning-revert-source.md +41 -0
  64. package/upgrades/side-effects/unified-session-lifecycle-robustness.md +241 -0
@@ -0,0 +1,52 @@
1
+ import type { FailureLedger } from './FailureLedger.js';
2
+ export interface RevertInitiativeRef {
3
+ id: string;
4
+ projectId?: string;
5
+ specPath?: string;
6
+ origin?: string;
7
+ }
8
+ export interface RevertDetectorOptions {
9
+ ledger: FailureLedger;
10
+ /** Resolve the initiative owning a commit OID (InitiativeTracker.findByMergeCommit). */
11
+ resolveByCommit: (oid: string) => RevertInitiativeRef | undefined;
12
+ /** Repo dir for git reads. */
13
+ cwd: string;
14
+ /** Injectable git runner (args → stdout). Default: SafeGitExecutor.readSync. */
15
+ git?: (args: string[]) => string;
16
+ isLeaseHolder?: () => boolean;
17
+ intervalMs?: number;
18
+ /** How many recent commits to scan per tick. Default 100. */
19
+ scanWindow?: number;
20
+ onError?: (err: unknown) => void;
21
+ }
22
+ interface RevertCommit {
23
+ hash: string;
24
+ subject: string;
25
+ revertedOid: string;
26
+ }
27
+ export declare class RevertDetector {
28
+ private readonly ledger;
29
+ private readonly resolveByCommit;
30
+ private readonly cwd;
31
+ private readonly git;
32
+ private readonly isLeaseHolder;
33
+ private readonly intervalMs;
34
+ private readonly scanWindow;
35
+ private readonly onError;
36
+ private timer;
37
+ private running;
38
+ constructor(opts: RevertDetectorOptions);
39
+ start(): void;
40
+ stop(): void;
41
+ /** Parse `git log` output into revert commits with a reverted OID. Pure (testable). */
42
+ parseReverts(logOut: string): RevertCommit[];
43
+ private touchedFiles;
44
+ private isReachable;
45
+ private isRevertCommit;
46
+ /** One scan. Public for tests. Returns # ledger writes (opens + closes). */
47
+ tick(): number;
48
+ /** Mark a record resolved with a bounded ifMatch CAS retry (update() requires ifMatch). */
49
+ private closeWithRetry;
50
+ }
51
+ export {};
52
+ //# sourceMappingURL=RevertDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RevertDetector.d.ts","sourceRoot":"","sources":["../../src/monitoring/RevertDetector.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,wFAAwF;IACxF,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,mBAAmB,GAAG,SAAS,CAAC;IAClE,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAMD,UAAU,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;CAAE;AAE9E,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmD;IACnF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,qBAAqB;IAWvC,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;IAIZ,uFAAuF;IACvF,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IAc5C,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IAItB,4EAA4E;IAC5E,IAAI,IAAI,MAAM;IA+Ed,2FAA2F;IAC3F,OAAO,CAAC,cAAc;CAYvB"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * RevertDetector — Ingestion-sources spec §3.2.
3
+ *
4
+ * Scans recent commits for `Revert "…"` and records them in the FailureLedger:
5
+ * a revert is evidence a shipped change was bad enough to pull. Read-only git;
6
+ * fail-open everywhere.
7
+ *
8
+ * Deviation note (spec §3.2 said "fold into the existing reconciler commit-scan
9
+ * pass"): there is no clean periodic recent-commit scan to hook — the merge-
10
+ * unreachability reconciler is per-initiative + lazy. So this is a small
11
+ * dedicated scan on the reconciler cadence. Same outcome, isolated + testable.
12
+ *
13
+ * Security (spec §3.2/§4.1 — the highest-risk untrusted-input surface, since
14
+ * commit messages on main are attacker-authorable):
15
+ * - A revert may **auto-CLOSE** an existing open record ONLY after a cross-check:
16
+ * (1) the reverted OID is a real reachable commit, AND (2) the revert's diff
17
+ * actually intersects the reverted commit's files. A hand-written "This
18
+ * reverts commit <oid>" that fails either check NEVER auto-closes — it may
19
+ * only OPEN an `inferred` record.
20
+ * - Close is matched on initiative AND causeCommitOid (not initiative alone) so
21
+ * a minimal real revert can't close an unrelated record for the same feature.
22
+ * - Revert² (a revert of a revert / re-land) is skipped — not a failure.
23
+ * - Close goes through update()'s mandatory ifMatch with a bounded CAS retry.
24
+ * - Constant filedBy 'source:revert' (analyzer session-diversity, spec §5).
25
+ * - Loop self-exclusion (§4.3) is inert until slice 2 adds Initiative.origin.
26
+ */
27
+ import { SafeGitExecutor } from '../core/SafeGitExecutor.js';
28
+ const SEP_FIELD = '';
29
+ const SEP_REC = '';
30
+ const REVERTED_OID_RE = /This reverts commit ([0-9a-f]{7,40})/;
31
+ export class RevertDetector {
32
+ ledger;
33
+ resolveByCommit;
34
+ cwd;
35
+ git;
36
+ isLeaseHolder;
37
+ intervalMs;
38
+ scanWindow;
39
+ onError;
40
+ timer = null;
41
+ running = false;
42
+ constructor(opts) {
43
+ this.ledger = opts.ledger;
44
+ this.resolveByCommit = opts.resolveByCommit;
45
+ this.cwd = opts.cwd;
46
+ this.git = opts.git ?? ((args) => SafeGitExecutor.readSync(args, { cwd: this.cwd, operation: 'failure-learning:revert-detect' }));
47
+ this.isLeaseHolder = opts.isLeaseHolder ?? (() => true);
48
+ this.intervalMs = opts.intervalMs && opts.intervalMs > 0 ? opts.intervalMs : 6 * 60 * 60 * 1000;
49
+ this.scanWindow = opts.scanWindow && opts.scanWindow > 0 ? opts.scanWindow : 100;
50
+ this.onError = opts.onError ?? ((err) => console.warn('[revert-detector]', err));
51
+ }
52
+ start() {
53
+ if (this.timer)
54
+ return;
55
+ queueMicrotask(() => this.tick());
56
+ this.timer = setInterval(() => this.tick(), this.intervalMs);
57
+ if (typeof this.timer.unref === 'function')
58
+ this.timer.unref();
59
+ }
60
+ stop() {
61
+ if (this.timer) {
62
+ clearInterval(this.timer);
63
+ this.timer = null;
64
+ }
65
+ }
66
+ /** Parse `git log` output into revert commits with a reverted OID. Pure (testable). */
67
+ parseReverts(logOut) {
68
+ const out = [];
69
+ for (const rec of logOut.split(SEP_REC)) {
70
+ const trimmed = rec.trim();
71
+ if (!trimmed)
72
+ continue;
73
+ const [hash, subject, body] = trimmed.split(SEP_FIELD);
74
+ if (!hash || !subject || !/^Revert\b/.test(subject))
75
+ continue;
76
+ const m = REVERTED_OID_RE.exec(body || '');
77
+ if (!m)
78
+ continue;
79
+ out.push({ hash: hash.trim(), subject: subject.trim(), revertedOid: m[1] });
80
+ }
81
+ return out;
82
+ }
83
+ touchedFiles(oid) {
84
+ try {
85
+ return this.git(['show', '--name-only', '--pretty=format:', oid])
86
+ .split('\n').map((s) => s.trim()).filter(Boolean);
87
+ }
88
+ catch {
89
+ return [];
90
+ }
91
+ }
92
+ isReachable(oid) {
93
+ try {
94
+ this.git(['cat-file', '-e', `${oid}^{commit}`]);
95
+ return true;
96
+ }
97
+ catch {
98
+ return false;
99
+ }
100
+ }
101
+ isRevertCommit(oid) {
102
+ try {
103
+ return /^Revert\b/.test(this.git(['log', '-1', '--format=%s', oid]).trim());
104
+ }
105
+ catch {
106
+ return false;
107
+ }
108
+ }
109
+ /** One scan. Public for tests. Returns # ledger writes (opens + closes). */
110
+ tick() {
111
+ if (this.running)
112
+ return 0;
113
+ this.running = true;
114
+ let acted = 0;
115
+ try {
116
+ if (!this.isLeaseHolder())
117
+ return 0;
118
+ let logOut = '';
119
+ try {
120
+ logOut = this.git([
121
+ 'log', `-n`, String(this.scanWindow), '--grep=^Revert', '--regexp-ignore-case=false',
122
+ `--format=%H${SEP_FIELD}%s${SEP_FIELD}%b${SEP_REC}`,
123
+ ]);
124
+ }
125
+ catch (err) {
126
+ this.onError(err);
127
+ return 0;
128
+ }
129
+ for (const rev of this.parseReverts(logOut)) {
130
+ try {
131
+ // Revert² / re-land is not a failure.
132
+ if (this.isRevertCommit(rev.revertedOid))
133
+ continue;
134
+ // Cross-check gates auto-close (§3.2): reachable + diff intersects.
135
+ const reachable = this.isReachable(rev.revertedOid);
136
+ const revertFiles = new Set(this.touchedFiles(rev.hash));
137
+ const revertedFiles = this.touchedFiles(rev.revertedOid);
138
+ const intersects = revertedFiles.some((f) => revertFiles.has(f));
139
+ const crossCheckOk = reachable && intersects;
140
+ const mapped = this.resolveByCommit(rev.revertedOid);
141
+ if (mapped && mapped.origin === 'failure-learning-loop')
142
+ continue; // loop self-exclusion (§4.3)
143
+ // Decision tree (idempotent across ticks):
144
+ // 1. Trusted revert + matching ACTIVE original record → close it.
145
+ // 2. Trusted revert already closed an original (resolved non-revert
146
+ // record for this cause) → done, do NOT also open a forensic.
147
+ // 3. A forensic 'revert' record already exists for this OID → done.
148
+ // 4. Otherwise → open a resolved forensic record.
149
+ const activeMatch = mapped
150
+ ? this.ledger.list({ initiativeId: mapped.id })
151
+ .find((r) => r.causeCommitOid === rev.revertedOid && r.status !== 'resolved')
152
+ : undefined;
153
+ if (crossCheckOk && activeMatch) {
154
+ if (this.closeWithRetry(activeMatch.id))
155
+ acted += 1; // (1) trusted close, CAS retry
156
+ continue;
157
+ }
158
+ if (crossCheckOk && mapped && this.ledger.list({ initiativeId: mapped.id })
159
+ .some((r) => r.causeCommitOid === rev.revertedOid && r.status === 'resolved' && r.source !== 'revert')) {
160
+ continue; // (2) already trusted-closed on a prior tick — idempotent, no forensic
161
+ }
162
+ if (this.ledger.list({ source: 'revert' })
163
+ .some((r) => r.causeCommitOid === rev.revertedOid)) {
164
+ continue; // (3) forensic already recorded — idempotent
165
+ }
166
+ // (4) record the revert as a resolved forensic entry. Untrusted
167
+ // (cross-check failed) → inferred; trusted+mapped → automatic.
168
+ const attribution = crossCheckOk && mapped ? 'automatic' : 'inferred';
169
+ const rec = this.ledger.open({
170
+ source: 'revert', severity: 'medium', category: 'regression',
171
+ summary: `Reverted: ${rev.subject}`,
172
+ detail: { redacted: `revert of ${rev.revertedOid.slice(0, 12)}`, full: `${rev.hash} reverts ${rev.revertedOid}` },
173
+ causeCommitOid: rev.revertedOid,
174
+ initiativeId: crossCheckOk ? mapped?.id : undefined,
175
+ projectId: crossCheckOk ? mapped?.projectId : undefined,
176
+ specPath: crossCheckOk ? mapped?.specPath : undefined,
177
+ filedBy: 'source:revert',
178
+ attribution,
179
+ attributionConfidence: attribution === 'automatic' ? 0.9 : 0.2,
180
+ });
181
+ // Opened revert records are forensic (status 'resolved' → excluded
182
+ // from active clustering §6.1). open() inserts 'open'; flip to resolved.
183
+ if (rec) {
184
+ this.closeWithRetry(rec.id);
185
+ acted += 1;
186
+ }
187
+ }
188
+ catch (err) {
189
+ this.onError(err); // per-commit fail-open
190
+ }
191
+ }
192
+ }
193
+ catch (err) {
194
+ this.onError(err);
195
+ }
196
+ finally {
197
+ this.running = false;
198
+ }
199
+ return acted;
200
+ }
201
+ /** Mark a record resolved with a bounded ifMatch CAS retry (update() requires ifMatch). */
202
+ closeWithRetry(id) {
203
+ for (let attempt = 0; attempt < 3; attempt++) {
204
+ const cur = this.ledger.get(id);
205
+ if (!cur)
206
+ return false;
207
+ if (cur.status === 'resolved')
208
+ return true; // already closed (idempotent)
209
+ const res = this.ledger.update(id, { status: 'resolved' }, cur.version);
210
+ if (res.ok)
211
+ return true;
212
+ if (!res.ok && !res.conflict)
213
+ return false; // not-found / unrecoverable
214
+ // conflict → re-read and retry
215
+ }
216
+ return false;
217
+ }
218
+ }
219
+ //# sourceMappingURL=RevertDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RevertDetector.js","sourceRoot":"","sources":["../../src/monitoring/RevertDetector.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,10 @@ export declare class SessionReaper extends EventEmitter {
103
103
  /** Flips to true (forcing dry-run) after any ambiguous/failed reap. */
104
104
  private autoDisabled;
105
105
  private lastTickAt;
106
+ /** Shared stateless KEEP-guards (UNIFIED-SESSION-LIFECYCLE §P2). The reaper
107
+ * consults this first, then layers its stateful transcript-growth + positive-idle
108
+ * checks — so the same guard backs both the reaper and terminateSession(). */
109
+ private readonly guard;
106
110
  constructor(deps: SessionReaperDeps, cfg?: Partial<SessionReaperConfig>);
107
111
  start(): void;
108
112
  stop(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"SessionReaper.d.ts","sourceRoot":"","sources":["../../src/monitoring/SessionReaper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionReaper.d.ts","sourceRoot":"","sources":["../../src/monitoring/SessionReaper.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@
18
18
  import { EventEmitter } from 'node:events';
19
19
  import * as fs from 'node:fs';
20
20
  import * as path from 'node:path';
21
+ import { ReapGuard } from '../core/ReapGuard.js';
21
22
  import { getActivitySignal } from './frameworkActivitySignals.js';
22
23
  import { probeTranscript, transcriptDelta } from './transcriptProber.js';
23
24
  export const DEFAULT_SESSION_REAPER_CONFIG = {
@@ -48,11 +49,20 @@ export class SessionReaper extends EventEmitter {
48
49
  /** Flips to true (forcing dry-run) after any ambiguous/failed reap. */
49
50
  autoDisabled = false;
50
51
  lastTickAt = 0;
52
+ /** Shared stateless KEEP-guards (UNIFIED-SESSION-LIFECYCLE §P2). The reaper
53
+ * consults this first, then layers its stateful transcript-growth + positive-idle
54
+ * checks — so the same guard backs both the reaper and terminateSession(). */
55
+ guard;
51
56
  constructor(deps, cfg) {
52
57
  super();
53
58
  this.deps = deps;
54
59
  this.cfg = { ...DEFAULT_SESSION_REAPER_CONFIG, ...(cfg ?? {}) };
55
60
  this.now = deps.now ?? (() => Date.now());
61
+ this.guard = new ReapGuard(deps, {
62
+ minAgeMs: this.cfg.minAgeMinutes * 60_000,
63
+ recentUserWindowMs: this.cfg.recentUserWindowMinutes * 60_000,
64
+ protectOpenCommitments: this.cfg.protectOpenCommitments,
65
+ });
56
66
  }
57
67
  start() {
58
68
  if (this.timer)
@@ -114,48 +124,15 @@ export class SessionReaper extends EventEmitter {
114
124
  const frame = safeCapture(this.deps, session.tmuxSession, this.cfg.paneCaptureLines);
115
125
  const transcript = this.probe(session);
116
126
  const keep = (reason, confidence = 'high') => ({ verdict: 'keep', keptBy: reason, confidence, frame, transcript });
117
- // A. Protected set
118
- if (this.deps.protectedSessions().includes(session.tmuxSession))
119
- return keep('protected');
120
- // M. Spawn grace
121
- const ageMs = this.now() - Date.parse(session.startedAt);
122
- if (!(ageMs >= this.cfg.minAgeMinutes * 60_000))
123
- return keep('spawn-grace');
124
- // G. Recovery in flight
125
- if (this.deps.isRecoveryActive(session))
126
- return keep('recovery-in-flight');
127
- // H. Pending injection / relay lease
128
- if (this.deps.hasPendingInjection(session.tmuxSession))
129
- return keep('pending-injection');
130
- if (this.deps.isRelayLeaseActive(session.id))
131
- return keep('relay-lease');
132
- const topicId = this.deps.topicBinding(session.tmuxSession);
133
- // I. Recent user interaction (topic unresolved while bound → cannot tell → KEEP)
134
- if (topicId != null && this.deps.recentUserMessage(topicId, this.cfg.recentUserWindowMinutes * 60_000)) {
135
- return keep('recent-user-message');
136
- }
137
- // J. Open commitment on the bound topic
138
- if (this.cfg.protectOpenCommitments && topicId != null && this.deps.activeCommitmentForTopic(topicId)) {
139
- return keep('open-commitment');
140
- }
141
- // K. Active subagent
142
- if (this.deps.activeSubagentCount(session.claudeSessionId) > 0)
143
- return keep('active-subagent');
144
- // L. Structural long-work (build/autonomous) on the topic/project
145
- if (this.deps.buildOrAutonomousActive(topicId))
146
- return keep('structural-long-work');
147
- // ── Activeness (positive-evidence) ──
148
- // C. Process tree: any non-baseline child ⇒ working.
149
- if (this.deps.hasActiveProcesses(session.tmuxSession))
150
- return keep('active-process');
151
- // C(main): main-process CPU/IO delta. undefined ⇒ cannot inspect ⇒ KEEP.
152
- if (this.deps.mainProcessActive) {
153
- const mp = this.deps.mainProcessActive(session.tmuxSession);
154
- if (mp === undefined)
155
- return keep('process-uninspectable', 'low');
156
- if (mp === true)
157
- return keep('main-process-active');
158
- }
127
+ // ── Stateless KEEP-guards (§P2): protected, spawn-grace, recovery,
128
+ // pending-injection, relay-lease, recent-user, open-commitment,
129
+ // active-subagent, structural-long-work, active-process, main-process.
130
+ // Extracted to the shared ReapGuard so terminateSession() enforces the
131
+ // identical chain. Order + reasons preserved exactly. ──
132
+ const blocked = this.guard.blockedReason(session);
133
+ if (blocked)
134
+ return keep(blocked.reason, blocked.confidence);
135
+ // ── Stateful checks (stay in the reaper; need per-tick obs / captured frame) ──
159
136
  // E. Transcript growth this tick (vs last tick). 'grew' ⇒ working;
160
137
  // 'unknown' (unresolved/rotated) ⇒ KEEP.
161
138
  const prev = this.obs.get(session.id)?.lastTranscript;
@@ -1 +1 @@
1
- {"version":3,"file":"SessionReaper.js","sourceRoot":"","sources":["../../src/monitoring/SessionReaper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionReaper.js","sourceRoot":"","sources":["../../src/monitoring/SessionReaper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * StaleSessionBackstop — the unkillability backstop (UNIFIED-SESSION-LIFECYCLE §P5).
3
+ *
4
+ * Rules 1–2 of the robustness bar are deliberately conservative ("can't tell"
5
+ * never means "dead"). That creates a dual risk the round-1 review surfaced:
6
+ * (a) a session that FAKES work (a tight CPU loop, or a transcript that appends
7
+ * a heartbeat byte every few minutes) is KEPT by every killer forever;
8
+ * (b) a session stuck `indeterminate` forever leaks a slot.
9
+ * Both are resolved by a single staleness escalation — NEVER an auto-kill. After
10
+ * M minutes of no-forward-progress, or N consecutive `indeterminate` probes, ONE
11
+ * deduped Attention-queue item is raised for an operator decision
12
+ * (investigate / force-kill?). Dedupe is per EPISODE (a recovered session that
13
+ * later goes stale again raises a fresh item).
14
+ *
15
+ * Forward progress is NOT raw byte growth — a wedged session that appends a
16
+ * heartbeat byte would defeat a naive "any growth" gate forever (exactly the
17
+ * absence-of-signal inference rule 2 forbids). "Progress" = ANY of:
18
+ * (i) a MEANINGFUL transcript advance: delta ≥ progressFloorBytes AND the new
19
+ * tail differs from the prior tail (guards the heartbeat/loop case),
20
+ * (ii) main-process CPU above an idle floor,
21
+ * (iii) a change in the positive-idle / prompt state.
22
+ *
23
+ * A server-unreachable `indeterminate` raises ONE GLOBAL "tmux control-plane
24
+ * unreachable" item (not one per session) — anti-flood. Long-`indeterminate`
25
+ * sessions are flagged so the spawn-path can exclude them from the ABSOLUTE
26
+ * session cap, so a fleet of unverifiable panes can never lock a human out of
27
+ * spawning (the death-spiral cannot relocate here).
28
+ *
29
+ * Signal-only: this backstop never ends a session. It only observes and asks.
30
+ */
31
+ import type { Session } from '../core/types.js';
32
+ import type { AttentionPoster } from './sentinelWiring.js';
33
+ export type Liveness = 'alive' | 'dead' | 'indeterminate';
34
+ /** A per-tick forward-progress probe for one session. */
35
+ export interface ProgressSnapshot {
36
+ /** Whether the transcript path resolved + statted (false ⇒ ambiguous). */
37
+ transcriptResolved: boolean;
38
+ /** Transcript size in bytes (0 when unresolved). */
39
+ transcriptSize: number;
40
+ /** Hash of the last `progressFloorBytes` of the transcript (null when unresolved/short). */
41
+ transcriptTailHash: string | null;
42
+ /** Main-process CPU/IO above an idle floor. `undefined` ⇒ uninspectable. */
43
+ mainProcessActive: boolean | undefined;
44
+ /** Opaque token for the positive-idle / prompt state — ANY change ⇒ progress. */
45
+ idleStateToken: string;
46
+ }
47
+ export interface LivenessBatch {
48
+ /** False ⇒ the tmux control plane is unreachable (no authoritative snapshot). */
49
+ reachable: boolean;
50
+ /** Per-session tri-state liveness keyed by tmux session name. */
51
+ liveness: Map<string, Liveness>;
52
+ }
53
+ export interface StaleBackstopDeps {
54
+ listRunningSessions: () => Session[];
55
+ /** ONE batch probe per tick (mirrors the boot-purge single-snapshot path). */
56
+ probeLiveness: (tmuxSessions: string[]) => Promise<LivenessBatch> | LivenessBatch;
57
+ snapshot: (session: Session) => ProgressSnapshot;
58
+ raiseAttention: AttentionPoster;
59
+ /** Flag/unflag a session as long-`indeterminate` for the spawn absolute-cap exclusion. */
60
+ setLongIndeterminate?: (sessionId: string, isLong: boolean) => void;
61
+ now?: () => number;
62
+ }
63
+ export interface StaleBackstopOptions {
64
+ enabled: boolean;
65
+ tickIntervalSec: number;
66
+ unverifiableEscalateMinutes: number;
67
+ indeterminateEscalateCount: number;
68
+ progressFloorBytes: number;
69
+ }
70
+ export declare const DEFAULT_STALE_BACKSTOP_OPTIONS: StaleBackstopOptions;
71
+ export declare class StaleSessionBackstop {
72
+ private readonly deps;
73
+ private readonly opts;
74
+ private readonly now;
75
+ private timer;
76
+ private obs;
77
+ private globalUnreachable;
78
+ private globalUnreachableSeq;
79
+ constructor(deps: StaleBackstopDeps, opts?: Partial<StaleBackstopOptions>);
80
+ start(): void;
81
+ stop(): void;
82
+ private obsFor;
83
+ /** Run one observation pass. Public so the lifecycle (and tests) can drive it. */
84
+ tick(): Promise<void>;
85
+ private hasForwardProgress;
86
+ private escalateSession;
87
+ private clear;
88
+ }
89
+ //# sourceMappingURL=StaleSessionBackstop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaleSessionBackstop.d.ts","sourceRoot":"","sources":["../../src/monitoring/StaleSessionBackstop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;AAE1D,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,4FAA4F;IAC5F,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,4EAA4E;IAC5E,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,iFAAiF;IACjF,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,MAAM,OAAO,EAAE,CAAC;IACrC,8EAA8E;IAC9E,aAAa,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;IAClF,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,gBAAgB,CAAC;IACjD,cAAc,EAAE,eAAe,CAAC;IAChC,0FAA0F;IAC1F,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B,EAAE,MAAM,CAAC;IACpC,0BAA0B,EAAE,MAAM,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAM5C,CAAC;AAUF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,oBAAoB,CAAK;gBAErB,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAMzE,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,MAAM;IASd,kFAAkF;IAC5E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiF3B,OAAO,CAAC,kBAAkB;YAkBZ,eAAe;IAY7B,OAAO,CAAC,KAAK;CAGd"}