@codyswann/lisa 2.310.3 → 2.310.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 (67) hide show
  1. package/dist/cli/doctor-readiness-supply-chain-go-assess.d.ts +8 -0
  2. package/dist/cli/doctor-readiness-supply-chain-go-assess.d.ts.map +1 -0
  3. package/dist/cli/doctor-readiness-supply-chain-go-assess.js +132 -0
  4. package/dist/cli/doctor-readiness-supply-chain-go-assess.js.map +1 -0
  5. package/dist/cli/doctor-readiness-supply-chain-go.d.ts +39 -0
  6. package/dist/cli/doctor-readiness-supply-chain-go.d.ts.map +1 -0
  7. package/dist/cli/doctor-readiness-supply-chain-go.js +249 -0
  8. package/dist/cli/doctor-readiness-supply-chain-go.js.map +1 -0
  9. package/dist/cli/doctor-readiness-supply-chain.d.ts.map +1 -1
  10. package/dist/cli/doctor-readiness-supply-chain.js +20 -7
  11. package/dist/cli/doctor-readiness-supply-chain.js.map +1 -1
  12. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  13. package/dist/core/upstream-evidence-manifest.js +4 -0
  14. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  15. package/dist/utils/json-utils.js +36 -3
  16. package/dist/utils/json-utils.js.map +1 -1
  17. package/package.json +2 -1
  18. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  20. package/plugins/lisa-agy/plugin.json +1 -1
  21. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  23. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  24. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  30. package/plugins/lisa-expo-agy/plugin.json +1 -1
  31. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  35. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  36. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  40. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  41. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  45. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  46. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  50. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  51. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  55. package/plugins/lisa-rails-agy/plugin.json +1 -1
  56. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  60. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  61. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  65. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  66. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
