@cleocode/core 2026.9.3 → 2026.9.5

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 (63) hide show
  1. package/dist/dispatch/suggested-next.d.ts.map +1 -1
  2. package/dist/dispatch/suggested-next.js +7 -1
  3. package/dist/dispatch/suggested-next.js.map +1 -1
  4. package/dist/docs/export-document.js +84 -0
  5. package/dist/docs/export-document.js.map +2 -2
  6. package/dist/hygiene/validate-spawn-readiness.d.ts +88 -4
  7. package/dist/hygiene/validate-spawn-readiness.d.ts.map +1 -1
  8. package/dist/hygiene/validate-spawn-readiness.js +138 -16
  9. package/dist/hygiene/validate-spawn-readiness.js.map +1 -1
  10. package/dist/injection.d.ts.map +1 -1
  11. package/dist/injection.js +10 -2
  12. package/dist/injection.js.map +1 -1
  13. package/dist/internal.d.ts +1 -1
  14. package/dist/internal.d.ts.map +1 -1
  15. package/dist/internal.js +1 -1
  16. package/dist/internal.js.map +1 -1
  17. package/dist/llm/plugin-facade.js +84 -0
  18. package/dist/llm/plugin-facade.js.map +2 -2
  19. package/dist/release/open.d.ts +11 -18
  20. package/dist/release/open.d.ts.map +1 -1
  21. package/dist/release/open.js +135 -7
  22. package/dist/release/open.js.map +1 -1
  23. package/dist/release/plan.d.ts +1 -6
  24. package/dist/release/plan.d.ts.map +1 -1
  25. package/dist/release/plan.js +1 -8
  26. package/dist/release/plan.js.map +1 -1
  27. package/dist/release/reconcile.d.ts +19 -1
  28. package/dist/release/reconcile.d.ts.map +1 -1
  29. package/dist/release/reconcile.js +110 -6
  30. package/dist/release/reconcile.js.map +1 -1
  31. package/dist/release/release-manifest.d.ts.map +1 -1
  32. package/dist/release/release-manifest.js +1 -3
  33. package/dist/release/release-manifest.js.map +1 -1
  34. package/dist/release/version.d.ts +48 -0
  35. package/dist/release/version.d.ts.map +1 -0
  36. package/dist/release/version.js +50 -0
  37. package/dist/release/version.js.map +1 -0
  38. package/dist/selfimprove/fix-gen.js +84 -0
  39. package/dist/selfimprove/fix-gen.js.map +2 -2
  40. package/dist/setup/sections/brain.d.ts +1 -1
  41. package/dist/setup/sections/brain.js +1 -1
  42. package/dist/system/bridge-mode.d.ts +1 -1
  43. package/dist/system/bridge-mode.js +1 -1
  44. package/dist/tasks/evidence.d.ts.map +1 -1
  45. package/dist/tasks/evidence.js +90 -27
  46. package/dist/tasks/evidence.js.map +1 -1
  47. package/dist/tasks/heavy-tool-limit.d.ts +119 -0
  48. package/dist/tasks/heavy-tool-limit.d.ts.map +1 -1
  49. package/dist/tasks/heavy-tool-limit.js +205 -3
  50. package/dist/tasks/heavy-tool-limit.js.map +1 -1
  51. package/dist/tasks/index.d.ts +1 -1
  52. package/dist/tasks/index.d.ts.map +1 -1
  53. package/dist/tasks/index.js +1 -1
  54. package/dist/tasks/index.js.map +1 -1
  55. package/dist/tasks/tool-cache.d.ts +153 -48
  56. package/dist/tasks/tool-cache.d.ts.map +1 -1
  57. package/dist/tasks/tool-cache.js +333 -97
  58. package/dist/tasks/tool-cache.js.map +1 -1
  59. package/package.json +13 -13
  60. package/templates/CLEO-INJECTION.md +6 -6
  61. package/templates/workflows/release-prepare.yml.tmpl +67 -2
  62. package/templates/workflows/release-publish.yml.tmpl +1 -1
  63. package/templates/workflows/release-rollback.yml.tmpl +18 -2
@@ -37,8 +37,24 @@ import { type AcquireSlotOptions } from './tool-semaphore.js';
37
37
  * @task T1534
38
38
  */
