@cleocode/core 2026.8.9 → 2026.9.2

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 (171) hide show
  1. package/dist/conduit/conduit-client.d.ts.map +1 -1
  2. package/dist/conduit/conduit-client.js +10 -2
  3. package/dist/conduit/conduit-client.js.map +1 -1
  4. package/dist/dispatch/mvi-projection.d.ts +38 -0
  5. package/dist/dispatch/mvi-projection.d.ts.map +1 -1
  6. package/dist/dispatch/mvi-projection.js +189 -11
  7. package/dist/dispatch/mvi-projection.js.map +1 -1
  8. package/dist/docs/export-document.js +41 -3
  9. package/dist/docs/export-document.js.map +2 -2
  10. package/dist/doctor/acceptance-drift.d.ts +258 -0
  11. package/dist/doctor/acceptance-drift.d.ts.map +1 -0
  12. package/dist/doctor/acceptance-drift.js +366 -0
  13. package/dist/doctor/acceptance-drift.js.map +1 -0
  14. package/dist/doctor/index.d.ts +4 -0
  15. package/dist/doctor/index.d.ts.map +1 -1
  16. package/dist/doctor/index.js +2 -0
  17. package/dist/doctor/index.js.map +1 -1
  18. package/dist/doctor/legacy-reaper.d.ts +105 -0
  19. package/dist/doctor/legacy-reaper.d.ts.map +1 -0
  20. package/dist/doctor/legacy-reaper.js +151 -0
  21. package/dist/doctor/legacy-reaper.js.map +1 -0
  22. package/dist/doctor/malformed-task-ids.d.ts +111 -0
  23. package/dist/doctor/malformed-task-ids.d.ts.map +1 -0
  24. package/dist/doctor/malformed-task-ids.js +139 -0
  25. package/dist/doctor/malformed-task-ids.js.map +1 -0
  26. package/dist/doctor/nexus-schema-residency.d.ts +115 -0
  27. package/dist/doctor/nexus-schema-residency.d.ts.map +1 -0
  28. package/dist/doctor/nexus-schema-residency.js +178 -0
  29. package/dist/doctor/nexus-schema-residency.js.map +1 -0
  30. package/dist/error-registry.d.ts.map +1 -1
  31. package/dist/error-registry.js +18 -0
  32. package/dist/error-registry.js.map +1 -1
  33. package/dist/internal.d.ts +1 -0
  34. package/dist/internal.d.ts.map +1 -1
  35. package/dist/internal.js +1 -0
  36. package/dist/internal.js.map +1 -1
  37. package/dist/llm/ai-sdk-warnings.d.ts +55 -0
  38. package/dist/llm/ai-sdk-warnings.d.ts.map +1 -0
  39. package/dist/llm/ai-sdk-warnings.js +83 -0
  40. package/dist/llm/ai-sdk-warnings.js.map +1 -0
  41. package/dist/llm/model-runner.d.ts +0 -8
  42. package/dist/llm/model-runner.d.ts.map +1 -1
  43. package/dist/llm/model-runner.js +8 -0
  44. package/dist/llm/model-runner.js.map +1 -1
  45. package/dist/llm/plugin-facade.js +73 -8
  46. package/dist/llm/plugin-facade.js.map +3 -3
  47. package/dist/memory/embedding-queue.d.ts +12 -0
  48. package/dist/memory/embedding-queue.d.ts.map +1 -1
  49. package/dist/memory/embedding-queue.js +39 -5
  50. package/dist/memory/embedding-queue.js.map +1 -1
  51. package/dist/orchestrate/worktree-complete.d.ts.map +1 -1
  52. package/dist/orchestrate/worktree-complete.js +26 -0
  53. package/dist/orchestrate/worktree-complete.js.map +1 -1
  54. package/dist/output.d.ts.map +1 -1
  55. package/dist/output.js +25 -0
  56. package/dist/output.js.map +1 -1
  57. package/dist/release/pr-evidence.d.ts +13 -0
  58. package/dist/release/pr-evidence.d.ts.map +1 -1
  59. package/dist/release/pr-evidence.js +54 -1
  60. package/dist/release/pr-evidence.js.map +1 -1
  61. package/dist/render/session/briefing.d.ts.map +1 -1
  62. package/dist/render/session/briefing.js +9 -0
  63. package/dist/render/session/briefing.js.map +1 -1
  64. package/dist/selfimprove/fix-gen.js +73 -8
  65. package/dist/selfimprove/fix-gen.js.map +3 -3
  66. package/dist/sessions/briefing.d.ts +13 -0
  67. package/dist/sessions/briefing.d.ts.map +1 -1
  68. package/dist/sessions/briefing.js +64 -7
  69. package/dist/sessions/briefing.js.map +1 -1
  70. package/dist/sessions/handoff.d.ts +32 -4
  71. package/dist/sessions/handoff.d.ts.map +1 -1
  72. package/dist/sessions/handoff.js +7 -7
  73. package/dist/sessions/handoff.js.map +1 -1
  74. package/dist/shutdown-deadline.d.ts +144 -0
  75. package/dist/shutdown-deadline.d.ts.map +1 -0
  76. package/dist/shutdown-deadline.js +187 -0
  77. package/dist/shutdown-deadline.js.map +1 -0
  78. package/dist/shutdown.d.ts +5 -2
  79. package/dist/shutdown.d.ts.map +1 -1
  80. package/dist/shutdown.js +19 -14
  81. package/dist/shutdown.js.map +1 -1
  82. package/dist/spawn/branch-lock.d.ts.map +1 -1
  83. package/dist/spawn/branch-lock.js +33 -0
  84. package/dist/spawn/branch-lock.js.map +1 -1
  85. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  86. package/dist/store/sqlite-data-accessor.js +14 -0
  87. package/dist/store/sqlite-data-accessor.js.map +1 -1
  88. package/dist/store/tasks-sqlite.d.ts.map +1 -1
  89. package/dist/store/tasks-sqlite.js +16 -1
  90. package/dist/store/tasks-sqlite.js.map +1 -1
  91. package/dist/tasks/ac-immutability.d.ts.map +1 -1
  92. package/dist/tasks/ac-immutability.js +36 -0
  93. package/dist/tasks/ac-immutability.js.map +1 -1
  94. package/dist/tasks/add.d.ts +18 -0
  95. package/dist/tasks/add.d.ts.map +1 -1
  96. package/dist/tasks/add.js +28 -5
  97. package/dist/tasks/add.js.map +1 -1
  98. package/dist/tasks/axis-filters.d.ts +53 -0
  99. package/dist/tasks/axis-filters.d.ts.map +1 -0
  100. package/dist/tasks/axis-filters.js +77 -0
  101. package/dist/tasks/axis-filters.js.map +1 -0
  102. package/dist/tasks/complete.d.ts.map +1 -1
  103. package/dist/tasks/complete.js +10 -1
  104. package/dist/tasks/complete.js.map +1 -1
  105. package/dist/tasks/duplicate-detector.d.ts +67 -14
  106. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  107. package/dist/tasks/duplicate-detector.js +197 -54
  108. package/dist/tasks/duplicate-detector.js.map +1 -1
  109. package/dist/tasks/evidence.d.ts +139 -0
  110. package/dist/tasks/evidence.d.ts.map +1 -1
  111. package/dist/tasks/evidence.js +321 -26
  112. package/dist/tasks/evidence.js.map +1 -1
  113. package/dist/tasks/find.d.ts.map +1 -1
  114. package/dist/tasks/find.js +9 -2
  115. package/dist/tasks/find.js.map +1 -1
  116. package/dist/tasks/gate-runner.d.ts.map +1 -1
  117. package/dist/tasks/gate-runner.js +25 -4
  118. package/dist/tasks/gate-runner.js.map +1 -1
  119. package/dist/tasks/heavy-tool-env.d.ts +20 -0
  120. package/dist/tasks/heavy-tool-env.d.ts.map +1 -1
  121. package/dist/tasks/heavy-tool-env.js +74 -4
  122. package/dist/tasks/heavy-tool-env.js.map +1 -1
  123. package/dist/tasks/heavy-tool-limit.d.ts +160 -0
  124. package/dist/tasks/heavy-tool-limit.d.ts.map +1 -0
  125. package/dist/tasks/heavy-tool-limit.js +231 -0
  126. package/dist/tasks/heavy-tool-limit.js.map +1 -0
  127. package/dist/tasks/index.d.ts +1 -1
  128. package/dist/tasks/index.d.ts.map +1 -1
  129. package/dist/tasks/index.js +1 -1
  130. package/dist/tasks/index.js.map +1 -1
  131. package/dist/tasks/infer-add-params.d.ts +28 -0
  132. package/dist/tasks/infer-add-params.d.ts.map +1 -1
  133. package/dist/tasks/infer-add-params.js +96 -6
  134. package/dist/tasks/infer-add-params.js.map +1 -1
  135. package/dist/tasks/list.d.ts +30 -1
  136. package/dist/tasks/list.d.ts.map +1 -1
  137. package/dist/tasks/list.js +14 -0
  138. package/dist/tasks/list.js.map +1 -1
  139. package/dist/tasks/ops.d.ts +4 -0
  140. package/dist/tasks/ops.d.ts.map +1 -1
  141. package/dist/tasks/ops.js +2 -0
  142. package/dist/tasks/ops.js.map +1 -1
  143. package/dist/tasks/session-scope.d.ts +51 -4
  144. package/dist/tasks/session-scope.d.ts.map +1 -1
  145. package/dist/tasks/session-scope.js +68 -10
  146. package/dist/tasks/session-scope.js.map +1 -1
  147. package/dist/tasks/tool-cache.d.ts +130 -9
  148. package/dist/tasks/tool-cache.d.ts.map +1 -1
  149. package/dist/tasks/tool-cache.js +172 -22
  150. package/dist/tasks/tool-cache.js.map +1 -1
  151. package/dist/tasks/tool-semaphore.d.ts +91 -0
  152. package/dist/tasks/tool-semaphore.d.ts.map +1 -1
  153. package/dist/tasks/tool-semaphore.js +203 -14
  154. package/dist/tasks/tool-semaphore.js.map +1 -1
  155. package/dist/validation/doctor/checks.d.ts +64 -0
  156. package/dist/validation/doctor/checks.d.ts.map +1 -1
  157. package/dist/validation/doctor/checks.js +249 -0
  158. package/dist/validation/doctor/checks.js.map +1 -1
  159. package/dist/validation/engine-ops.d.ts.map +1 -1
  160. package/dist/validation/engine-ops.js +41 -5
  161. package/dist/validation/engine-ops.js.map +1 -1
  162. package/package.json +13 -13
  163. package/templates/CLEO-INJECTION.md +28 -44
  164. package/dist/backfill/adr-backfill-walker.d.ts +0 -57
  165. package/dist/backfill/adr-backfill-walker.d.ts.map +0 -1
  166. package/dist/backfill/adr-backfill-walker.js +0 -631
  167. package/dist/backfill/adr-backfill-walker.js.map +0 -1
  168. package/dist/tasks/graph-rag.d.ts +0 -49
  169. package/dist/tasks/graph-rag.d.ts.map +0 -1
  170. package/dist/tasks/graph-rag.js +0 -328
  171. package/dist/tasks/graph-rag.js.map +0 -1
