@codyswann/lisa 4.48.0 → 4.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/configs/vitest/base.d.ts +71 -1
- package/dist/configs/vitest/base.d.ts.map +1 -1
- package/dist/configs/vitest/base.js +141 -23
- package/dist/configs/vitest/base.js.map +1 -1
- package/dist/configs/vitest/fleet-admission-global-setup.d.ts +34 -0
- package/dist/configs/vitest/fleet-admission-global-setup.d.ts.map +1 -0
- package/dist/configs/vitest/fleet-admission-global-setup.js +123 -0
- package/dist/configs/vitest/fleet-admission-global-setup.js.map +1 -0
- package/dist/configs/vitest/fleet-admission.d.ts +129 -0
- package/dist/configs/vitest/fleet-admission.d.ts.map +1 -0
- package/dist/configs/vitest/fleet-admission.js +239 -0
- package/dist/configs/vitest/fleet-admission.js.map +1 -0
- package/dist/configs/vitest/synthesis-scratch-reclaim.d.ts +86 -0
- package/dist/configs/vitest/synthesis-scratch-reclaim.d.ts.map +1 -0
- package/dist/configs/vitest/synthesis-scratch-reclaim.js +226 -0
- package/dist/configs/vitest/synthesis-scratch-reclaim.js.map +1 -0
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +9 -1
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +4 -4
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/scripts/cleanup-worktrees.sh +69 -16
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reclaim for abandoned CDK synthesis assemblies left in the platform temp root.
|
|
3
|
+
*
|
|
4
|
+
* The scratch sweep in this directory reclaims what Lisa created, proved by an
|
|
5
|
+
* owner token it wrote itself. Synthesis assemblies carry no such token: CDK
|
|
6
|
+
* calls `mkdtemp` against the platform temp root with prefix `cdk.out`, so the
|
|
7
|
+
* directory is real, unowned, and indistinguishable by name from one a live
|
|
8
|
+
* synthesis is still writing.
|
|
9
|
+
*
|
|
10
|
+
* `isStaleForeignEntry` refuses to authorize a foreign entry on age alone, and
|
|
11
|
+
* that refusal is correct — a long synthesis is indistinguishable from an
|
|
12
|
+
* abandoned one by mtime. This module supplies the authority age cannot:
|
|
13
|
+
* **evidence that the writer finished**. CDK writes `manifest.json` when an
|
|
14
|
+
* assembly completes, so its presence is positive proof that the process which
|
|
15
|
+
* created the directory got to the end of its work. A directory still being
|
|
16
|
+
* written has no manifest, and one that just finished has a recent mtime.
|
|
17
|
+
*
|
|
18
|
+
* Both facts must hold before anything is removed, and every other case is
|
|
19
|
+
* reported as undetermined rather than swept. The unsafe path here is the one
|
|
20
|
+
* that looks like progress: deleting everything matching the prefix finishes
|
|
21
|
+
* fast and frees the disk, right up until it takes a live synthesis with it.
|
|
22
|
+
* @module configs/vitest/synthesis-scratch-reclaim
|
|
23
|
+
*/
|
|
24
|
+
import { randomBytes } from "node:crypto";
|
|
25
|
+
import * as fs from "node:fs";
|
|
26
|
+
import * as path from "node:path";
|
|
27
|
+
/** Prefix CDK uses for a `mkdtemp` cloud-assembly directory. */
|
|
28
|
+
export const SYNTHESIS_PREFIX = "cdk.out";
|
|
29
|
+
/** File CDK writes when an assembly completes. */
|
|
30
|
+
export const COMPLETION_MANIFEST = "manifest.json";
|
|
31
|
+
/** How long an assembly must be untouched before completion authorizes removal. */
|
|
32
|
+
export const DEFAULT_QUIESCENCE_MS = 24 * 60 * 60 * 1000;
|
|
33
|
+
/**
|
|
34
|
+
* Judge one candidate from its facts alone.
|
|
35
|
+
*
|
|
36
|
+
* Ordered so the conservative arms win: anything that is not a plain directory,
|
|
37
|
+
* or cannot be read, or was touched recently, is kept before completion is even
|
|
38
|
+
* consulted. Completion is necessary but never sufficient.
|
|
39
|
+
* @param facts - Facts read from the candidate
|
|
40
|
+
* @param quiescenceMs - Required untouched interval
|
|
41
|
+
* @returns The bucket and the reason for it
|
|
42
|
+
*/
|
|
43
|
+
export const classifySynthesisEntry = (facts, quiescenceMs = DEFAULT_QUIESCENCE_MS) => {
|
|
44
|
+
const { name } = facts;
|
|
45
|
+
const minutes = String(Math.round(facts.ageMs / 60000));
|
|
46
|
+
const hours = String(Math.round(facts.ageMs / 3600000));
|
|
47
|
+
if (!facts.directory)
|
|
48
|
+
return {
|
|
49
|
+
disposition: "undetermined",
|
|
50
|
+
name,
|
|
51
|
+
reason: "not a plain directory; a link or file is never followed",
|
|
52
|
+
};
|
|
53
|
+
if (!facts.readable)
|
|
54
|
+
return {
|
|
55
|
+
disposition: "undetermined",
|
|
56
|
+
name,
|
|
57
|
+
reason: "contents could not be listed, so completion cannot be established",
|
|
58
|
+
};
|
|
59
|
+
if (facts.ageMs < quiescenceMs)
|
|
60
|
+
return {
|
|
61
|
+
disposition: "live",
|
|
62
|
+
name,
|
|
63
|
+
reason: `modified ${minutes} minute(s) ago, inside the quiescence window`,
|
|
64
|
+
};
|
|
65
|
+
if (!facts.complete)
|
|
66
|
+
return {
|
|
67
|
+
disposition: "undetermined",
|
|
68
|
+
name,
|
|
69
|
+
reason: `no ${COMPLETION_MANIFEST}, so the writer is not proven to have finished`,
|
|
70
|
+
};
|
|
71
|
+
return {
|
|
72
|
+
disposition: "reclaimable",
|
|
73
|
+
name,
|
|
74
|
+
reason: `completed assembly, untouched for ${hours} hour(s)`,
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Stat a candidate without following it, returning nothing when it is absent.
|
|
79
|
+
* @param candidate - Absolute candidate path
|
|
80
|
+
* @returns Candidate metadata, or undefined
|
|
81
|
+
*/
|
|
82
|
+
const lstatIfPresent = (candidate) => {
|
|
83
|
+
try {
|
|
84
|
+
return fs.lstatSync(candidate);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* List a directory's children, returning nothing when it cannot be read.
|
|
92
|
+
* @param candidate - Absolute directory path
|
|
93
|
+
* @returns Direct child names, or undefined
|
|
94
|
+
*/
|
|
95
|
+
const readdirIfPossible = (candidate) => {
|
|
96
|
+
try {
|
|
97
|
+
return fs.readdirSync(candidate);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Read the facts for one candidate without ever following a symlink.
|
|
105
|
+
* @param root - Directory holding the candidate
|
|
106
|
+
* @param name - Direct child basename
|
|
107
|
+
* @param now - Clock reading for the age computation
|
|
108
|
+
* @returns Facts describing the candidate
|
|
109
|
+
*/
|
|
110
|
+
export const readSynthesisEntryFacts = (root, name, now) => {
|
|
111
|
+
const candidate = path.join(root, name);
|
|
112
|
+
const stat = lstatIfPresent(candidate);
|
|
113
|
+
if (stat === undefined || !stat.isDirectory())
|
|
114
|
+
return {
|
|
115
|
+
ageMs: 0,
|
|
116
|
+
complete: false,
|
|
117
|
+
directory: false,
|
|
118
|
+
name,
|
|
119
|
+
readable: false,
|
|
120
|
+
};
|
|
121
|
+
const children = readdirIfPossible(candidate);
|
|
122
|
+
return {
|
|
123
|
+
ageMs: Math.max(0, now - stat.mtimeMs),
|
|
124
|
+
complete: children?.includes(COMPLETION_MANIFEST) ?? false,
|
|
125
|
+
directory: true,
|
|
126
|
+
name,
|
|
127
|
+
readable: children !== undefined,
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Revalidate a quarantined candidate against its pre-rename identity.
|
|
132
|
+
*
|
|
133
|
+
* This is the arm that survives a writer racing the decision: a directory
|
|
134
|
+
* swapped for a symlink between the judgement and the unlink fails here rather
|
|
135
|
+
* than being followed out of the root.
|
|
136
|
+
* @param quarantine - Quarantined path
|
|
137
|
+
* @param before - Pinned pre-rename metadata
|
|
138
|
+
* @throws When device, inode or kind changed across the rename
|
|
139
|
+
*/
|
|
140
|
+
const assertIdentityUnchanged = (quarantine, before) => {
|
|
141
|
+
const after = fs.lstatSync(quarantine);
|
|
142
|
+
if (after.dev !== before.dev ||
|
|
143
|
+
after.ino !== before.ino ||
|
|
144
|
+
!after.isDirectory())
|
|
145
|
+
throw new Error("Synthesis assembly identity changed during quarantine");
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Quarantine one candidate and unlink it, revalidating identity across the rename.
|
|
149
|
+
* @param root - Directory holding the candidate
|
|
150
|
+
* @param name - Direct child basename
|
|
151
|
+
* @param afterQuarantine - Adversarial hook for tests
|
|
152
|
+
* @returns True when the entry was removed
|
|
153
|
+
*/
|
|
154
|
+
const quarantineAndRemove = (root, name, afterQuarantine) => {
|
|
155
|
+
const candidate = path.join(root, name);
|
|
156
|
+
const before = fs.lstatSync(candidate);
|
|
157
|
+
const suffix = randomBytes(6).toString("hex");
|
|
158
|
+
const quarantine = path.join(root, `.${SYNTHESIS_PREFIX}-reclaim-${String(process.pid)}-${suffix}`);
|
|
159
|
+
if (!before.isDirectory())
|
|
160
|
+
return false;
|
|
161
|
+
fs.renameSync(candidate, quarantine);
|
|
162
|
+
afterQuarantine?.(quarantine);
|
|
163
|
+
assertIdentityUnchanged(quarantine, before);
|
|
164
|
+
fs.rmSync(quarantine, { force: true, recursive: true });
|
|
165
|
+
return true;
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Attempt one fenced removal, converting a refusal into a reported outcome.
|
|
169
|
+
* @param options - Root and hooks for this pass
|
|
170
|
+
* @param verdict - The reclaimable verdict to act on
|
|
171
|
+
* @returns Whether it was removed, and the verdict to report
|
|
172
|
+
*/
|
|
173
|
+
const attemptRemoval = (options, verdict) => {
|
|
174
|
+
if (options.apply !== true)
|
|
175
|
+
return { removed: true, verdict };
|
|
176
|
+
try {
|
|
177
|
+
const removed = quarantineAndRemove(options.root, verdict.name, options.afterQuarantine);
|
|
178
|
+
return removed
|
|
179
|
+
? { removed, verdict }
|
|
180
|
+
: {
|
|
181
|
+
removed,
|
|
182
|
+
verdict: { ...verdict, reason: "no longer a plain directory" },
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
return {
|
|
187
|
+
removed: false,
|
|
188
|
+
verdict: { ...verdict, reason: error.message },
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Reclaim completed, quiescent synthesis assemblies from one temp root.
|
|
194
|
+
*
|
|
195
|
+
* Removes nothing when no candidate matches the convention: a naming change in
|
|
196
|
+
* the producing tool must read as "recognised nothing" rather than as a clean
|
|
197
|
+
* sweep, because the two are opposite facts and only one of them is good news.
|
|
198
|
+
* @param options - Root, clock, thresholds and hooks
|
|
199
|
+
* @returns What was found in each bucket, and what was removed
|
|
200
|
+
*/
|
|
201
|
+
export function reclaimSynthesisScratch(options) {
|
|
202
|
+
const now = options.now ?? Date.now();
|
|
203
|
+
const quiescenceMs = options.quiescenceMs ?? DEFAULT_QUIESCENCE_MS;
|
|
204
|
+
const names = (readdirIfPossible(options.root) ?? []).filter(entry => entry.startsWith(SYNTHESIS_PREFIX));
|
|
205
|
+
const empty = {
|
|
206
|
+
live: [],
|
|
207
|
+
reclaimed: [],
|
|
208
|
+
recognised: false,
|
|
209
|
+
refused: [],
|
|
210
|
+
undetermined: [],
|
|
211
|
+
};
|
|
212
|
+
if (names.length === 0)
|
|
213
|
+
return empty;
|
|
214
|
+
const verdicts = names.map(name => classifySynthesisEntry(readSynthesisEntryFacts(options.root, name, now), quiescenceMs));
|
|
215
|
+
const outcomes = verdicts
|
|
216
|
+
.filter(one => one.disposition === "reclaimable")
|
|
217
|
+
.map(verdict => attemptRemoval(options, verdict));
|
|
218
|
+
return {
|
|
219
|
+
live: verdicts.filter(one => one.disposition === "live"),
|
|
220
|
+
reclaimed: outcomes.filter(one => one.removed).map(one => one.verdict),
|
|
221
|
+
recognised: true,
|
|
222
|
+
refused: outcomes.filter(one => !one.removed).map(one => one.verdict),
|
|
223
|
+
undetermined: verdicts.filter(one => one.disposition === "undetermined"),
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=synthesis-scratch-reclaim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesis-scratch-reclaim.js","sourceRoot":"","sources":["../../../src/configs/vitest/synthesis-scratch-reclaim.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,9 +34,9 @@ export const NIGHTLY_E2E_GUARD_BEHAVIOR_CERTIFICATES = Object.freeze({
|
|
|
34
34
|
}),
|
|
35
35
|
dfd2fef680de5ef03e63075e8a61c62ca4d95cdfdff6201939b79c748d3397f6: Object.freeze({
|
|
36
36
|
contractVersion: "1.9.0",
|
|
37
|
-
packageVersions: Object.freeze(["4.
|
|
37
|
+
packageVersions: Object.freeze(["4.49.0"]),
|
|
38
38
|
provenances: Object.freeze([
|
|
39
|
-
"workspace package @codyswann/lisa@4.
|
|
39
|
+
"workspace package @codyswann/lisa@4.49.0 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
|
|
40
40
|
]),
|
|
41
41
|
}),
|
|
42
42
|
});
|
|
@@ -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,CAwlFpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,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,CAwlFpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAy4QjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -1165,7 +1165,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1165
1165
|
"scripts/cleanup-amplify-branches.sh": "eb9db90b07818dd156dd48d04b6350a10b39be8ffe0267d72cc13705c8eb5350",
|
|
1166
1166
|
"scripts/cleanup-github-branches.sh": "88d7442700c3277cbf96c0f3250b8169fdd43812d585ddac417843a65e2b548c",
|
|
1167
1167
|
"scripts/cleanup-local-merged-branches.sh": "1f9bc0419187b3cdf0182106588e35dc1068d921be74331aab3737a9de25de57",
|
|
1168
|
-
"scripts/cleanup-worktrees.sh": "
|
|
1168
|
+
"scripts/cleanup-worktrees.sh": "711f73fc9238da6a41e16488b77fc7c6ffa1f60b1edec01111959830789d177c",
|
|
1169
1169
|
"scripts/copy-codex-scripts.mjs": "2d7082d5033088c85f66995aee9e3ee1e7751435e65bfde8e1cb002e6689d476",
|
|
1170
1170
|
"scripts/copy-opencode-plugin-templates.mjs": "4d68863cd8414d29218280cded63f2c29c3f8d51d8e74cc3b6adfec4f25b06ec",
|
|
1171
1171
|
"scripts/detect-stale-workflow-inputs.mjs": "04274c1ed972c040ccf0b64aba193368d652769094db6d97706706530e93d74f",
|
|
@@ -7714,6 +7714,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7714
7714
|
"src/configs/vitest/coverage-include-authority.ts": true,
|
|
7715
7715
|
"src/configs/vitest/coverage-include-global-setup.ts": true,
|
|
7716
7716
|
"src/configs/vitest/coverage-reports-directory.ts": true,
|
|
7717
|
+
"src/configs/vitest/fleet-admission-global-setup.ts": true,
|
|
7718
|
+
"src/configs/vitest/fleet-admission.ts": true,
|
|
7717
7719
|
"src/configs/vitest/harper-fabric.ts": true,
|
|
7718
7720
|
"src/configs/vitest/index.ts": true,
|
|
7719
7721
|
"src/configs/vitest/nestjs.ts": true,
|
|
@@ -7736,6 +7738,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7736
7738
|
"src/configs/vitest/scratch-sweep.ts": true,
|
|
7737
7739
|
"src/configs/vitest/scratch-tmpdir-trust.ts": true,
|
|
7738
7740
|
"src/configs/vitest/scratch.ts": true,
|
|
7741
|
+
"src/configs/vitest/synthesis-scratch-reclaim.ts": true,
|
|
7739
7742
|
"src/configs/vitest/typescript.ts": true,
|
|
7740
7743
|
"src/configs/worktrees.ts": true,
|
|
7741
7744
|
"src/copilot/copilot-instructions-installer.ts": true,
|
|
@@ -8595,6 +8598,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8595
8598
|
"tests/unit/config/scratch-tmpdir-trust.test.ts": true,
|
|
8596
8599
|
"tests/unit/config/security-pin-floors.test.ts": true,
|
|
8597
8600
|
"tests/unit/config/shipped-mjs-roster.test.ts": true,
|
|
8601
|
+
"tests/unit/config/synthesis-scratch-reclaim.test.ts": true,
|
|
8598
8602
|
"tests/unit/config/template-script-toolchain.test.ts": true,
|
|
8599
8603
|
"tests/unit/config/test-run-child-process-analyzer.test.ts": true,
|
|
8600
8604
|
"tests/unit/config/test-run-supervision-wiring.test.ts": true,
|
|
@@ -8604,6 +8608,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8604
8608
|
"tests/unit/config/tsconfig-template-references.test.ts": true,
|
|
8605
8609
|
"tests/unit/config/vitest-base.test.ts": true,
|
|
8606
8610
|
"tests/unit/config/vitest-cdk.test.ts": true,
|
|
8611
|
+
"tests/unit/config/vitest-fleet-admission.test.ts": true,
|
|
8612
|
+
"tests/unit/config/vitest-fleet-denominator.test.ts": true,
|
|
8607
8613
|
"tests/unit/config/vitest-fleet-discovery.test.ts": true,
|
|
8608
8614
|
"tests/unit/config/vitest-nestjs.test.ts": true,
|
|
8609
8615
|
"tests/unit/config/vitest-scratch-inspection.test.ts": true,
|
|
@@ -8958,6 +8964,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8958
8964
|
"tests/unit/scripts/check-whole-output-guards.test.ts": true,
|
|
8959
8965
|
"tests/unit/scripts/check-workflow-package-contracts.test.ts": true,
|
|
8960
8966
|
"tests/unit/scripts/check-workflow-package-paths.test.ts": true,
|
|
8967
|
+
"tests/unit/scripts/cleanup-worktrees-apply.test.ts": true,
|
|
8968
|
+
"tests/unit/scripts/cleanup-worktrees-unreadable.test.ts": true,
|
|
8961
8969
|
"tests/unit/scripts/codex-hook-filter.test.ts": true,
|
|
8962
8970
|
"tests/unit/scripts/command-envelope.test.ts": true,
|
|
8963
8971
|
"tests/unit/scripts/conflict-prover-markers-and-index.test.ts": true,
|