@codyswann/lisa 3.64.2 → 3.64.4

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 (79) hide show
  1. package/all/copy-overwrite/scripts/lib/gate-failure-diagnosis.mjs +115 -4
  2. package/all/copy-overwrite/scripts/lisa-run-gates.mjs +48 -2
  3. package/dist/cli/sync-cmd.d.ts +2 -1
  4. package/dist/cli/sync-cmd.d.ts.map +1 -1
  5. package/dist/cli/sync-cmd.js +14 -1
  6. package/dist/cli/sync-cmd.js.map +1 -1
  7. package/dist/configs/vitest/scratch-setup.d.ts.map +1 -1
  8. package/dist/configs/vitest/scratch-setup.js +47 -2
  9. package/dist/configs/vitest/scratch-setup.js.map +1 -1
  10. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  11. package/dist/core/lisa-owned-hash-ledger.js +2 -0
  12. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  13. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  14. package/dist/core/upstream-evidence-manifest.js +13 -3
  15. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  16. package/dist/sync/artifact-sync.d.ts +50 -0
  17. package/dist/sync/artifact-sync.d.ts.map +1 -0
  18. package/dist/sync/artifact-sync.js +142 -0
  19. package/dist/sync/artifact-sync.js.map +1 -0
  20. package/dist/sync/config-sync.d.ts +2 -16
  21. package/dist/sync/config-sync.d.ts.map +1 -1
  22. package/dist/sync/config-sync.js +12 -59
  23. package/dist/sync/config-sync.js.map +1 -1
  24. package/dist/sync/stryker-thresholds-ownership.d.ts +111 -0
  25. package/dist/sync/stryker-thresholds-ownership.d.ts.map +1 -0
  26. package/dist/sync/stryker-thresholds-ownership.js +227 -0
  27. package/dist/sync/stryker-thresholds-ownership.js.map +1 -0
  28. package/package.json +1 -1
  29. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  31. package/plugins/lisa-agy/plugin.json +1 -1
  32. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  35. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  41. package/plugins/lisa-expo-agy/plugin.json +1 -1
  42. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  46. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  47. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  51. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  52. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  56. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  57. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  61. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  62. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  66. package/plugins/lisa-rails-agy/plugin.json +1 -1
  67. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  69. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  71. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  72. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  74. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  76. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  77. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  79. package/typescript/create-only/stryker.conf.json +1 -0