@@ -37,6 +37,7 @@ import { ExitCode } from '@cleocode/contracts';
37
37
  import { CleoError } from '../errors.js';
38
38
  import { withLock } from '../store/lock.js';
39
39
  import { heavyToolEnv } from './heavy-tool-env.js';
40
+ import { withMemoryLimit } from './heavy-tool-limit.js';
40
41
  import { acquireGlobalSlot } from './tool-semaphore.js';
41
42
  // ---------------------------------------------------------------------------
42
43
  // Wall-clock deadline resolution (T12105 / gh#1193)
@@ -53,6 +54,64 @@ import { acquireGlobalSlot } from './tool-semaphore.js';
53
54
  * @task T12105
54
55
  */
55
56
  export const DEFAULT_SPAWN_TIMEOUT_MS = 300_000;
57
+ /**
58
+ * Wall-clock deadline for the HEAVY tool classes (`test`, `build`), in ms.
59
+ *
60
+ * ## Why these need their own default (gh#1221)
61
+ *
62
+ * A test suite is categorically not a linter. The single 300s default was
63
+ * below a real monorepo suite — measured ~10 min in the gh#1221 report — so
64
+ * EVERY run was killed before finishing, and the timeout path deliberately
65
+ * caches nothing (T12025, correct: an unfinished run is not a result). The
66
+ * cache could therefore never hit, not because the key moved but because no
67
+ * entry was ever produced, on a path that always fired. Each attempt still ran
68
+ * the suite at full parallelism for the full 300s before discarding it — the
69
+ * worst possible shape, and the load multiplier that wedged shared hosts.
70
+ *
71
+ * 30 min is 3x the measured ~10 min suite, so a project whose suite triples
72
+ * still completes on the default rather than discovering an env var after
73
+ * burning 5 CPU-minutes to learn its name. It is a ceiling on a pathological
74
+ * hang, not a budget anyone should plan to use.
75
+ *
76
+ * ## Why a longer rope is safe now, and was not before
77
+ *
78
+ * Raising a deadline means a runaway suite runs LONGER before anything stops
79
+ * it, and the 300s kill was accidentally acting as a crude memory
80
+ * circuit-breaker. Heavy tools are now spawned inside a memory-bounded scope
81
+ * with swap denied (T12116), so duration no longer converts into unbounded
82
+ * host memory: a runaway dies inside its own boundary and CLEO reports a
83
+ * failed run. A failed test run is a result; a frozen workstation is not.
84
+ *
85
+ * `lint`, `typecheck`, `audit` and `security-scan` deliberately do NOT inherit
86
+ * this — they are single-process and CPU-bound, and a lint that has run for 5
87
+ * minutes is hung, not busy.
88
+ *
89
+ * @task T12126 (gh#1221)
90
+ */
91
+ export const HEAVY_TOOL_SPAWN_TIMEOUT_MS = 1_800_000;
92
+ /**
93
+ * Canonical tools that get {@link HEAVY_TOOL_SPAWN_TIMEOUT_MS}.
94
+ *
95
+ * Matches the memory-bound heavy classes rather than being a second, separate
96
+ * opinion about which tools are expensive — the two must not drift.
97
+ *
98
+ * @task T12126 (gh#1221)
99
+ */
100
+ const HEAVY_TIMEOUT_TOOLS = new Set(['test', 'build']);
101
+ /**
102
+ * The default wall-clock deadline for a canonical tool, before any env
103
+ * override.
104
+ *
105
+ * @param canonical - Canonical tool name from the resolver.
106
+ * @returns Deadline in milliseconds.
107
+ *
108
+ * @task T12126 (gh#1221)
109
+ */
110
+ export function defaultSpawnTimeoutMs(canonical) {
111
+ return HEAVY_TIMEOUT_TOOLS.has(canonical)
112
+ ? HEAVY_TOOL_SPAWN_TIMEOUT_MS
113
+ : DEFAULT_SPAWN_TIMEOUT_MS;
114
+ }
56
115
  /**
57
116
  * Resolve the wall-clock child-process deadline for a canonical tool.
58
117
  *
@@ -76,19 +135,20 @@ export const DEFAULT_SPAWN_TIMEOUT_MS = 300_000;
76
135
  */