@@ -0,0 +1,8 @@
1
+ import type { ReadinessDimensionRecord } from "./doctor-readiness-types.js";
2
+ /**
3
+ * Assess Go module dependencies when no JavaScript manifest exists.
4
+ * @param root - Repository root to assess
5
+ * @returns The B5 record, or null when no Go manifest exists
6
+ */
7
+ export declare function assessGoDependenciesSupplyChainDimension(root: string): Promise<ReadinessDimensionRecord | null>;
8
+ //# sourceMappingURL=doctor-readiness-supply-chain-go-assess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-readiness-supply-chain-go-assess.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-supply-chain-go-assess.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AA+F5E;;;;GAIG;AACH,wBAAsB,wCAAwC,CAC5D,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CA6C1C"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Go module B5 readiness record construction.
3
+ * @module cli/doctor-readiness-supply-chain-go-assess
4
+ */
5
+ import { informationalFindings } from "./doctor-readiness-shared.js";
6
+ import { DEPENDENCIES_SUPPLY_CHAIN_DIMENSION_ID, MAX_EVIDENCE_LINES, SUPPLY_CHAIN_BLOCKER_ID, } from "./doctor-readiness-supply-chain-constants.js";
7
+ import { findGoAuditGate, findGoLockfile, isFloatingGoSpec, readGoManifest, } from "./doctor-readiness-supply-chain-go.js";
8
+ const GO_MOD = "go.mod";
9
+ const GO_SUM = "go.sum";
10
+ /**
11
+ * Build the rubric-shaped B5 finding from evidence lines.
12
+ * @param violations - Evidence lines
13
+ * @returns The B5 finding
14
+ */
15
+ function supplyChainFinding(violations) {
16
+ const shown = violations.slice(0, MAX_EVIDENCE_LINES);
17
+ const overflow = violations.length - shown.length;
18
+ return {
19
+ blocker: SUPPLY_CHAIN_BLOCKER_ID,
20
+ invariant_violated: "belief that the owned surface still works rests on a repeatable install " +
21
+ "and a standing audit, not on hope",
22
+ evidence: shown.join(" | ") +
23
+ (overflow > 0
24
+ ? ` | (+${overflow} further finding(s) of the same kind)`
25
+ : ""),
26
+ why_proof_missed: "the test suite proves things about the code in the tree it happened to " +
27
+ "install, so a tree that drifts — or one carrying a known advisory nobody " +
28
+ "checks for — still reports green",
29
+ root_correction: "commit a module checksum file, name a version for every module " +
30
+ "requirement, and run a Go dependency audit on every push",
31
+ machinery_to_remove: [
32
+ "manual dependency review with no standing module checksum and audit gate",
33
+ ],
34
+ };
35
+ }
36
+ /**
37
+ * Build a stated-reason SKIP record.
38
+ * @param reason - Why the dimension was not assessed
39
+ * @returns The SKIP dimension record
40
+ */
41
+ function skipRecord(reason) {
42
+ return {
43
+ id: DEPENDENCIES_SUPPLY_CHAIN_DIMENSION_ID,
44
+ status: "SKIP",
45
+ findings: [{ reason, skip: true }],
46
+ };
47
+ }
48
+ /**
49
+ * Build B5 evidence lines for a Go module project.
50
+ * @param specs - Go module requirements under assessment
51
+ * @param lockfile - Committed checksum file path, or null when absent
52
+ * @param auditGate - Audit gate path, or null when absent
53
+ * @returns Evidence lines for B5 violations
54
+ */
55
+ function goSupplyChainViolations(specs, lockfile, auditGate) {
56
+ if (specs.length === 0) {
57
+ return [];
58
+ }
59
+ return [
60
+ ...(lockfile === null
61
+ ? [
62
+ `\`${GO_MOD}\` declares ${specs.length} Go module requirement(s) ` +
63
+ `but no \`${GO_SUM}\` is committed — two module downloads can ` +
64
+ "resolve to different transitive checksums, so what was " +
65
+ "validated is not provably what gets installed",
66
+ ]
67
+ : []),
68
+ ...specs
69
+ .filter(spec => isFloatingGoSpec(spec.spec))
70
+ .map(spec => `\`${GO_MOD}\` module \`${spec.name}\` names no pinned version, so ` +
71
+ "Go may resolve a branch or latest module state rather than a " +
72
+ "version any run intentionally chose"),
73
+ ...(auditGate === null
74
+ ? [
75
+ "no Go dependency-audit gate was found anywhere — no " +
76
+ "`govulncheck`/`osv-scanner` step in `.github/workflows/*.yml`, " +
77
+ "none in a git hook, and no `dependabot.yml` gomod entry or Go " +
78
+ "Renovate manager — so a newly disclosed advisory in this module " +
79
+ "tree would never be noticed by anything",
80
+ ]
81
+ : []),
82
+ ];
83
+ }
84
+ /**
85
+ * Assess Go module dependencies when no JavaScript manifest exists.
86
+ * @param root - Repository root to assess
87
+ * @returns The B5 record, or null when no Go manifest exists
88
+ */
89
+ export async function assessGoDependenciesSupplyChainDimension(root) {
90
+ const go = await readGoManifest(root);
91
+ if (go.kind === "absent") {
92
+ return null;
93
+ }
94
+ if (go.specs.length === 0) {
95
+ return skipRecord("`go.mod` was found but declares no module requirements, so this " +
96
+ "repository owns no Go third-party surface a confidence model could " +
97
+ "cover; supply-chain confidence is not established either way");
98
+ }
99
+ const lockfile = await findGoLockfile(root);
100
+ const auditGate = await findGoAuditGate(root);
101
+ const violations = goSupplyChainViolations(go.specs, lockfile, auditGate);
102
+ const observations = [
103
+ ...(lockfile === null ? [] : [`Go checksum file in use: \`${lockfile}\`.`]),
104
+ ...(auditGate === null
105
+ ? []
106
+ : [`Go dependency-audit gate declared in \`${auditGate}\`.`]),
107
+ ];
108
+ if (violations.length > 0) {
109
+ return {
110
+ id: DEPENDENCIES_SUPPLY_CHAIN_DIMENSION_ID,
111
+ status: "FAIL",
112
+ findings: [
113
+ supplyChainFinding(violations),
114
+ ...informationalFindings(observations),
115
+ ],
116
+ };
117
+ }
118
+ return {
119
+ id: DEPENDENCIES_SUPPLY_CHAIN_DIMENSION_ID,
120
+ status: "PASS",
121
+ findings: [
122
+ {
123
+ evidence: `Inspected ${go.specs.length} Go module requirement(s) in ` +
124
+ "`go.mod`: each module names a pinned version, `go.sum` is " +
125
+ "committed, and a Go dependency-audit gate is declared.",
126
+ checked: [SUPPLY_CHAIN_BLOCKER_ID],
127
+ },
128
+ ...informationalFindings(observations),
129
+ ],
130
+ };
131
+ }
132
+ //# sourceMappingURL=doctor-readiness-supply-chain-go-assess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-readiness-supply-chain-go-assess.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-supply-chain-go-assess.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /** One Go module requirement flattened from `go.mod`. */
2
+ export interface GoDependencySpec {
3
+ readonly manifestPath: "go.mod";
4
+ readonly name: string;
5
+ readonly spec: string | null;
6
+ }
7
+ /** What reading a Go module manifest established. */
8
+ export type GoManifestOutcome = {
9
+ readonly kind: "absent";
10
+ } | {
11
+ readonly kind: "ok";
12
+ readonly manifestPath: "go.mod";
13
+ readonly specs: readonly GoDependencySpec[];
14
+ };
15
+ /**
16
+ * Read the Go module dependency manifest when no JavaScript manifest exists.
17
+ * @param root - Repository root
18
+ * @returns Parsed Go module specs, or absent when this is not a Go module
19
+ */
20
+ export declare function readGoManifest(root: string): Promise<GoManifestOutcome>;
21
+ /**
22
+ * Find the committed Go module checksum file.
23
+ * @param root - Repository root
24
+ * @returns The checksum file path, or null when none is committed
25
+ */
26
+ export declare function findGoLockfile(root: string): Promise<string | null>;
27
+ /**
28
+ * Find where the repository audits its Go module dependency tree.
29
+ * @param root - Repository root
30
+ * @returns The repo-relative path of the first Go audit gate found, or null
31
+ */
32
+ export declare function findGoAuditGate(root: string): Promise<string | null>;
33
+ /**
34
+ * Check whether a Go module requirement spec floats.
35
+ * @param spec - Version/pseudo-version from go.mod
36
+ * @returns True when the spec is absent or branch-like rather than pinned
37
+ */
38
+ export declare function isFloatingGoSpec(spec: string | null): boolean;
39
+ //# sourceMappingURL=doctor-readiness-supply-chain-go.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-readiness-supply-chain-go.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-supply-chain-go.ts"],"names":[],"mappings":"AAkDA,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,qDAAqD;AACrD,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC7C,CAAC;AA+IN;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAM7E;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEzE;AA8CD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoB1E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE7D"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Go module scanning for the dependencies/supply-chain readiness producer
3
+ * (B5, PRD #1739, #1896).
4
+ * @module cli/doctor-readiness-supply-chain-go
5
+ */
6
+ import { readdir } from "node:fs/promises";
7
+ import * as path from "node:path";
8
+ import { readFileOrNull } from "./doctor-readiness-shared.js";
9
+ /** Dependabot ecosystem spelling for Go module dependency updates. */
10
+ const GO_ECOSYSTEM_PATTERN = /package-ecosystem:\s*["']?gomod\b/i;
11
+ /** Commands and scanners that audit Go module dependencies. */
12
+ const GO_AUDIT_GATE_PATTERN = /\b(govulncheck|osv-scanner|snyk|trivy|grype)\b/i;
13
+ /** Renovate manager spelling for Go module dependencies. */
14
+ const RENOVATE_GO_PATTERN = /\b(gomod|golang|go_modules?)\b/i;
15
+ /** Files that may declare an audit gate in their text. */
16
+ const GATE_DIRECTORIES = [
17
+ path.join(".github", "workflows"),
18
+ ".husky",
19
+ ];
20
+ /** Single-file gate declarations checked by text match. */
21
+ const GATE_FILES = [
22
+ "lefthook.yml",
23
+ "lefthook.yaml",
24
+ ".lefthook.yml",
25
+ ];
26
+ /** Update bots whose mere presence is a standing confidence model. */
27
+ const UPDATE_BOT_FILES = [
28
+ path.join(".github", "dependabot.yml"),
29
+ path.join(".github", "dependabot.yaml"),
30
+ path.join(".github", "renovate.json"),
31
+ "renovate.json",
32
+ ".renovaterc",
33
+ ".renovaterc.json",
34
+ ];
35
+ /** Go module specs that do not pin a version or pseudo-version. */
36
+ const FLOATING_SPECS = new Set([
37
+ "",
38
+ "latest",
39
+ "main",
40
+ "master",
41
+ "HEAD",
42
+ ]);
43
+ /**
44
+ * Whether a repository-relative path exists.
45
+ * @param root - Repository root
46
+ * @param relativePath - Repo-relative path
47
+ * @returns True when the file could be read
48
+ */
49
+ async function fileExists(root, relativePath) {
50
+ return (await readFileOrNull(root, relativePath)) !== null;
51
+ }
52
+ /**
53
+ * List files directly inside a repository-relative directory.
54
+ * @param root - Repository root
55
+ * @param relativeDir - Repo-relative directory
56
+ * @returns Repo-relative file paths
57
+ */
58
+ async function listDirectory(root, relativeDir) {
59
+ try {
60
+ const entries = await readdir(path.join(root, relativeDir), {
61
+ withFileTypes: true,
62
+ });
63
+ return entries
64
+ .filter(entry => entry.isFile())
65
+ .map(entry => path.join(relativeDir, entry.name))
66
+ .sort((a, b) => a.localeCompare(b));
67
+ }
68
+ catch {
69
+ return [];
70
+ }
71
+ }
72
+ /**
73
+ * Remove a trailing line comment from go.mod syntax.
74
+ * @param line - Raw go.mod line
75
+ * @returns The uncommented prefix
76
+ */
77
+ function stripGoComment(line) {
78
+ const commentStart = line.indexOf("//");
79
+ return (commentStart === -1 ? line : line.slice(0, commentStart)).trim();
80
+ }
81
+ /**
82
+ * Parse one module/version pair from a `require` line.
83
+ * @param line - Raw line without the leading `require` keyword
84
+ * @returns A dependency spec, or null for unparsable lines
85
+ */
86
+ function parseRequireSpec(line) {
87
+ const parts = stripGoComment(line).split(/\s+/u).filter(Boolean);
88
+ const [name, spec] = parts;
89
+ if (name === undefined) {
90
+ return null;
91
+ }
92
+ return {
93
+ manifestPath: "go.mod",
94
+ name,
95
+ spec: spec ?? null,
96
+ };
97
+ }
98
+ /**
99
+ * Whether a trimmed go.mod line starts a require block.
100
+ * @param line - Trimmed go.mod line
101
+ * @returns True when the line is `require (`
102
+ */
103
+ function startsRequireBlock(line) {
104
+ return line === "require (" || line === "require(";
105
+ }
106
+ /**
107
+ * Append a parsed requirement if the line contains one.
108
+ * @param specs - Existing specs
109
+ * @param line - Raw requirement text
110
+ * @returns Specs with the parsed requirement appended when present
111
+ */
112
+ function appendRequireSpec(specs, line) {
113
+ const spec = parseRequireSpec(line);
114
+ return spec === null ? specs : [...specs, spec];
115
+ }
116
+ /**
117
+ * Parse one go.mod line while tracking whether we are inside a require block.
118
+ * @param state - Current parser state
119
+ * @param rawLine - Raw go.mod line
120
+ * @returns Updated parser state
121
+ */
122
+ function collectGoSpecLine(state, rawLine) {
123
+ const line = stripGoComment(rawLine);
124
+ if (line === "") {
125
+ return state;
126
+ }
127
+ if (state.inRequireBlock) {
128
+ return line === ")"
129
+ ? { inRequireBlock: false, specs: state.specs }
130
+ : {
131
+ inRequireBlock: true,
132
+ specs: appendRequireSpec(state.specs, line),
133
+ };
134
+ }
135
+ if (startsRequireBlock(line)) {
136
+ return { inRequireBlock: true, specs: state.specs };
137
+ }
138
+ if (line.startsWith("require ")) {
139
+ return {
140
+ inRequireBlock: false,
141
+ specs: appendRequireSpec(state.specs, line.slice("require ".length)),
142
+ };
143
+ }
144
+ return state;
145
+ }
146
+ /**
147
+ * Flatten Go module requirements from go.mod.
148
+ * @param source - go.mod source
149
+ * @returns Parsed module requirements
150
+ */
151
+ function collectGoSpecs(source) {
152
+ return source
153
+ .split(/\r?\n/u)
154
+ .reduce((state, line) => collectGoSpecLine(state, line), { inRequireBlock: false, specs: [] }).specs;
155
+ }
156
+ /**
157
+ * Read the Go module dependency manifest when no JavaScript manifest exists.
158
+ * @param root - Repository root
159
+ * @returns Parsed Go module specs, or absent when this is not a Go module
160
+ */
161
+ export async function readGoManifest(root) {
162
+ const source = await readFileOrNull(root, "go.mod");
163
+ if (source === null) {
164
+ return { kind: "absent" };
165
+ }
166
+ return { kind: "ok", manifestPath: "go.mod", specs: collectGoSpecs(source) };
167
+ }
168
+ /**
169
+ * Find the committed Go module checksum file.
170
+ * @param root - Repository root
171
+ * @returns The checksum file path, or null when none is committed
172
+ */
173
+ export async function findGoLockfile(root) {
174
+ return (await fileExists(root, "go.sum")) ? "go.sum" : null;
175
+ }
176
+ /**
177
+ * Whether an update-bot config watches Go module dependencies.
178
+ * @param botFile - Repo-relative bot config path
179
+ * @param source - The config's text
180
+ * @returns True when the bot covers Go modules
181
+ */
182
+ function coversGoTree(botFile, source) {
183
+ return botFile.includes("dependabot")
184
+ ? GO_ECOSYSTEM_PATTERN.test(source)
185
+ : RENOVATE_GO_PATTERN.test(source);
186
+ }
187
+ /**
188
+ * Extract a command-shaped line from CI/hook text.
189
+ * @param line - One source line
190
+ * @returns The executable command candidate, or null
191
+ */
192
+ function executableCommandCandidate(line) {
193
+ const trimmed = line.trim();
194
+ if (trimmed === "" || trimmed.startsWith("#")) {
195
+ return null;
196
+ }
197
+ const commandish = trimmed.startsWith("- ")
198
+ ? trimmed.slice(2).trimStart()
199
+ : trimmed;
200
+ if (commandish.toLowerCase().startsWith("run:")) {
201
+ const command = commandish.slice("run:".length).trim();
202
+ return command === "|" || command === ">" ? null : command;
203
+ }
204
+ return commandish;
205
+ }
206
+ /**
207
+ * Whether CI/hook text contains a real Go dependency audit command.
208
+ * @param source - File text
209
+ * @returns True when an executable command audits Go module dependencies
210
+ */
211
+ function hasGoAuditCommand(source) {
212
+ return source.split(/\r?\n/u).some(line => {
213
+ const command = executableCommandCandidate(line);
214
+ return command !== null && GO_AUDIT_GATE_PATTERN.test(command);
215
+ });
216
+ }
217
+ /**
218
+ * Find where the repository audits its Go module dependency tree.
219
+ * @param root - Repository root
220
+ * @returns The repo-relative path of the first Go audit gate found, or null
221
+ */
222
+ export async function findGoAuditGate(root) {
223
+ for (const botFile of UPDATE_BOT_FILES) {
224
+ const source = await readFileOrNull(root, botFile);
225
+ if (source !== null && coversGoTree(botFile, source)) {
226
+ return botFile.split(path.sep).join("/");
227
+ }
228
+ }
229
+ const scanned = [
230
+ ...(await Promise.all(GATE_DIRECTORIES.map(dir => listDirectory(root, dir)))).flat(),
231
+ ...GATE_FILES,
232
+ ];
233
+ for (const file of scanned) {
234
+ const source = await readFileOrNull(root, file);
235
+ if (source !== null && hasGoAuditCommand(source)) {
236
+ return file.split(path.sep).join("/");
237
+ }
238
+ }
239
+ return null;
240
+ }
241
+ /**
242
+ * Check whether a Go module requirement spec floats.
243
+ * @param spec - Version/pseudo-version from go.mod
244
+ * @returns True when the spec is absent or branch-like rather than pinned
245
+ */
246
+ export function isFloatingGoSpec(spec) {
247
+ return spec === null || FLOATING_SPECS.has(spec.trim());
248
+ }
249
+ //# sourceMappingURL=doctor-readiness-supply-chain-go.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-readiness-supply-chain-go.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-supply-chain-go.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,sEAAsE;AACtE,MAAM,oBAAoB,GAAG,oCAAoC,CAAC;AAElE,+DAA+D;AAC/D,MAAM,qBAAqB,GAAG,iDAAiD,CAAC;AAEhF,4DAA4D;AAC5D,MAAM,mBAAmB,GAAG,iCAAiC,CAAC;AAE9D,0DAA0D;AAC1D,MAAM,gBAAgB,GAAsB;IAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;IACjC,QAAQ;CACT,CAAC;AAEF,2DAA2D;AAC3D,MAAM,UAAU,GAAsB;IACpC,cAAc;IACd,eAAe;IACf,eAAe;CAChB,CAAC;AAEF,sEAAsE;AACtE,MAAM,gBAAgB,GAAsB;IAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;IACrC,eAAe;IACf,aAAa;IACb,kBAAkB;CACnB,CAAC;AAEF,mEAAmE;AACnE,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IAClD,EAAE;IACF,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,MAAM;CACP,CAAC,CAAC;AAkBH;;;;;GAKG;AACH,KAAK,UAAU,UAAU,CACvB,IAAY,EACZ,YAAoB;IAEpB,OAAO,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,IAAI,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,aAAa,CAC1B,IAAY,EACZ,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE;YAC1D,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,OAAO,OAAO;aACX,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC/B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;aAChD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,IAAI;QACJ,IAAI,EAAE,IAAI,IAAI,IAAI;KACnB,CAAC;AACJ,CAAC;AAQD;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,UAAU,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CACxB,KAAkC,EAClC,IAAY;IAEZ,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CACxB,KAA0B,EAC1B,OAAe;IAEf,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,GAAG;YACjB,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;YAC/C,CAAC,CAAC;gBACE,cAAc,EAAE,IAAI;gBACpB,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;aAC5C,CAAC;IACR,CAAC;IACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,cAAc,EAAE,KAAK;YACrB,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SACrE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,MAAM;SACV,KAAK,CAAC,QAAQ,CAAC;SACf,MAAM,CACL,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAC/C,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CACrC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,OAAO,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,OAAe,EAAE,MAAc;IACnD,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QACnC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAS,0BAA0B,CAAC,IAAY;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QACzC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;QAC9B,CAAC,CAAC,OAAO,CAAC;IACZ,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,OAAO,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,OAAO,KAAK,IAAI,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,IAAI,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YACrD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG;QACd,GAAG,CACD,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CACzE,CAAC,IAAI,EAAE;QACR,GAAG,UAAU;KACd,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAmB;IAClD,OAAO,IAAI,KAAK,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-readiness-supply-chain.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-supply-chain.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,sCAAsC,EAAE,MAAM,8CAA8C,CAAC;AAwJtG;;;;;;;;GAQG;AACH,wBAAsB,sCAAsC,CAC1D,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,wBAAwB,CAAC,CAqEnC"}
1
+ {"version":3,"file":"doctor-readiness-supply-chain.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-supply-chain.ts"],"names":[],"mappings":"AAyDA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,sCAAsC,EAAE,MAAM,8CAA8C,CAAC;AA2KtG;;;;;;;;GAQG;AACH,wBAAsB,sCAAsC,CAC1D,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,wBAAwB,CAAC,CAiEnC"}
@@ -32,6 +32,7 @@ import { auditExceptionViolations } from "./doctor-readiness-audit-allowlist.js"
32
32
  import { collectSpecs, findAuditGate, findLockfile, findLockfileInstallGate, readManifest, } from "./doctor-readiness-supply-chain-scan.js";
33
33
  import { assessRubyDependenciesSupplyChainDimension } from "./doctor-readiness-supply-chain-ruby-assess.js";
34
34
  import { assessPythonDependenciesSupplyChainDimension } from "./doctor-readiness-supply-chain-python-assess.js";
35
+ import { assessGoDependenciesSupplyChainDimension } from "./doctor-readiness-supply-chain-go-assess.js";
35
36
  import { DEPENDENCIES_SUPPLY_CHAIN_DIMENSION_ID, MAX_EVIDENCE_LINES, SUPPLY_CHAIN_BLOCKER_ID, } from "./doctor-readiness-supply-chain-constants.js";
36
37
  import { dependencyConfidenceObservations, dependencyConfidenceViolations, installTimeExecutionViolations, } from "./doctor-readiness-supply-chain-evidence.js";
37
38
  import { resolveWorkspaceMembers, } from "./doctor-readiness-workspaces.js";
@@ -162,6 +163,22 @@ function skipRecord(reason) {
162
163
  findings: [{ reason, skip: true }],
163
164
  };
164
165
  }