39
39
  export interface ToolCacheEntry {
40
- /** Schema version for forwards compatibility. */
41
- schemaVersion: 1;
40
+ /**
41
+ * Schema version for forwards compatibility.
42
+ *
43
+ * Bumped 1 -> 2 by gh#1419, which added {@link ToolCacheEntry.executionRoot}
44
+ * to the run's identity. Every entry written before that field existed is
45
+ * refused wholesale by {@link readCacheEntry} on this one comparison.
46
+ *
47
+ * That is the mechanism gh#1380 and gh#1404 each rebuilt by hand. Both
48
+ * needed to retire entries already on disk in consumers' caches, and both
49
+ * did it with a bespoke null-check on the field they had just added —
50
+ * `exitCode === null`, then `head === null` — while this field, whose entire
51
+ * purpose is to retire incompatible entries, stayed at 1 through both.
52
+ * Two defects, two hand-written retirement clauses, one unused version
53
+ * counter sitting between them.
54
+ *
55
+ * @task T12190 (gh#1419)
56
+ */
57
+ schemaVersion: 2;
42
58
  /** Cache key (also encoded in the filename). */
43
59
  key: string;
44
60
  /** Canonical tool name from the resolver. */
@@ -53,8 +69,28 @@ export interface ToolCacheEntry {
53
69
  source: string;
54
70
  /** Git HEAD sha at execution time. */
55
71
  head: string | null;
56
- /** sha256 of `git status --porcelain` (uncommitted tree fingerprint). */
72
+ /** sha256 of `git diff HEAD` — CONTENT of the uncommitted tracked changes (gh#1452). */
57
73
  dirtyFingerprint: string | null;
74
+ /**
75
+ * Absolute, symlink-resolved path of the tree the tool actually ran in.
76
+ *
77
+ * Part of the run's IDENTITY (see {@link TOOL_RUN_IDENTITY_FIELDS}), so it
78
+ * is in the cache key: two clean worktrees at the same HEAD no longer
79
+ * collide. They used to by construction — a clean tree's
80
+ * `dirtyFingerprint` is the empty-input hash in every worktree, so the old
81
+ * key `{canonical, cmd, args, head, dirtyFingerprint}` was byte-identical
82
+ * across them.
83
+ *
84
+ * Stored as well as keyed, so a hit can be AUDITED. Before this field,
85
+ * `ToolCacheEntry` carried no directory at all: a field survey of 259 tool
86
+ * entries found 0 that could say which tree produced them, and 8 that had
87
+ * been produced in worktrees since deleted — every one `exitCode: 0` and
88
+ * still servable, which makes the evidence unfalsifiable rather than merely
89
+ * stale. Nobody can go and look.
90
+ *
91
+ * @task T12190 (gh#1419)
92
+ */
93
+ executionRoot: string;
58
94
  /** Process exit code. */
59
95
  exitCode: number | null;
60
96
  /**
@@ -125,6 +161,24 @@ export interface ToolRunResult {
125
161
  * @task T12112 (gh#1220)
126
162
  */
127
163
  executionRoot: string;
164
+ /**
165
+ * The diagnostic line from CLEO's own confinement wrapper when it failed to
166
+ * START the tool, else `null`.
167
+ *
168
+ * gh#1397: `systemd-run --scope` is transparent on success — it exits with
169
+ * the wrapped command's status — but exits `1` when it cannot create the
170
+ * transient unit, and `1` is also what a suite with a failing test exits
171
+ * with. "The harness never started" and "the suite ran and was red" are
172
+ * therefore identical in `exitCode`, and CLEO reported both as
173
+ * `E_EVIDENCE_TOOL_FAILED`: a fast red suite. Five occurrences of gh#1396
174
+ * produced no diagnosis for exactly this reason.
175
+ *
176
+ * Non-null means the tool did NOT run, so nothing is cached and the caller
177
+ * must report an unavailable harness rather than a failing tool.
178
+ *
179
+ * @task T12116 (gh#1397)
180
+ */
181
+ harnessFailure: string | null;
128
182
  /** Full cache entry — useful for audit / debugging. */
129
183
  entry: ToolCacheEntry;
130
184
  }
@@ -290,21 +344,110 @@ export declare function defaultSpawnTimeoutMs(canonical: string): number;
290
344
  * @task T12105 (gh#1193)
291
345
  */
292
346
  export declare function resolveSpawnTimeoutMs(canonical: string, env?: NodeJS.ProcessEnv): number;
347
+ /**
348
+ * The fields that establish WHICH RUN a cache entry describes.
349
+ *
350
+ * This list is the single source of truth for three things that must agree
351
+ * and previously did not, because each was maintained by hand:
352
+ *
353
+ * 1. what {@link computeCacheKey} hashes,
354
+ * 2. what {@link readCacheEntry} requires before serving an entry,
355
+ * 3. what `runToolCached` requires before persisting one.
356
+ *
357
+ * ## Why this exists rather than a fourth guard clause
358
+ *
359
+ * Three defects in three releases, each invisible to the detector written for
360
+ * the one before it:
361
+ *
362
+ * | | gh#1380 (2026.9.2) | gh#1404 (2026.9.3) | gh#1419 (this) |
363
+ * |---|---|---|---|
364
+ * | signature | `exitCode: null` | real code, `head: null` | well-formed, genuinely succeeded |
365
+ * | wrong how | never ran | key cannot rotate | ran, on the wrong tree |
366
+ * | detector | all-null | real code + null head | neither matches |
367
+ *
368
+ * Each fix added one `if` naming one field, to two separate guards — the read
369
+ * path and the write path — that encode the same rule in different code with
370
+ * nothing asserting they agree. A fourth defect means a fourth pair of `if`s,
371
+ * and the pair for defect five is the one somebody edits only half of.
372
+ *
373
+ * The recurring mistake is not any of the three fields. It is that a field
374
+ * could be added to {@link ToolCacheEntry} without being added to the key:
375
+ * `executionRoot` was threaded all the way through execution by T12112 and
376
+ * never reached `computeCacheKey`, so the tool correctly ran in worktree A
377
+ * and its result was then served to worktree B under an identical key. The
378
+ * execution half of that fix landed; the caching half did not.
379
+ *
380
+ * Deriving all three consumers from this one array makes that specific
381
+ * mistake unavailable: a field added here is keyed, required on read, and
382
+ * required on write, together or not at all.
383
+ *
384
+ * ## What is deliberately NOT here
385
+ *
386
+ * `exitCode` is a RESULT, not an identity — it is what the run produced, not
387
+ * which run it was. It has its own non-null requirement in
388
+ * {@link isEntryUsable} (gh#1380: an unknown outcome must never be cached).
389
+ * Putting it here would key the cache on its own answer.
390
+ *
391
+ * @task T12190 (gh#1419)
392
+ */
393
+ export declare const TOOL_RUN_IDENTITY_FIELDS: readonly ["canonical", "cmd", "args", "head", "dirtyFingerprint", "executionRoot"];
394
+ /**
395
+ * The identity half of a {@link ToolCacheEntry} — the inputs that determine
396
+ * which run it is, independent of what that run produced.
397
+ *
398
+ * @task T12190 (gh#1419)
399
+ */
400
+ export type ToolRunIdentity = Pick<ToolCacheEntry, (typeof TOOL_RUN_IDENTITY_FIELDS)[number]>;
293
401
  /**
294
402
  * Compute the cache key for a resolved tool command + repo state.
295
403
  *
296
- * Key includes:
297
- * - Canonical tool name
298
- * - Resolved command + args (sensitive to project-context updates)
299
- * - Git HEAD sha (so a new commit invalidates everything)
300
- * - Dirty-tree fingerprint (so an uncommitted edit invalidates everything)
404
+ * The key covers exactly {@link TOOL_RUN_IDENTITY_FIELDS} — canonical tool
405
+ * name, resolved command and args, git HEAD, dirty-tree fingerprint, and the
406
+ * normalised execution root. Fields are projected in the order that array
407
+ * declares, so the hashed payload is a function of the array and adding a
408
+ * field there changes every key by construction.
409
+ *
410
+ * `executionRoot` is a REQUIRED parameter, deliberately. A defaulted one
411
+ * would let every callsite that was not updated keep computing the old,
412
+ * colliding key while the type-checker reported success — which is the exact
413
+ * shape of the defect this fixes, since `executionRoot` already existed and
414
+ * already reached this function's caller.
301
415
  *
302
416
  * Using `createHash('sha256')` makes the key collision-resistant and bounded
303
- * to 64 hex chars regardless of input size.
417
+ * to 32 hex chars regardless of input size.
304
418
  *
305
419
  * @task T1534
420
+ * @task T12190 (gh#1419)
421
+ */
422
+ export declare function computeCacheKey(command: ResolvedToolCommand, head: string | null, dirtyFingerprint: string | null, executionRoot: string): string;
423
+ /**
424
+ * Whether a cache entry may be SERVED or PERSISTED as a real result.
425
+ *
426
+ * One predicate, used by both {@link readCacheEntry} and the persist guard in
427
+ * `runToolCached`, so the two cannot drift apart. Two rules:
428
+ *
429
+ * 1. every field in {@link TOOL_RUN_IDENTITY_FIELDS} is present and
430
+ * non-null — an entry that cannot say which run it describes is not
431
+ * evidence of anything;
432
+ * 2. `exitCode` is non-null — a run that produced no exit code records that
433
+ * we do not know what happened, and an unknown must never be cached
434
+ * (gh#1380).
435
+ *
436
+ * Rule 1 subsumes gh#1404's `head === null` clause without naming `head`:
437
+ * when the tool runs off a non-git root both git fields are null on EVERY
438
+ * run, so the key is a function of the command alone and nothing a developer
439
+ * does to the source can rotate it. That is not a cache, it is a hardcoded
440
+ * answer with a filename — and unlike gh#1380 it holds a real exit code,
441
+ * which can be a PASS. A poisoned red is investigated within minutes; nobody
442
+ * debugs a passing gate.
443
+ *
444
+ * The cost is stated rather than hidden: a project whose CLEO root is not a
445
+ * git checkout gets no tool-result caching at all. Such projects are not
446
+ * getting valid caching today — they are getting one answer forever.
447
+ *
448
+ * @task T12190 (gh#1419)
306
449
  */
307
- export declare function computeCacheKey(command: ResolvedToolCommand, head: string | null, dirtyFingerprint: string | null): string;
450
+ export declare function isEntryUsable(entry: Partial<ToolCacheEntry>): boolean;
308
451
  /**
309
452
  * Capture the repo's git HEAD sha. Returns `null` when the directory is not
310
453
  * a git checkout or the command fails.
@@ -312,44 +455,6 @@ export declare function computeCacheKey(command: ResolvedToolCommand, head: stri
312
455
  * @task T1534
313
456
  */
314
457
  export declare function captureHead(projectRoot: string): Promise<string | null>;
315
- /**
316
- * Capture a fingerprint of the uncommitted TRACKED tree by sha256-hashing
317
- * `git status --porcelain=v1 --untracked-files=no`. Returns `null` for
318
- * non-git roots.
319
- *
320
- * Two repos with identical tracked content but different uncommitted edits
321
- * produce different fingerprints — so editing a tracked file before
322
- * re-verifying always invalidates the cache for tools sensitive to that file.
323
- *
324
- * ## Why untracked files are excluded (gh#1221)
325
- *
326
- * The fingerprint is captured BEFORE the tool spawns and is the key the
327
- * result is stored under. When untracked files were included, a tool that
328
- * emitted any untracked artifact changed the fingerprint that the NEXT call
329
- * computes — so the tool invalidated its own cache entry simply by running,
330
- * and the cache could never hit. This is not hypothetical or
331
- * multi-agent-specific: in this repo `coverage/`, `.vitest/` and `*.log` are
332
- * not gitignored, so a single suite run is enough. A one-line marker file is
333
- * enough.
334
- *
335
- * Excluding untracked files fixes that at the root, rather than maintaining a
336
- * per-project list of build-output paths that rots as tooling changes.
337
- *
338
- * TRADEOFF (deliberate): a brand-new UNTRACKED source or test file no longer
339
- * invalidates the cache either, so `cleo verify` can return a cached pass
340
- * that did not exercise it. Commit the file (HEAD moves, the key moves) or
341
- * force a fresh run with {@link RunToolOptions.bypassCache} — surfaced as
342
- * `CLEO_EVIDENCE_FRESH=1`. The alternative — a maintained exclude list — trades
343
- * a loud, documented staleness for a silent, per-project one.
344
- *
345
- * The cache directory itself (`.cleo/cache/`) and other CLEO-managed runtime
346
- * state (`.cleo/tasks.db`, `.cleo/brain.db`, journal/log files) remain
347
- * excluded via pathspec so a tracked-and-modified CLEO file cannot reintroduce
348
- * the same self-invalidation.
349
- *
350
- * @task T1534
351
- * @task T12112 (gh#1221)
352
- */
353
458
  export declare function captureDirtyFingerprint(projectRoot: string): Promise<string | null>;
354
459
  /**
355
460
  * Resolve the absolute path for a cache entry by key.
@@ -1 +1 @@
1
- {"version":3,"file":"tool-cache.d.ts","sourceRoot":"","sources":["../../src/tasks/tool-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-cache.d.ts","sourceRoot":"","sources":["../../src/tasks/tool-cache.ts"],"names":[],"mappings":"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"}