77
136
  export function resolveSpawnTimeoutMs(canonical, env = process.env) {
78
137
  const envKey = `CLEO_TOOL_TIMEOUT_${canonical.toUpperCase().replace(/-/g, '_')}`;
138
+ const fallback = defaultSpawnTimeoutMs(canonical);
79
139
  const raw = env[envKey];
80
140
  if (raw === undefined || raw.trim() === '')
81
- return DEFAULT_SPAWN_TIMEOUT_MS;
141
+ return fallback;
82
142
  const trimmed = raw.trim();
83
143
  if (!/^\d+$/.test(trimmed)) {
84
144
  throw new CleoError(ExitCode.VALIDATION_ERROR, `${envKey} must be a positive integer (milliseconds), got "${raw}".`, {
85
- fix: `Set ${envKey} to a millisecond value such as 600000 (10 min), or unset it to use the ${DEFAULT_SPAWN_TIMEOUT_MS}ms default.`,
145
+ fix: `Set ${envKey} to a millisecond value such as 600000 (10 min), or unset it to use the ${fallback}ms default.`,
86
146
  });
87
147
  }
88
148
  const parsed = Number.parseInt(trimmed, 10);
89
149
  if (parsed <= 0) {
90
150
  throw new CleoError(ExitCode.VALIDATION_ERROR, `${envKey} must be greater than zero, got ${parsed}.`, {
91
- fix: `Set ${envKey} to a positive millisecond value such as 600000 (10 min), or unset it to use the ${DEFAULT_SPAWN_TIMEOUT_MS}ms default.`,
151
+ fix: `Set ${envKey} to a positive millisecond value such as 600000 (10 min), or unset it to use the ${fallback}ms default.`,
92
152
  });
93
153
  }
94
154
  return parsed;
@@ -262,15 +322,27 @@ function spawnCmd(cmd, args, cwd, spawnTimeoutMs, envOverlay) {
262
322
  if (forceKillTimer !== undefined)
263
323
  clearTimeout(forceKillTimer);
264
324
  };
265
- const finalise = (exitCode) => {
325
+ const finalise = (exitCode, signal) => {
266
326
  clearTimers();
267
- resolve({ exitCode, stdout: stdoutBuf.toString(), stderr: stderrBuf.toString(), timedOut });
327
+ resolve({
328
+ exitCode,
329
+ signal,
330
+ stdout: stdoutBuf.toString(),
331
+ stderr: stderrBuf.toString(),
332
+ timedOut,
333
+ });
268
334
  };
335
+ // A genuine pre-start failure: ENOENT, EACCES, EAGAIN. No signal, no code.
269
336
  child.on('error', () => {
270
- finalise(null);
337
+ finalise(null, null);
271
338
  });
272
- child.on('close', (code) => {
273
- finalise(code);
339
+ // gh#1381: `close` passes `(code, signal)` and exactly one is non-null.
340
+ // The signal arm is the OOM case — `withMemoryLimit` runs `test`/`build`
341
+ // inside a systemd scope with `MemorySwapMax=0`, so the kernel SIGKILLs
342
+ // the whole cgroup when the suite exceeds the ceiling. Dropping `signal`
343
+ // here is what made that indistinguishable from a missing binary.
344
+ child.on('close', (code, signal) => {
345
+ finalise(code, signal);
274
346
  });
275
347
  if (spawnTimeoutMs !== undefined && spawnTimeoutMs > 0) {
276
348
  deadlineTimer = setTimeout(() => {
@@ -300,25 +372,51 @@ export async function captureHead(projectRoot) {
300
372
  return r.stdout.trim() || null;
301
373
  }
302
374
  /**
303
- * Capture a fingerprint of the uncommitted tree by sha256-hashing
304
- * `git status --porcelain=v1`. Returns `null` for non-git roots.
375
+ * Capture a fingerprint of the uncommitted TRACKED tree by sha256-hashing
376
+ * `git status --porcelain=v1 --untracked-files=no`. Returns `null` for
377
+ * non-git roots.
305
378
  *
306
379
  * Two repos with identical tracked content but different uncommitted edits
307
- * produce different fingerprints — so editing a file before re-verifying
308
- * always invalidates the cache for tools sensitive to that file.
380
+ * produce different fingerprints — so editing a tracked file before
381
+ * re-verifying always invalidates the cache for tools sensitive to that file.
382
+ *
383
+ * ## Why untracked files are excluded (gh#1221)
384
+ *
385
+ * The fingerprint is captured BEFORE the tool spawns and is the key the
386
+ * result is stored under. When untracked files were included, a tool that
387
+ * emitted any untracked artifact changed the fingerprint that the NEXT call
388
+ * computes — so the tool invalidated its own cache entry simply by running,
389
+ * and the cache could never hit. This is not hypothetical or
390
+ * multi-agent-specific: in this repo `coverage/`, `.vitest/` and `*.log` are
391
+ * not gitignored, so a single suite run is enough. A one-line marker file is
392
+ * enough.
393
+ *
394
+ * Excluding untracked files fixes that at the root, rather than maintaining a
395
+ * per-project list of build-output paths that rots as tooling changes.
396
+ *
397
+ * TRADEOFF (deliberate): a brand-new UNTRACKED source or test file no longer
398
+ * invalidates the cache either, so `cleo verify` can return a cached pass
399
+ * that did not exercise it. Commit the file (HEAD moves, the key moves) or
400
+ * force a fresh run with {@link RunToolOptions.bypassCache} — surfaced as
401
+ * `CLEO_EVIDENCE_FRESH=1`. The alternative — a maintained exclude list — trades
402
+ * a loud, documented staleness for a silent, per-project one.
309
403
  *
310
404
  * The cache directory itself (`.cleo/cache/`) and other CLEO-managed runtime
311
- * state (`.cleo/tasks.db`, `.cleo/brain.db`, journal/log files) are excluded
312
- * from the fingerprint via pathspec. Without this exclusion the cache would
313
- * invalidate itself on every write — call #1 writes its entry, call #2 sees
314
- * the new file in `git status` and records a different fingerprint.
405
+ * state (`.cleo/tasks.db`, `.cleo/brain.db`, journal/log files) remain
406
+ * excluded via pathspec so a tracked-and-modified CLEO file cannot reintroduce
407
+ * the same self-invalidation.
315
408
  *
316
409
  * @task T1534
410
+ * @task T12112 (gh#1221)
317
411
  */
318
412
  export async function captureDirtyFingerprint(projectRoot) {
319
413
  const r = await spawnCmd('git', [
320
414
  'status',
321
415
  '--porcelain=v1',
416
+ // gh#1221: untracked files are the tool's own output as often as they
417
+ // are the operator's input; including them made every tool invalidate
418
+ // its own cache entry. See the docblock TRADEOFF note.
419
+ '--untracked-files=no',
322
420
  '--',
323
421
  '.',
324
422
  ':(exclude).cleo/cache',
@@ -376,6 +474,17 @@ export function readCacheEntry(projectRoot, key) {
376
474
  // a miss until the lock holder writes the entry.
377
475
  if (parsed.pending === true)
378
476
  return null;
477
+ // gh#1380: an entry whose run produced no exit code is not a result — it
478
+ // records that we do not know what happened. Refusing it on READ as well
479
+ // as declining to write it retires the entries already persisted by
480
+ // <= 2026.9.1, which cannot clean themselves up: when the tool ran off a
481
+ // non-git root, `head` and `dirtyFingerprint` are both null, they are part
482
+ // of the cache key, and a key that cannot change can never be invalidated
483
+ // by a commit or an edit. One signal-killed run would otherwise serve a
484
+ // cached "binary missing" forever, without ever spawning again — a
485
+ // permanent red that no amount of correct work clears.
486
+ if (parsed.exitCode === null || parsed.exitCode === undefined)
487
+ return null;
379
488
  return parsed;
380
489
  }
381
490
  catch {
@@ -428,21 +537,34 @@ export async function runToolCached(command, projectRoot, opts = {}) {
428
537
  // T12105 / gh#1193: an explicit opts value (tests) wins; otherwise the
429
538
  // CLEO_TOOL_TIMEOUT_<CANONICAL> env override, else the 5 min default.
430
539
  const spawnTimeoutMs = opts.spawnTimeoutMs ?? resolveSpawnTimeoutMs(command.canonical);
431
- const head = await captureHead(projectRoot);
432
- const dirtyFingerprint = await captureDirtyFingerprint(projectRoot);
540
+ // gh#1220/#1226/#1230: the tool runs in — and is fingerprinted against —
541
+ // the caller's tree, which is NOT necessarily the store root. The cache
542
+ // ENTRY still lives under `projectRoot` so every worktree shares one cache;
543
+ // that is sound because the key is content-addressed (HEAD + tracked
544
+ // fingerprint), so two trees only collide when they hold the same code.
545
+ const executionRoot = opts.executionRoot ?? projectRoot;
546
+ // gh#1221 escape hatch. The fingerprint covers TRACKED content only, so an
547
+ // uncommitted NEW file does not invalidate the cache; this is the
548
+ // documented way to force a measured run without committing first.
549
+ // An explicit option always wins over the env var.
550
+ const bypassCache = opts.bypassCache ?? process.env['CLEO_EVIDENCE_FRESH'] === '1';
551
+ const head = await captureHead(executionRoot);
552
+ const dirtyFingerprint = await captureDirtyFingerprint(executionRoot);
433
553
  const key = computeCacheKey(command, head, dirtyFingerprint);
434
554
  // Fast path — fresh cache hit
435
- if (!opts.bypassCache) {
555
+ if (!bypassCache) {
436
556
  const existing = readCacheEntry(projectRoot, key);
437
557
  if (existing) {
438
558
  return {
439
559
  exitCode: existing.exitCode,
560
+ signal: existing.signal ?? null,
440
561
  stdoutTail: existing.stdoutTail,
441
562
  stderrTail: existing.stderrTail,
442
563
  durationMs: existing.durationMs,
443
564
  cacheHit: true,
444
565
  timedOut: false,
445
566
  lockBusy: false,
567
+ executionRoot,
446
568
  entry: existing,
447
569
  };
448
570
  }
@@ -472,24 +594,35 @@ export async function runToolCached(command, projectRoot, opts = {}) {
472
594
  return await withLock(cachePath, async () => {
473
595
  // Inside the lock — re-check the cache. If another process beat us to
474
596
  // it, prefer its result.
475
- if (!opts.bypassCache) {
597
+ if (!bypassCache) {
476
598
  const fresh = readCacheEntry(projectRoot, key);
477
599
  if (fresh) {
478
600
  return {
479
601
  exitCode: fresh.exitCode,
602
+ signal: fresh.signal ?? null,
480
603
  stdoutTail: fresh.stdoutTail,
481
604
  stderrTail: fresh.stderrTail,
482
605
  durationMs: fresh.durationMs,
483
606
  cacheHit: true,
484
607
  timedOut: false,
485
608
  lockBusy: false,
609
+ executionRoot,
486
610
  entry: fresh,
487
611
  };
488
612
  }
489
613
  }
490
614
  // Spawn the tool ourselves.
615
+ //
616
+ // T12116: `test` and `build` run inside a transient systemd scope with
617
+ // a hard `MemoryMax` and `MemorySwapMax=0`, so the kernel bounds the
618
+ // ENTIRE process tree — a `pnpm -r` fan-out into fifteen packages is
619
+ // still one cgroup, which is the multiplier the semaphore could not
620
+ // see. Denying swap is the point: the failure this guards against was
621
+ // a throttle-and-thrash host freeze, not an OOM kill. Degrades to an
622
+ // unwrapped spawn off Linux or without a user systemd manager.
623
+ const limited = withMemoryLimit(command.canonical, command.cmd, command.args);
491
624
  const startedAt = Date.now();
492
- const result = await spawnCmd(command.cmd, command.args, projectRoot, spawnTimeoutMs, heavyToolEnv(command.canonical));
625
+ const result = await spawnCmd(limited.cmd, [...limited.args], executionRoot, spawnTimeoutMs, heavyToolEnv(command.canonical));
493
626
  const durationMs = Date.now() - startedAt;
494
627
  // T12025: when the child exceeded its wall-clock deadline, do NOT
495
628
  // persist a cache entry — the run produced no real result. The lock
@@ -498,12 +631,14 @@ export async function runToolCached(command, projectRoot, opts = {}) {
498
631
  if (result.timedOut) {
499
632
  return {
500
633
  exitCode: result.exitCode,
634
+ signal: result.signal,
501
635
  stdoutTail: tailString(result.stdout, tailBytes),
502
636
  stderrTail: tailString(result.stderr, tailBytes),
503
637
  durationMs,
504
638
  cacheHit: false,
505
639
  timedOut: true,
506
640
  lockBusy: false,
641
+ executionRoot,
507
642
  entry: {
508
643
  schemaVersion: 1,
509
644
  key,
@@ -515,6 +650,7 @@ export async function runToolCached(command, projectRoot, opts = {}) {
515
650
  head,
516
651
  dirtyFingerprint,
517
652
  exitCode: null,
653
+ signal: result.signal,
518
654
  stdoutTail: '',
519
655
  stderrTail: '',
520
656
  durationMs,
@@ -533,20 +669,32 @@ export async function runToolCached(command, projectRoot, opts = {}) {
533
669
  head,
534
670
  dirtyFingerprint,
535
671
  exitCode: result.exitCode,
672
+ signal: result.signal,
536
673
  stdoutTail: tailString(result.stdout, tailBytes),
537
674
  stderrTail: tailString(result.stderr, tailBytes),
538
675
  durationMs,
539
676
  capturedAt: new Date().toISOString(),
540
677
  };
541
- writeCacheEntry(projectRoot, entry);
678
+ // gh#1380: `exitCode === null` means the process produced no exit code —
679
+ // it was killed by a signal, or never started. Either way we do not know
680
+ // whether the tool would have passed, and an unknown must never be
681
+ // cached. The `timedOut` branch above already returns without writing
682
+ // for exactly this reason; a signal kill that is NOT a CLEO timeout —
683
+ // the memory-scope OOM in gh#1381 — had no equivalent guard and fell
684
+ // through to here.
685
+ if (entry.exitCode !== null) {
686
+ writeCacheEntry(projectRoot, entry);
687
+ }
542
688
  return {
543
689
  exitCode: entry.exitCode,
690
+ signal: entry.signal ?? null,
544
691
  stdoutTail: entry.stdoutTail,
545
692
  stderrTail: entry.stderrTail,
546
693
  durationMs: entry.durationMs,
547
694
  cacheHit: false,
548
695
  timedOut: false,
549
696
  lockBusy: false,
697
+ executionRoot,
550
698
  entry,
551
699
  };
552
700
  }, { stale: lockStaleMs, retries: 3 });
@@ -563,12 +711,14 @@ export async function runToolCached(command, projectRoot, opts = {}) {
563
711
  if (causeCode === 'ELOCKED') {
564
712
  return {
565
713
  exitCode: null,
714
+ signal: null,
566
715
  stdoutTail: '',
567
716
  stderrTail: '',
568
717
  durationMs: 0,
569
718
  cacheHit: false,
570
719
  timedOut: false,
571
720
  lockBusy: true,
721
+ executionRoot,
572
722
  entry: {
573
723
  schemaVersion: 1,
574
724
  key,
@@ -1 +1 @@
1
- {"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../../src/tasks/tool-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../../src/tasks/tool-cache.ts"],"names":[],"mappings":"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"}
@@ -198,6 +198,97 @@ export declare function pressureScaleSlots(canonical: CanonicalTool, staticMax:
198
198
  * @task T1534
199
199
  */
200
200
  export declare function semaphoreDir(canonical: CanonicalTool): string;
201
+ /**
202
+ * Identity of the process currently holding a semaphore slot.
203
+ *
204
+ * `proper-lockfile` decides staleness from the lock's **mtime**, which it
205
+ * refreshes on a timer while the holder lives. That makes a slot held by a
206
+ * process which died without releasing indistinguishable from one held by a
207
+ * legitimately long-running suite: both simply wait out `staleMs` (10 min by
208
+ * default). On a box where evidence runs are frequent, one orphan therefore
209
+ * blocks every later verify for ten minutes with `E_EVIDENCE_TOOL_BUSY` and
210
+ * no indication of who is holding it (gh#1222).
211
+ *
212
+ * Recording the holder turns that into a decidable question: a slot whose
213
+ * owner is a dead pid on this host is orphaned NOW, not in ten minutes, and
214
+ * the operator can be told which process to look at.
215
+ *
216
+ * @task T12113 (gh#1222)
217
+ */
218
+ export interface SlotHolder {
219
+ /** OS process id of the holder. */
220
+ pid: number;
221
+ /** Host that pid is meaningful on. Liveness is only decided on a match. */
222
+ host: string;
223
+ /** ISO 8601 timestamp of acquisition — lets the operator judge "stuck vs slow". */
224
+ acquiredAt: string;
225
+ /** Canonical tool the slot belongs to. */
226
+ canonical: string;
227
+ /** Slot file this holder record describes. */
228
+ slot: string;
229
+ }
230
+ /**
231
+ * Read a slot's holder record. Returns `null` when absent or unparseable —
232
+ * both mean "we cannot say who holds this", which is treated as alive.
233
+ *
234
+ * @internal
235
+ * @task T12113 (gh#1222)
236
+ */
237
+ export declare function readHolder(slotPath: string): SlotHolder | null;
238
+ /**
239
+ * Is a slot's recorded holder still running?
240
+ *
241
+ * Fails SAFE: an unknown holder, a holder on another host, or any error is
242
+ * reported as ALIVE. Reaping a live holder's slot would let two heavy suites
243
+ * run against one bound — the exact oversubscription the semaphore exists to
244
+ * prevent — so uncertainty must never authorise a reap.
245
+ *
246
+ * @param holder - Holder record, or `null` when none could be read.
247
+ * @returns `true` when the slot must be treated as legitimately held.
248
+ *
249
+ * @task T12113 (gh#1222)
250
+ */
251
+ export declare function isHolderAlive(holder: SlotHolder | null): boolean;
252
+ /**
253
+ * Release a slot whose recorded holder is gone.
254
+ *
255
+ * Removes `proper-lockfile`'s lock directory directly — the same thing its own
256
+ * stale recovery does, but decided by process liveness instead of by a 10
257
+ * minute mtime timeout.
258
+ *
259
+ * @param slotPath - Slot lock file path.
260
+ * @returns `true` when an orphaned slot was actually reaped.
261
+ *
262
+ * @task T12113 (gh#1222)
263
+ */
264
+ export declare function reapSlotIfOrphaned(slotPath: string): boolean;
265
+ /**
266
+ * Enumerate every slot of a canonical tool with its holder and liveness.
267
+ *
268
+ * Backs the operator-facing lock inspection surface requested in gh#1222 —
269
+ * "who is holding this, and is it even alive?" — which previously required
270
+ * reading `~/.local/share/cleo/locks/` by hand.
271
+ *
272
+ * @param canonical - Canonical tool name.
273
+ * @returns One row per existing slot file.
274
+ *
275
+ * @task T12113 (gh#1222)
276
+ */
277
+ export declare function listSlotHolders(canonical: CanonicalTool): Array<{
278
+ slot: string;
279
+ held: boolean;
280
+ holder: SlotHolder | null;
281
+ alive: boolean;
282
+ }>;
283
+ /**
284
+ * Reap every orphaned slot of a canonical tool.
285
+ *
286
+ * @param canonical - Canonical tool name.
287
+ * @returns Paths of the slots actually reaped.
288
+ *
289
+ * @task T12113 (gh#1222)
290
+ */
291
+ export declare function reapOrphanedSlots(canonical: CanonicalTool): string[];
201
292
  /**
202
293
  * Acquire one slot from the global semaphore for a canonical tool. Blocks
203
294
  * until a slot becomes free or `timeoutMs` elapses.
@@ -1 +1 @@
1
- {"version":3,"file":"tool-semaphore.d.ts","sourceRoot":"","sources":["../../src/tasks/tool-semaphore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACxC;AAMD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAA+B,GAC3C,MAAM,CAiBR;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,aAAa,EACxB,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAeR;AAWD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,UAAU,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,MAAM,CAQR;AA4BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAE7D;AAyBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,aAAa,EACxB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA+ExB"}
1
+ {"version":3,"file":"tool-semaphore.d.ts","sourceRoot":"","sources":["../../src/tasks/tool-semaphore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACxC;AAMD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAA+B,GAC3C,MAAM,CAiBR;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,aAAa,EACxB,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAeR;AAgBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,UAAU,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,MAAM,CAQR;AA4BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAE7D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU;IACzB,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd;AAuCD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAQ9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAUhE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAU5D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,aAAa,GACvB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAqBnF;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,EAAE,CAMpE;AAyBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,aAAa,EACxB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA0GxB"}