166
+ /**
167
+ * Try non-JavaScript dependency models after package.json is absent or unreadable.
168
+ * @param root - Project root to assess
169
+ * @returns A non-JS B5 record, or null when no supported manifest exists
170
+ */
171
+ async function assessNonJavaScriptDependenciesSupplyChainDimension(root) {
172
+ const rubyRecord = await assessRubyDependenciesSupplyChainDimension(root);
173
+ if (rubyRecord !== null) {
174
+ return rubyRecord;
175
+ }
176
+ const pythonRecord = await assessPythonDependenciesSupplyChainDimension(root);
177
+ if (pythonRecord !== null) {
178
+ return pythonRecord;
179
+ }
180
+ return await assessGoDependenciesSupplyChainDimension(root);
181
+ }
165
182
  /**
166
183
  * Assess the dependencies/supply-chain dimension: B5, "an owned compatibility or
167
184
  * security surface has no confidence model". Offline by construction — it reads
@@ -174,13 +191,9 @@ function skipRecord(reason) {
174
191
  export async function assessDependenciesSupplyChainDimension(root) {
175
192
  const outcome = await readManifest(root);
176
193
  if (outcome.kind === "unassessable") {
177
- const rubyRecord = await assessRubyDependenciesSupplyChainDimension(root);
178
- if (rubyRecord !== null) {
179
- return rubyRecord;
180
- }
181
- const pythonRecord = await assessPythonDependenciesSupplyChainDimension(root);
182
- if (pythonRecord !== null) {
183
- return pythonRecord;
194
+ const nonJavaScriptRecord = await assessNonJavaScriptDependenciesSupplyChainDimension(root);
195
+ if (nonJavaScriptRecord !== null) {
196
+ return nonJavaScriptRecord;
184
197
  }
185
198
  return skipRecord(outcome.reason);
186
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-readiness-supply-chain.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-supply-chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-readiness-supply-chain.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-supply-chain.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,CAkjEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAq3MjE,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,CAkjEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAy3MjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -6402,6 +6402,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6402
6402
  "src/cli/doctor-readiness-shared.ts": true,
6403
6403
  "src/cli/doctor-readiness-supply-chain-constants.ts": true,
6404
6404
  "src/cli/doctor-readiness-supply-chain-evidence.ts": true,
6405
+ "src/cli/doctor-readiness-supply-chain-go-assess.ts": true,
6406
+ "src/cli/doctor-readiness-supply-chain-go.ts": true,
6405
6407
  "src/cli/doctor-readiness-supply-chain-python-assess.ts": true,
6406
6408
  "src/cli/doctor-readiness-supply-chain-python.ts": true,
6407
6409
  "src/cli/doctor-readiness-supply-chain-ruby-assess.ts": true,
@@ -6796,6 +6798,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6796
6798
  "tests/unit/cli/doctor-readiness-guardrails.test.ts": true,
6797
6799
  "tests/unit/cli/doctor-readiness-journey.test.ts": true,
6798
6800
  "tests/unit/cli/doctor-readiness-supply-chain-exceptions.test.ts": true,
6801
+ "tests/unit/cli/doctor-readiness-supply-chain-go.test.ts": true,
6799
6802
  "tests/unit/cli/doctor-readiness-supply-chain-install-gate.test.ts": true,
6800
6803
  "tests/unit/cli/doctor-readiness-supply-chain-install-scripts.test.ts": true,
6801
6804
  "tests/unit/cli/doctor-readiness-supply-chain-precision.test.ts": true,
@@ -7233,6 +7236,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7233
7236
  "tests/unit/utils/fibonacci.test.ts": true,
7234
7237
  "tests/unit/utils/file-operations.test.ts": true,
7235
7238
  "tests/unit/utils/ignore-patterns.test.ts": true,
7239
+ "tests/unit/utils/json-merge.property.test.ts": true,
7236
7240
  "tests/unit/utils/json-utils.test.ts": true,
7237
7241
  "tests/unit/utils/linked-worktree.test.ts": true,
7238
7242
  "tests/unit/utils/postinstall-trampoline.test.ts": true,