@@ -40,6 +40,8 @@ export const DIAGNOSIS = Object.freeze({
40
40
  THRESHOLD: "threshold",
41
41
  /** The command was terminated by a signal; nothing it says can be trusted. */
42
42
  KILLED: "killed",
43
+ /** Another process destroyed this run's scratch files while it was running. */
44
+ INTERFERENCE: "interference",
43
45
  /** Output was read and matched nothing this module knows. */
44
46
  UNDIAGNOSED: "undiagnosed",
45
47
  /** No output was available to read, so nothing can be said. */
@@ -59,6 +61,39 @@ const THRESHOLD_PATTERN =
59
61
  /** vitest's tally line: `Tests 4 failed | 14272 passed (14276)`. */
60
62
  const TALLY_PATTERN = /Tests\s+(\d+) failed/;
61
63
 
64
+ /**
65
+ * A coverage scratch file the run could not open: `coverage/.tmp/coverage-7.json`.
66
+ *
67
+ * Keyed on the FILENAME rather than on the directory, because the directory is
68
+ * configurable (`coverage.reportsDirectory`) and the filename is not — the
69
+ * coverage provider names every scratch file `coverage-<n>.json` and nothing
70
+ * else in a gate transcript is called that.
71
+ *
72
+ * The quotes are how both lines that carry the path print it, measured:
73
+ * `open '/abs/coverage/.tmp/coverage-0.json'` in the error and
74
+ * `path: '/abs/coverage/.tmp/coverage-0.json'` in the serialized copy. A form
75
+ * without them falls through to `undiagnosed`, which now also reports NOT
76
+ * PROVED — so an unmatched shape degrades to a weaker true statement rather
77
+ * than to a false one.
78
+ *
79
+ * Horizontal-only `[^\n]` for the same reason {@link FAIL_PATTERN} uses it:
80
+ * this parses a multi-megabyte transcript inside a git hook.
81
+ */
82
+ const COVERAGE_SCRATCH_ENOENT =
83
+ /ENOENT[^\n]+?['"]([^'"\n]+coverage-\d+\.json)['"]/g;
84
+
85
+ /**
86
+ * The coverage provider's own words for the same event, when it manages to say
87
+ * them: `Something removed the coverage directory "…" Vitest created earlier`.
88
+ *
89
+ * It is a better sentence than anything this module could reconstruct, and it
90
+ * names the cause outright. It is also SUPPRESSED in the case that actually
91
+ * happens — see {@link interferenceVerdict} — which is why the pattern above
92
+ * exists as well.
93
+ */
94
+ const COVERAGE_DIR_REMOVED =
95
+ /Something removed the coverage directory "([^"\n]+)"/g;
96
+
62
97
  /**
63
98
  * A failing suite header: ` FAIL tests/unit/foo.test.ts > does a thing`.
64
99
  *
@@ -81,12 +116,18 @@ const FAIL_PATTERN = /^[ \t]*FAIL[ \t]+(\S+)/gm;
81
116
  * test suite rendered as a coverage regression — and it is also why a real
82
117
  * coverage regression could not be told from that flake.
83
118
  *
84
- * `undiagnosed`, `uncaptured` and `killed` are deliberately absent. Nothing was
85
- * recognised, so nothing may be attributed; the failure stays where it landed.
86
- * `killed` is the most important of the three to leave out: a terminated
119
+ * `undiagnosed`, `uncaptured`, `killed` and `interference` are deliberately
120
+ * absent. Nothing was measured, so nothing may be attributed; the failure stays
121
+ * where it landed. `killed` is the most important to leave out: a terminated
87
122
  * command measured NOTHING, so attributing it to `test-correctness` would print
88
123
  * a verdict about a property no run ever reached.
89
124
  *
125
+ * Absent from here is only half of it. A kind that measured nothing must also
126
+ * not report as FAILED, or the gate still asserts a verdict on a property no
127
+ * run reached — see `MEASURED_NOTHING` in `lisa-run-gates.mjs`, which maps
128
+ * these to NOT PROVED. That gate still blocks; it just stops naming a cause it
129
+ * does not have.
130
+ *
90
131
  * The runner applies this only when the named gate is itself declared on the
91
132
  * same command at the same moment, so a phrase in some unrelated tool's output
92
133
  * can never invent an attribution.
@@ -205,6 +246,66 @@ function timeoutVerdict(timeouts, suites) {
205
246
  };
206
247
  }
207
248
 
249
+ /**
250
+ * Every coverage scratch file the run named as missing.
251
+ * @param {string} output The gate command's combined output.
252
+ * @returns {string[]} One path per distinct file, plus any directory the
253
+ * provider named outright.
254
+ */
255
+ function findInterference(output) {
256
+ return [
257
+ ...[...output.matchAll(COVERAGE_DIR_REMOVED)].map(
258
+ match => `${match[1]} (the coverage provider named this directory itself)`
259
+ ),
260
+ ...[...output.matchAll(COVERAGE_SCRATCH_ENOENT)].map(match => match[1]),
261
+ ];
262
+ }
263
+
264
+ /**
265
+ * The verdict for a run whose own scratch files were deleted underneath it.
266
+ *
267
+ * ## Measured, both arms, 2026-08-23, vitest 4.1.9
268
+ *
269
+ * A coverage run writes one `coverage-<n>.json` per test file as that file
270
+ * finishes and reads them all back at the end, so everything between the first
271
+ * write and the read is a window in which another process can delete them. Two
272
+ * runs, identical except for what was done to the directory at the eight-second
273
+ * mark:
274
+ *
275
+ * | what happened to the scratch directory | what the run printed |
276
+ * |---|---|
277
+ * | removed **and re-created** | `ENOENT … open '…/coverage/.tmp/coverage-0.json'` — nothing else |
278
+ * | removed and **left absent** | `Something removed the coverage directory "…" … not running multiple Vitests with the same "coverage.reportsDirectory" at the same time` |
279
+ *
280
+ * The provider's own explanation is guarded on the directory being ABSENT. A
281
+ * second coverage run in the same directory removes it and re-creates it in
282
+ * consecutive statements, so by the time the first run looks, the directory is
283
+ * back and the guard does not fire. **The one case the message was written for
284
+ * is the one case it cannot reach**, and what reaches the operator instead is a
285
+ * bare `ENOENT` on a path nobody recognises — which is how it arrived at
286
+ * CodySwannGT/lisa#2961 filed as a coverage-gate failure.
287
+ *
288
+ * ## What this is NOT
289
+ *
290
+ * It is not stale debris. Seeded with 798 abandoned scratch files from a killed
291
+ * run — the largest holding measured in the wild — a coverage run completes and
292
+ * reports a verdict, because the provider deletes that directory before every
293
+ * run. `tests/integration/coverage-scratch-debris.test.ts` pins that.
294
+ * @param {string[]} paths What {@link findInterference} found.
295
+ * @returns {Diagnosis} The verdict.
296
+ */
297
+ function interferenceVerdict(paths) {
298
+ return {
299
+ kind: DIAGNOSIS.INTERFERENCE,
300
+ summary:
301
+ `this run's own coverage scratch files were deleted while it was still ` +
302
+ `running, so it never produced a coverage number — another run sharing ` +
303
+ `the same coverage.reportsDirectory did that, and it is NOT a coverage ` +
304
+ `shortfall. Re-run it on its own`,
305
+ evidence: capped(paths),
306
+ };
307
+ }
308
+
208
309
  /**
209
310
  * Exit codes a POSIX shell reports for a command killed by a signal.
210
311
  *
@@ -283,7 +384,8 @@ function killedVerdict(code) {
283
384
  * Classify why a gate command failed, from the output it produced.
284
385
  *
285
386
  * Ordered deliberately, and the order is the content of this function: a
286
- * kill outranks everything, then a timeout outranks an assertion failure
387
+ * kill outranks everything, then outside interference with the run's own
388
+ * scratch files, then a timeout outranks an assertion failure
287
389
  * outranks a threshold miss, because
288
390
  * coverage read off a run that did not finish measures the interruption rather
289
391
  * than the code. Getting that backwards is the defect being fixed — it is what
@@ -307,6 +409,15 @@ function classify(output, code) {
307
409
  };
308
410
  }
309
411
 
412
+ // Above every content signature, and directly below a kill, for the same
413
+ // reason a kill outranks them: the run was interfered with from outside, so
414
+ // whatever it printed describes the interference rather than the code. A
415
+ // timeout or a failing assertion in such a transcript may well be real, but
416
+ // it is not what stopped the run, and the gate whose verdict is missing is
417
+ // the coverage one either way.
418
+ const interference = findInterference(output);
419
+ if (interference.length > 0) return interferenceVerdict(interference);
420
+
310
421
  const timeouts = findTimeouts(output);
311
422
  const failures = findFailures(output);
312
423
  const misses = findThresholdMisses(output);
@@ -52,7 +52,7 @@ import {
52
52
  import { tmpdir } from "node:os";
53
53
  import { join } from "node:path";
54
54
 
55
- import { diagnoseFailure } from "./lib/gate-failure-diagnosis.mjs";
55
+ import { DIAGNOSIS, diagnoseFailure } from "./lib/gate-failure-diagnosis.mjs";
56
56
  import { invokedAsScript } from "./lib/invoked-as-script.mjs";
57
57
  import { projectScripts, readGates, resolveMoment } from "./lisa-gates.mjs";
58
58
 
@@ -302,6 +302,50 @@ function normaliseExec(raw) {
302
302
  * @returns {{state: string, detail: string, code: number|null,
303
303
  * diagnosis: string|null, evidence: string[]}} The outcome.
304
304
  */
305
+ /**
306
+ * Diagnoses under which the command established nothing about any property.
307
+ *
308
+ * A gate reports FAILED to say "I measured this and it was wanting". Two
309
+ * outcomes cannot support that sentence and were saying it anyway.
310
+ *
311
+ * `undiagnosed` is the one that was measured in the wild
312
+ * (CodySwannGT/lisa#2961). A coverage run lost its own scratch files to a
313
+ * second coverage run in the same directory and died on a bare `ENOENT`. The
314
+ * classifier got it right — it printed **"no recognised failure signature"**,
315
+ * which is an admission — and the runner then rendered that admission as
316
+ * `FAILED required coverage-adequacy`. So the report said, in one line, both
317
+ * "I do not know what happened" and "the coverage floor was not met". The
318
+ * second half was invented, and it is the half an operator acts on.
319
+ *
320
+ * `interference` is the same event as that `undiagnosed` one, now recognised
321
+ * and named rather than merely admitted — recognising it must not silently
322
+ * promote it back to a measurement.
323
+ *
324
+ * ## Two kinds that look eligible and are not
325
+ *
326
+ * `uncaptured` is NOT here, and the attempt to include it is what proves the
327
+ * distinction. Capture is off by default (`LISA_GATES_CAPTURE=1` turns it on),
328
+ * so `uncaptured` is the ORDINARY outcome of an ordinary failing gate — four
329
+ * existing cases went red the moment it was added, every one of them a plain
330
+ * `lint` gate exiting 1. A gate that exited nonzero did measure something; the
331
+ * runner merely did not keep the transcript. Missing evidence about a real
332
+ * failure is not the same claim as a captured transcript that describes no
333
+ * failure at all, which is what `undiagnosed` means.
334
+ *
335
+ * `killed` is NOT here either. A terminated gate has its own vocabulary already
336
+ * (CodySwannGT/lisa#2813) and its own bite test asserting the wording it
337
+ * prints; moving it is that issue's call to make, not this one's.
338
+ *
339
+ * Nothing about blocking changes. UNPROVABLE is counted in `result.failed` and
340
+ * sets `blockedBy` exactly as FAILED does — an unmeasured required property is
341
+ * not a pass. The only thing that changes is that the gate stops naming a cause
342
+ * it does not have.
343
+ */
344
+ const MEASURED_NOTHING = new Set([
345
+ DIAGNOSIS.UNDIAGNOSED,
346
+ DIAGNOSIS.INTERFERENCE,
347
+ ]);
348
+
305
349
  function execute(gate, exec) {
306
350
  const { code, output } = normaliseExec(exec(gate.command, gate));
307
351
  if (code === 0) {
@@ -322,7 +366,9 @@ function execute(gate, exec) {
322
366
  // them (CodySwannGT/lisa#2897).
323
367
  const diagnosis = diagnoseFailure(output, code);
324
368
  return {
325
- state: STATE.FAILED,
369
+ state: MEASURED_NOTHING.has(diagnosis.kind)
370
+ ? STATE.UNPROVABLE
371
+ : STATE.FAILED,
326
372
  detail: `${gate.command} (exit ${shown}) — ${diagnosis.summary}`,
327
373
  code: typeof code === "number" ? code : null,
328
374
  diagnosis: diagnosis.kind,
@@ -15,7 +15,8 @@ export declare function printSyncReport(report: SyncReport): void;
15
15
  * Run the `lisa sync` command.
16
16
  * @param targetPath - Project path argument (defaults to the current directory)
17
17
  * @param options - CLI options
18
- * @returns Exit code (0 on success, 1 when required keys are missing)
18
+ * @returns Exit code (0 on success, 1 when required keys are missing or the
19
+ * config-owned mutation floor diverges from stryker.conf.json)
19
20
  */
20
21
  export declare function runSync(targetPath: string | undefined, options?: SyncCmdOptions): Promise<number>;
21
22
  //# sourceMappingURL=sync-cmd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/sync-cmd.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAExE,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAaxD;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAWjB"}
1
+ {"version":3,"file":"sync-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/sync-cmd.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGxE,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAaxD;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import * as path from "node:path";
7
7
  import { runConfigSync } from "../sync/config-sync.js";
8
+ import { MutationFloorDivergenceError } from "../sync/stryker-thresholds-ownership.js";
8
9
  /**
9
10
  * Print a sync report in human-readable form.
10
11
  * @param report - Report returned by the sync engine
@@ -25,13 +26,25 @@ export function printSyncReport(report) {
25
26
  * Run the `lisa sync` command.
26
27
  * @param targetPath - Project path argument (defaults to the current directory)
27
28
  * @param options - CLI options
28
- * @returns Exit code (0 on success, 1 when required keys are missing)
29
+ * @returns Exit code (0 on success, 1 when required keys are missing or the
30
+ * config-owned mutation floor diverges from stryker.conf.json)
29
31
  */
30
32
  export async function runSync(targetPath, options = {}) {
31
33
  const destDir = path.resolve(targetPath ?? ".");
34
+ // A divergence is a refusal, not a crash: print the diagnosis the way an
35
+ // operator can act on it rather than letting a stack trace reach the user.
32
36
  const report = await runConfigSync(destDir, {
33
37
  dryRun: options.dryRun === true,
38
+ }).catch((error) => {
39
+ if (error instanceof MutationFloorDivergenceError) {
40
+ console.error(error.message);
41
+ return undefined;
42
+ }
43
+ throw error;
34
44
  });
45
+ if (report === undefined) {
46
+ return 1;
47
+ }
35
48
  if (options.json === true) {
36
49
  console.log(JSON.stringify(report, null, 2));
37
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync-cmd.js","sourceRoot":"","sources":["../../src/cli/sync-cmd.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAmB,MAAM,wBAAwB,CAAC;AAUxE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAkB;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,oCAAoC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACvC,OAAO,CAAC,IAAI,CACV,GAAG,MAAM,qBAAqB,OAAO,CAAC,GAAG,+BAA+B,OAAO,CAAC,SAAS,EAAE,CAC5F,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,UAA8B,EAC9B,UAA0B,EAAE;IAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;KAChC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"sync-cmd.js","sourceRoot":"","sources":["../../src/cli/sync-cmd.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAmB,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAUvF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAkB;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,oCAAoC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACvC,OAAO,CAAC,IAAI,CACV,GAAG,MAAM,qBAAqB,OAAO,CAAC,GAAG,+BAA+B,OAAO,CAAC,SAAS,EAAE,CAC5F,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,UAA8B,EAC9B,UAA0B,EAAE;IAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IAChD,yEAAyE;IACzE,2EAA2E;IAC3E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;KAChC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC1B,IAAI,KAAK,YAAY,4BAA4B,EAAE,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scratch-setup.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/scratch-setup.ts"],"names":[],"mappings":"AAgDA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAO,MA4BrC,CAAC"}
1
+ {"version":3,"file":"scratch-setup.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/scratch-setup.ts"],"names":[],"mappings":"AAsEA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAqDrC,CAAC"}
@@ -16,6 +16,9 @@
16
16
  * /tmp/probe
17
17
  * ```
18
18
  *
19
+ * A signalled exit is covered too, which is not obvious and is the whole of
20
+ * CodySwannGT/lisa#2950: see the signal handlers in `installScratchRoot`.
21
+ *
19
22
  * Because the assignment mutates the process environment, subprocesses the
20
23
  * tests spawn inherit the redirection too — a fixture's `git`, `npm pack` or
21
24
  * `tsc` child writes into the same bounded root, so a child that outlives its
@@ -29,6 +32,24 @@
29
32
  import * as fs from "node:fs";
30
33
  import { env } from "node:process";
31
34
  import { SCRATCH_ROOT_ENV, reclaimAndCreateRunRoot, removeScratchDir, scratchBaseDir, scratchNamespaceDir, } from "./scratch.js";
35
+ /**
36
+ * Signals a worker is reaped with, each of which skips `exit` by default.
37
+ *
38
+ * `SIGTERM` is the one measured in this repository — it is how vitest's
39
+ * `forks` pool ends a worker. `SIGINT` and `SIGHUP` are here because they
40
+ * reach the same process by the same route with the same default action: an
41
+ * operator pressing ctrl-C, and a terminal closing on a run left going. A
42
+ * handler that covered only the case that happened to be measured would leave
43
+ * the other two producing exactly the residue this removes.
44
+ *
45
+ * `SIGKILL` is deliberately absent — it cannot be caught, which is precisely
46
+ * why reclaim-on-start exists and is tested separately.
47
+ */
48
+ const REAPING_SIGNALS = [
49
+ "SIGTERM",
50
+ "SIGINT",
51
+ "SIGHUP",
52
+ ];
32
53
  /** Key under which the per-process run root is memoised. */
33
54
  const RUN_ROOT_KEY = "__lisaScratchRunRoot__";
34
55
  /**
@@ -59,11 +80,35 @@ export const installScratchRoot = () => {
59
80
  env["TMPDIR"] = root;
60
81
  env["TMP"] = root;
61
82
  env["TEMP"] = root;
62
- // Covers an ordinary exit, including one where tests failed. A signalled exit
63
- // does not run this — nothing can — and is handled by the next run's sweep.
83
+ // Covers an ordinary exit, including one where tests failed.
64
84
  process.once("exit", () => {
65
85
  removeScratchDir(root);
66
86
  });
87
+ // And covers the exit this suite ACTUALLY takes, which is not an ordinary
88
+ // one. Measured on vitest 4.1.9, `forks` pool, by recording every lifecycle
89
+ // event a worker reaches: the pool ends a worker with SIGTERM, and node's
90
+ // default action for SIGTERM terminates the process WITHOUT running `exit`
91
+ // handlers. So the handler above — the only mechanism that removes a run's
92
+ // own root — never ran for any worker, and a completely green run left its
93
+ // root behind every time (CodySwannGT/lisa#2950).
94
+ //
95
+ // That was invisible for the usual reason: the next run's sweep reclaims a
96
+ // root whose pid is dead, so the residue disappeared before anyone looked
97
+ // for it, and the namespace never grew. The behaviour was reported as
98
+ // present because its effect was eventually produced by something else.
99
+ //
100
+ // The same probe shows a worker DOES reach `exit` once a listener for the
101
+ // signal exists, because installing one displaces node's default action.
102
+ // Removing the listener and re-raising restores it, so the process still
103
+ // dies of the signal it was sent, with the status the pool expects — this
104
+ // buys the cleanup, not a different lifecycle.
105
+ for (const signal of REAPING_SIGNALS) {
106
+ process.once(signal, () => {
107
+ removeScratchDir(root);
108
+ process.removeAllListeners(signal);
109
+ process.kill(process.pid, signal);
110
+ });
111
+ }
67
112
  return root;
68
113
  };
69
114
  installScratchRoot();
@@ -1 +1 @@
1
- {"version":3,"file":"scratch-setup.js","sourceRoot":"","sources":["../../../src/configs/vitest/scratch-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,4DAA4D;AAC5D,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAQ9C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE;IAC7C,MAAM,KAAK,GAAG,UAA2B,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,4EAA4E;IAC5E,0EAA0E;IAC1E,kEAAkE;IAClE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,uBAAuB,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAE5D,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IAC3B,GAAG,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC7B,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAClB,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAEnB,8EAA8E;IAC9E,4EAA4E;IAC5E,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QACxB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"scratch-setup.js","sourceRoot":"","sources":["../../../src/configs/vitest/scratch-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;GAYG;AACH,MAAM,eAAe,GAA8B;IACjD,SAAS;IACT,QAAQ;IACR,QAAQ;CACT,CAAC;AAEF,4DAA4D;AAC5D,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAQ9C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE;IAC7C,MAAM,KAAK,GAAG,UAA2B,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,4EAA4E;IAC5E,0EAA0E;IAC1E,kEAAkE;IAClE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,uBAAuB,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAE5D,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IAC3B,GAAG,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC7B,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAClB,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAEnB,6DAA6D;IAC7D,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QACxB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,kDAAkD;IAClD,EAAE;IACF,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,wEAAwE;IACxE,EAAE;IACF,0EAA0E;IAC1E,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,+CAA+C;IAC/C,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YACxB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,kBAAkB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA6gBjC,CAAC"}
1
+ {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA+gBjC,CAAC"}
@@ -213,6 +213,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
213
213
  "eaafd632dacfb181f6c83a22e5086f39586aff023788861d915c7254246d3175",
214
214
  ]),
215
215
  "scripts/lib/gate-failure-diagnosis.mjs": Object.freeze([
216
+ "041094be579c3aefdf9f7b384e24ca23cd860c984c9094ffeb55b1542829bc39",
216
217
  "503b51e9239411d07ce6b51dbe2b3079bb12e94bf7c0310e76247af19ff667e6",
217
218
  "6b72a6a71078c838fdb0531e74898a5e36d942cad424b20480e2cd370b5264eb",
218
219
  "b4a0b1a0df6e944313b4a197925a0003fb9aed517fbd5708deda2a2a67f53faf",
@@ -442,6 +443,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
442
443
  "0978ac24f28bf9f11230781d271997384009b1528ed61de523333e52a5a4cf57",
443
444
  "235c541534fc0eca510135ac39b9fbd196965fbeb54d42a09fbf052da1c925cd",
444
445
  "2d166a07c9809800771c7f41e515bff8d66c23aeeae2838dd52d5f2547037422",
446
+ "5c65c8db73c5465cef810789ef71abe405df4d5d5db64f78923e5050656f13c8",
445
447
  "94453bdae8ab3dd2eba0883c4b278027396090e0bdc8e2f102414abc6415912a",
446
448
  "a58af06f1d677d82b780a6857916c1684a44649ba742b2b329d408057ae5700d",
447
449
  "ba610745a8878bb9a21af249d6ab5b384fcf88e7c530db846f4f8163faba7a8e",
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAg3EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAq9OjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
1
+ {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAg3EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA+9OjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -5,7 +5,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
5
5
  "all/copy-contents/gitignore": "8104ccd32d7e6137cae706511c5037d11d6b6045b8e2a9bb7b3a48a81c053cfa",
6
6
  "all/copy-overwrite/scripts/check-conflict-markers.mjs": "92f4413e8becaf66244b67297acfb223227ac42c2ddb1f715c8bce269708e526",
7
7
  "all/copy-overwrite/scripts/check-state-classification.mjs": "a72910f9885629dd6d8a739b900f5603e4b53d68ece64100a2a5647016b58e1e",
8
- "all/copy-overwrite/scripts/lib/gate-failure-diagnosis.mjs": "b4a0b1a0df6e944313b4a197925a0003fb9aed517fbd5708deda2a2a67f53faf",
8
+ "all/copy-overwrite/scripts/lib/gate-failure-diagnosis.mjs": "041094be579c3aefdf9f7b384e24ca23cd860c984c9094ffeb55b1542829bc39",
9
9
  "all/copy-overwrite/scripts/lib/invoked-as-script.mjs": "fbb9b88fc85a3e22f21af39e1c17acf67ff83fc6b5a6cdc8081bde333c48faa7",
10
10
  "all/copy-overwrite/scripts/lisa-command-envelope.mjs": "014a94647efc636cbce961364a82f03c1f3c1e54a55e9d21508fded88dce49c4",
11
11
  "all/copy-overwrite/scripts/lisa-commit-msg-gates.mjs": "5d587fd849cef02e9706d084ac2b508f3885da0ba59b76311e3b666f4fbff01e",
@@ -24,7 +24,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
24
24
  "all/copy-overwrite/scripts/lisa-lint-staged-preflight.mjs": "ce4bc224a102e3ac2bc29d8f2038eefd619129d4639c25954c93f05011f7f977",
25
25
  "all/copy-overwrite/scripts/lisa-postinstall.mjs": "98fe3adf3192a72f40eb75757193ce866f0a6123387377f6041e54d938df8d96",
26
26
  "all/copy-overwrite/scripts/lisa-reconcile-policy.mjs": "f490aa56b466d961d7372f94c2fb3f0e5deb31e53212a67dd79ac4afee48d4b4",
27
- "all/copy-overwrite/scripts/lisa-run-gates.mjs": "2d166a07c9809800771c7f41e515bff8d66c23aeeae2838dd52d5f2547037422",
27
+ "all/copy-overwrite/scripts/lisa-run-gates.mjs": "5c65c8db73c5465cef810789ef71abe405df4d5d5db64f78923e5050656f13c8",
28
28
  "all/copy-overwrite/scripts/lisa-schema-validate.mjs": "08cb25c2c49e0e5fd01e29861bbb8c90f612f9736ca2df86789fa72bd26d271e",
29
29
  "all/copy-overwrite/scripts/lisa-test-node.mjs": "31b338144af00e20e3de02202982846d7333433a9bbda76a8c77d50e6fdbc47b",
30
30
  "all/copy-overwrite/scripts/lisa-work-item.mjs": "04401ae05bf9464e6929180ffdfff80afc528a1df20733b032a0342252ca1d4a",
@@ -1197,7 +1197,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1197
1197
  "typescript/create-only/jest.config.local.ts": "5d5603e5b79ab0379cda135159ad83aef3ec914fa037c83fc7176363b64c8422",
1198
1198
  "typescript/create-only/jest.thresholds.json": "ce04fe30ad6139f734dbc56d92a801c11cfd86a0d9e49c06c1c2d0a137beeffd",
1199
1199
  "typescript/create-only/mutation.gate.json": "53adce2f6ef53f4a46d896210828610bf4f9b1f45ebbf6c7cf0addf9982a161a",
1200
- "typescript/create-only/stryker.conf.json": "9ae0c3ac523cc516495a80f30722c0a2565944b78b501eaf7e1487389ebc533a",
1200
+ "typescript/create-only/stryker.conf.json": "60307e1644b37b73458ecc842199c7efc565f6d2eb3e2a52af9ecb4236ae2014",
1201
1201
  "typescript/create-only/tsconfig.local.json": "727931ff950c5606b74040963429407c820743dfd20cb1732656eca963575208",
1202
1202
  "typescript/create-only/vitest.config.local.ts": "a70a6d2a4f210304cf84b8017b2c628c0ef689712c4f745ef45e1fcfffac4050",
1203
1203
  "typescript/create-only/vitest.thresholds.json": "ce04fe30ad6139f734dbc56d92a801c11cfd86a0d9e49c06c1c2d0a137beeffd",
@@ -7449,12 +7449,14 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7449
7449
  "src/strategies/strategy.interface.ts": true,
7450
7450
  "src/strategies/tagged-merge-types.ts": true,
7451
7451
  "src/strategies/tagged-merge.ts": true,
7452
+ "src/sync/artifact-sync.ts": true,
7452
7453
  "src/sync/config-sync.ts": true,
7453
7454
  "src/sync/json-path.ts": true,
7454
7455
  "src/sync/legacy-aliases.ts": true,
7455
7456
  "src/sync/legacy-monitor-thresholds.ts": true,
7456
7457
  "src/sync/lifecycle-defaults.ts": true,
7457
7458
  "src/sync/registry.ts": true,
7459
+ "src/sync/stryker-thresholds-ownership.ts": true,
7458
7460
  "src/sync/sync-population.ts": true,
7459
7461
  "src/transaction/backup.ts": true,
7460
7462
  "src/transaction/index.ts": true,
@@ -7574,9 +7576,11 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7574
7576
  "tests/fixtures/wiki-safety/allowed-contacts.md": true,
7575
7577
  "tests/fixtures/wiki-safety/redaction-source.md": true,
7576
7578
  "tests/helpers/__fixtures__/margin-guard-case.ts": true,
7579
+ "tests/helpers/__fixtures__/scratch-teardown-case.ts": true,
7577
7580
  "tests/helpers/__fixtures__/wiki-status-fixture.ts": true,
7578
7581
  "tests/helpers/cpu-budget.ts": true,
7579
7582
  "tests/helpers/gate-capture.ts": true,
7583
+ "tests/helpers/hardcoded-temp-path-scan.ts": true,
7580
7584
  "tests/helpers/hook-roster.ts": true,
7581
7585
  "tests/helpers/io-latency-budget.ts": true,
7582
7586
  "tests/helpers/nightly-e2e-gate-harness.ts": true,
@@ -7600,6 +7604,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7600
7604
  "tests/integration/apply-reports-unchanged-manifest.test.ts": true,
7601
7605
  "tests/integration/bootstrap-keychain.test.ts": true,
7602
7606
  "tests/integration/cli-smoke.test.ts": true,
7607
+ "tests/integration/coverage-scratch-debris.test.ts": true,
7603
7608
  "tests/integration/deletion-reference-guard.test.ts": true,
7604
7609
  "tests/integration/emitted-scripts-survive-shipped-fixer.test.ts": true,
7605
7610
  "tests/integration/environment-facade-gates.test.ts": true,
@@ -7859,6 +7864,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7859
7864
  "tests/unit/config/gate-task-shipped-to-templates.test.ts": true,
7860
7865
  "tests/unit/config/gitleaks-template.test.ts": true,
7861
7866
  "tests/unit/config/governed-script-composition-points.test.ts": true,
7867
+ "tests/unit/config/hardcoded-temp-path-detector.test.ts": true,
7862
7868
  "tests/unit/config/harper-fabric-template.test.ts": true,
7863
7869
  "tests/unit/config/jest-base.test.ts": true,
7864
7870
  "tests/unit/config/jest-expo.test.ts": true,
@@ -7877,6 +7883,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7877
7883
  "tests/unit/config/postinstall-cloud-session-guard.test.ts": true,
7878
7884
  "tests/unit/config/rails-template.test.ts": true,
7879
7885
  "tests/unit/config/release-push-retry.test.ts": true,
7886
+ "tests/unit/config/scratch-run-root-teardown.test.ts": true,
7880
7887
  "tests/unit/config/security-pin-floors.test.ts": true,
7881
7888
  "tests/unit/config/shipped-mjs-roster.test.ts": true,
7882
7889
  "tests/unit/config/template-script-toolchain.test.ts": true,
@@ -8143,6 +8150,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8143
8150
  "tests/unit/scripts/lisa-run-gates-floor.test.ts": true,
8144
8151
  "tests/unit/scripts/lisa-run-gates-shared-prover.test.ts": true,
8145
8152
  "tests/unit/scripts/lisa-run-gates-shipped-as.test.ts": true,
8153
+ "tests/unit/scripts/lisa-run-gates-unproved.test.ts": true,
8146
8154
  "tests/unit/scripts/lisa-run-gates.test.ts": true,
8147
8155
  "tests/unit/scripts/lisa-test-node.test.ts": true,
8148
8156
  "tests/unit/scripts/lisa-work-item-complete.test.ts": true,
@@ -8486,6 +8494,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8486
8494
  "tests/unit/sync/health-schedule.test.ts": true,
8487
8495
  "tests/unit/sync/legacy-monitor-thresholds.test.ts": true,
8488
8496
  "tests/unit/sync/linear-workflow-registry.test.ts": true,
8497
+ "tests/unit/sync/mutation-floor-divergence.test.ts": true,
8498
+ "tests/unit/sync/stryker-thresholds-ownership.test.ts": true,
8489
8499
  "tests/unit/templates/dependency-decisions-template.test.ts": true,
8490
8500
  "tests/unit/templates/lisa-dependency-decisions-seed.test.ts": true,
8491
8501
  "tests/unit/templates/project-learnings-template.test.ts": true,