audit-tools 0.55.5 → 0.55.7

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 (266) hide show
  1. package/dist/audit/cli/auditStep.d.ts +15 -1
  2. package/dist/audit/cli/auditStep.d.ts.map +1 -1
  3. package/dist/audit/cli/auditStep.js +24 -11
  4. package/dist/audit/cli/auditStep.js.map +1 -1
  5. package/dist/audit/cli/cleanup.d.ts.map +1 -1
  6. package/dist/audit/cli/cleanup.js +26 -2
  7. package/dist/audit/cli/cleanup.js.map +1 -1
  8. package/dist/audit/cli/conceptualDispatch.d.ts +2 -0
  9. package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
  10. package/dist/audit/cli/conceptualDispatch.js +29 -8
  11. package/dist/audit/cli/conceptualDispatch.js.map +1 -1
  12. package/dist/audit/cli/dispatch/hostHandoff.d.ts +37 -3
  13. package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
  14. package/dist/audit/cli/dispatch/hostHandoff.js +185 -16
  15. package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
  16. package/dist/audit/cli/fanoutLanes.d.ts +30 -0
  17. package/dist/audit/cli/fanoutLanes.d.ts.map +1 -1
  18. package/dist/audit/cli/fanoutLanes.js +76 -8
  19. package/dist/audit/cli/fanoutLanes.js.map +1 -1
  20. package/dist/audit/cli/lineIndex.d.ts.map +1 -1
  21. package/dist/audit/cli/lineIndex.js +19 -41
  22. package/dist/audit/cli/lineIndex.js.map +1 -1
  23. package/dist/audit/cli/nextStepCommand.d.ts +3 -0
  24. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  25. package/dist/audit/cli/nextStepCommand.js +109 -68
  26. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  27. package/dist/audit/cli/nextStepHelpers.d.ts +55 -20
  28. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  29. package/dist/audit/cli/nextStepHelpers.js +215 -196
  30. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  31. package/dist/audit/cli/reviewRun.d.ts +4 -0
  32. package/dist/audit/cli/reviewRun.d.ts.map +1 -1
  33. package/dist/audit/cli/reviewRun.js +1 -1
  34. package/dist/audit/cli/reviewRun.js.map +1 -1
  35. package/dist/audit/cli/semanticReviewStep.d.ts +2 -0
  36. package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
  37. package/dist/audit/cli/semanticReviewStep.js +5 -50
  38. package/dist/audit/cli/semanticReviewStep.js.map +1 -1
  39. package/dist/audit/cli/validateResultsCommand.d.ts.map +1 -1
  40. package/dist/audit/cli/validateResultsCommand.js +3 -1
  41. package/dist/audit/cli/validateResultsCommand.js.map +1 -1
  42. package/dist/audit/extractors/disposition.d.ts.map +1 -1
  43. package/dist/audit/extractors/disposition.js +14 -38
  44. package/dist/audit/extractors/disposition.js.map +1 -1
  45. package/dist/audit/extractors/fsIntake.d.ts +13 -0
  46. package/dist/audit/extractors/fsIntake.d.ts.map +1 -1
  47. package/dist/audit/extractors/fsIntake.js +11 -1
  48. package/dist/audit/extractors/fsIntake.js.map +1 -1
  49. package/dist/audit/extractors/readFileText.d.ts.map +1 -1
  50. package/dist/audit/extractors/readFileText.js +34 -5
  51. package/dist/audit/extractors/readFileText.js.map +1 -1
  52. package/dist/audit/io/artifacts.d.ts +35 -9
  53. package/dist/audit/io/artifacts.d.ts.map +1 -1
  54. package/dist/audit/io/artifacts.js +84 -67
  55. package/dist/audit/io/artifacts.js.map +1 -1
  56. package/dist/audit/io/rollover.d.ts +18 -0
  57. package/dist/audit/io/rollover.d.ts.map +1 -0
  58. package/dist/audit/io/rollover.js +152 -0
  59. package/dist/audit/io/rollover.js.map +1 -0
  60. package/dist/audit/io/runSnapshot.d.ts +149 -0
  61. package/dist/audit/io/runSnapshot.d.ts.map +1 -0
  62. package/dist/audit/io/runSnapshot.js +710 -0
  63. package/dist/audit/io/runSnapshot.js.map +1 -0
  64. package/dist/audit/orchestrator/acquisitionExecutor.d.ts +5 -2
  65. package/dist/audit/orchestrator/acquisitionExecutor.d.ts.map +1 -1
  66. package/dist/audit/orchestrator/acquisitionExecutor.js +28 -22
  67. package/dist/audit/orchestrator/acquisitionExecutor.js.map +1 -1
  68. package/dist/audit/orchestrator/advanceTypes.d.ts +11 -0
  69. package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
  70. package/dist/audit/orchestrator/autoFixExecutor.d.ts +9 -0
  71. package/dist/audit/orchestrator/autoFixExecutor.d.ts.map +1 -1
  72. package/dist/audit/orchestrator/autoFixExecutor.js +22 -2
  73. package/dist/audit/orchestrator/autoFixExecutor.js.map +1 -1
  74. package/dist/audit/orchestrator/charterExtractionExecutor.d.ts.map +1 -1
  75. package/dist/audit/orchestrator/charterExtractionExecutor.js +18 -3
  76. package/dist/audit/orchestrator/charterExtractionExecutor.js.map +1 -1
  77. package/dist/audit/orchestrator/charterPackets.d.ts +11 -1
  78. package/dist/audit/orchestrator/charterPackets.d.ts.map +1 -1
  79. package/dist/audit/orchestrator/charterPackets.js +13 -0
  80. package/dist/audit/orchestrator/charterPackets.js.map +1 -1
  81. package/dist/audit/orchestrator/designReviewPrompt.d.ts +9 -0
  82. package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
  83. package/dist/audit/orchestrator/designReviewPrompt.js +69 -31
  84. package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
  85. package/dist/audit/orchestrator/designReviewSnapshot.d.ts +1 -0
  86. package/dist/audit/orchestrator/designReviewSnapshot.d.ts.map +1 -1
  87. package/dist/audit/orchestrator/designReviewSnapshot.js +2 -1
  88. package/dist/audit/orchestrator/designReviewSnapshot.js.map +1 -1
  89. package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
  90. package/dist/audit/orchestrator/executorRunners.js +13 -4
  91. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  92. package/dist/audit/orchestrator/intakeExecutors.d.ts +8 -1
  93. package/dist/audit/orchestrator/intakeExecutors.d.ts.map +1 -1
  94. package/dist/audit/orchestrator/intakeExecutors.js +13 -4
  95. package/dist/audit/orchestrator/intakeExecutors.js.map +1 -1
  96. package/dist/audit/orchestrator/obligationPolicy.d.ts.map +1 -1
  97. package/dist/audit/orchestrator/obligationPolicy.js +4 -1
  98. package/dist/audit/orchestrator/obligationPolicy.js.map +1 -1
  99. package/dist/audit/orchestrator/planningExecutors.d.ts +1 -1
  100. package/dist/audit/orchestrator/planningExecutors.d.ts.map +1 -1
  101. package/dist/audit/orchestrator/planningExecutors.js +40 -6
  102. package/dist/audit/orchestrator/planningExecutors.js.map +1 -1
  103. package/dist/audit/orchestrator/reviewPacketSizing.d.ts +4 -4
  104. package/dist/audit/orchestrator/reviewPacketSizing.d.ts.map +1 -1
  105. package/dist/audit/orchestrator/reviewPacketSizing.js +5 -5
  106. package/dist/audit/orchestrator/reviewPacketSizing.js.map +1 -1
  107. package/dist/audit/orchestrator/reviewPackets.d.ts.map +1 -1
  108. package/dist/audit/orchestrator/reviewPackets.js +10 -5
  109. package/dist/audit/orchestrator/reviewPackets.js.map +1 -1
  110. package/dist/audit/orchestrator/runtimeCommand.d.ts +9 -2
  111. package/dist/audit/orchestrator/runtimeCommand.d.ts.map +1 -1
  112. package/dist/audit/orchestrator/runtimeCommand.js +14 -22
  113. package/dist/audit/orchestrator/runtimeCommand.js.map +1 -1
  114. package/dist/audit/orchestrator/scopeIndexBaseline.d.ts.map +1 -1
  115. package/dist/audit/orchestrator/scopeIndexBaseline.js +7 -29
  116. package/dist/audit/orchestrator/scopeIndexBaseline.js.map +1 -1
  117. package/dist/audit/orchestrator/selectiveDeepening/conflict.d.ts +6 -2
  118. package/dist/audit/orchestrator/selectiveDeepening/conflict.d.ts.map +1 -1
  119. package/dist/audit/orchestrator/selectiveDeepening/conflict.js +45 -4
  120. package/dist/audit/orchestrator/selectiveDeepening/conflict.js.map +1 -1
  121. package/dist/audit/orchestrator/selectiveDeepening/index.d.ts.map +1 -1
  122. package/dist/audit/orchestrator/selectiveDeepening/index.js +4 -4
  123. package/dist/audit/orchestrator/selectiveDeepening/index.js.map +1 -1
  124. package/dist/audit/orchestrator/systemicChallengeExecutor.d.ts.map +1 -1
  125. package/dist/audit/orchestrator/systemicChallengeExecutor.js +4 -1
  126. package/dist/audit/orchestrator/systemicChallengeExecutor.js.map +1 -1
  127. package/dist/audit/orchestrator/taskBuilder.d.ts +20 -0
  128. package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
  129. package/dist/audit/orchestrator/taskBuilder.js +80 -18
  130. package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
  131. package/dist/audit/systemic/reviewFileMap.d.ts +72 -21
  132. package/dist/audit/systemic/reviewFileMap.d.ts.map +1 -1
  133. package/dist/audit/systemic/reviewFileMap.js +96 -45
  134. package/dist/audit/systemic/reviewFileMap.js.map +1 -1
  135. package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts +7 -0
  136. package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts.map +1 -1
  137. package/dist/audit/systemic/secondOrderAdversaryPrompt.js +39 -8
  138. package/dist/audit/systemic/secondOrderAdversaryPrompt.js.map +1 -1
  139. package/dist/remediate/phases/close.d.ts.map +1 -1
  140. package/dist/remediate/phases/close.js +29 -11
  141. package/dist/remediate/phases/close.js.map +1 -1
  142. package/dist/remediate/phases/closeAcceptance.d.ts.map +1 -1
  143. package/dist/remediate/phases/closeAcceptance.js +2 -0
  144. package/dist/remediate/phases/closeAcceptance.js.map +1 -1
  145. package/dist/remediate/phases/closeVerifyAnalyzerLeads.d.ts +2 -1
  146. package/dist/remediate/phases/closeVerifyAnalyzerLeads.d.ts.map +1 -1
  147. package/dist/remediate/phases/closeVerifyAnalyzerLeads.js +10 -9
  148. package/dist/remediate/phases/closeVerifyAnalyzerLeads.js.map +1 -1
  149. package/dist/remediate/phases/triage.d.ts +2 -1
  150. package/dist/remediate/phases/triage.d.ts.map +1 -1
  151. package/dist/remediate/phases/triage.js +46 -25
  152. package/dist/remediate/phases/triage.js.map +1 -1
  153. package/dist/remediate/phases/triageConformance.d.ts +14 -0
  154. package/dist/remediate/phases/triageConformance.d.ts.map +1 -0
  155. package/dist/remediate/phases/triageConformance.js +189 -0
  156. package/dist/remediate/phases/triageConformance.js.map +1 -0
  157. package/dist/remediate/state/decisionConsumption.d.ts +110 -0
  158. package/dist/remediate/state/decisionConsumption.d.ts.map +1 -0
  159. package/dist/remediate/state/decisionConsumption.js +122 -0
  160. package/dist/remediate/state/decisionConsumption.js.map +1 -0
  161. package/dist/remediate/state/dirtyBaseline.d.ts +10 -0
  162. package/dist/remediate/state/dirtyBaseline.d.ts.map +1 -0
  163. package/dist/remediate/state/dirtyBaseline.js +18 -0
  164. package/dist/remediate/state/dirtyBaseline.js.map +1 -0
  165. package/dist/remediate/state/store.d.ts +8 -4
  166. package/dist/remediate/state/store.d.ts.map +1 -1
  167. package/dist/remediate/state/store.js +24 -0
  168. package/dist/remediate/state/store.js.map +1 -1
  169. package/dist/remediate/steps/dispatch/contractConformanceReview.d.ts +9 -0
  170. package/dist/remediate/steps/dispatch/contractConformanceReview.d.ts.map +1 -1
  171. package/dist/remediate/steps/dispatch/contractConformanceReview.js +32 -14
  172. package/dist/remediate/steps/dispatch/contractConformanceReview.js.map +1 -1
  173. package/dist/remediate/steps/dispatch/hostCorroboration.d.ts.map +1 -1
  174. package/dist/remediate/steps/dispatch/hostCorroboration.js +34 -82
  175. package/dist/remediate/steps/dispatch/hostCorroboration.js.map +1 -1
  176. package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
  177. package/dist/remediate/steps/dispatch/hostHandoff.js +10 -1
  178. package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
  179. package/dist/remediate/steps/finalGate.d.ts.map +1 -1
  180. package/dist/remediate/steps/finalGate.js +11 -5
  181. package/dist/remediate/steps/finalGate.js.map +1 -1
  182. package/dist/remediate/steps/gateCommands.d.ts +1 -0
  183. package/dist/remediate/steps/gateCommands.d.ts.map +1 -1
  184. package/dist/remediate/steps/gateCommands.js +13 -63
  185. package/dist/remediate/steps/gateCommands.js.map +1 -1
  186. package/dist/remediate/steps/nextStep.d.ts +7 -0
  187. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  188. package/dist/remediate/steps/nextStep.js +93 -33
  189. package/dist/remediate/steps/nextStep.js.map +1 -1
  190. package/dist/shared/analyzers/acquisitionEngine.d.ts +12 -5
  191. package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
  192. package/dist/shared/analyzers/acquisitionEngine.js +86 -38
  193. package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
  194. package/dist/shared/analyzers/binaryAcquisition.d.ts +17 -41
  195. package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
  196. package/dist/shared/analyzers/binaryAcquisition.js +260 -227
  197. package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
  198. package/dist/shared/analyzers/binaryFetcher.d.ts +4 -0
  199. package/dist/shared/analyzers/binaryFetcher.d.ts.map +1 -0
  200. package/dist/shared/analyzers/binaryFetcher.js +79 -0
  201. package/dist/shared/analyzers/binaryFetcher.js.map +1 -0
  202. package/dist/shared/analyzers/binaryVersions.d.ts +5 -0
  203. package/dist/shared/analyzers/binaryVersions.d.ts.map +1 -0
  204. package/dist/shared/analyzers/binaryVersions.js +31 -0
  205. package/dist/shared/analyzers/binaryVersions.js.map +1 -0
  206. package/dist/shared/analyzers/candidates.d.ts +3 -3
  207. package/dist/shared/analyzers/candidates.d.ts.map +1 -1
  208. package/dist/shared/analyzers/candidates.js +35 -12
  209. package/dist/shared/analyzers/candidates.js.map +1 -1
  210. package/dist/shared/contentKey.d.ts +3 -2
  211. package/dist/shared/contentKey.d.ts.map +1 -1
  212. package/dist/shared/contentKey.js +3 -2
  213. package/dist/shared/contentKey.js.map +1 -1
  214. package/dist/shared/decompose/charterExtraction.d.ts +189 -1
  215. package/dist/shared/decompose/charterExtraction.d.ts.map +1 -1
  216. package/dist/shared/decompose/charterExtraction.js +17 -2
  217. package/dist/shared/decompose/charterExtraction.js.map +1 -1
  218. package/dist/shared/git.d.ts +58 -2
  219. package/dist/shared/git.d.ts.map +1 -1
  220. package/dist/shared/git.js +214 -56
  221. package/dist/shared/git.js.map +1 -1
  222. package/dist/shared/gitTrackedPaths.d.ts +39 -0
  223. package/dist/shared/gitTrackedPaths.d.ts.map +1 -0
  224. package/dist/shared/gitTrackedPaths.js +29 -0
  225. package/dist/shared/gitTrackedPaths.js.map +1 -0
  226. package/dist/shared/index.d.ts +4 -2
  227. package/dist/shared/index.d.ts.map +1 -1
  228. package/dist/shared/index.js +4 -2
  229. package/dist/shared/index.js.map +1 -1
  230. package/dist/shared/io/sourcePath.d.ts +8 -0
  231. package/dist/shared/io/sourcePath.d.ts.map +1 -0
  232. package/dist/shared/io/sourcePath.js +38 -0
  233. package/dist/shared/io/sourcePath.js.map +1 -0
  234. package/dist/shared/loopCorePaths.d.ts.map +1 -1
  235. package/dist/shared/loopCorePaths.js +2 -0
  236. package/dist/shared/loopCorePaths.js.map +1 -1
  237. package/dist/shared/prompts.d.ts +2 -0
  238. package/dist/shared/prompts.d.ts.map +1 -1
  239. package/dist/shared/prompts.js +8 -2
  240. package/dist/shared/prompts.js.map +1 -1
  241. package/dist/shared/submission/ingestReport.d.ts.map +1 -1
  242. package/dist/shared/submission/ingestReport.js +19 -1
  243. package/dist/shared/submission/ingestReport.js.map +1 -1
  244. package/dist/shared/tooling/exec.d.ts +1 -0
  245. package/dist/shared/tooling/exec.d.ts.map +1 -1
  246. package/dist/shared/tooling/exec.js +20 -4
  247. package/dist/shared/tooling/exec.js.map +1 -1
  248. package/dist/shared/tooling/resolveExecutable.d.ts +10 -0
  249. package/dist/shared/tooling/resolveExecutable.d.ts.map +1 -0
  250. package/dist/shared/tooling/resolveExecutable.js +46 -0
  251. package/dist/shared/tooling/resolveExecutable.js.map +1 -0
  252. package/dist/shared/types/charter.d.ts +9 -0
  253. package/dist/shared/types/charter.d.ts.map +1 -1
  254. package/dist/shared/types/charter.js +7 -0
  255. package/dist/shared/types/charter.js.map +1 -1
  256. package/dist/shared/validation/citationGrounding.d.ts +1 -1
  257. package/dist/shared/validation/citationGrounding.d.ts.map +1 -1
  258. package/dist/shared/validation/citationGrounding.js +24 -11
  259. package/dist/shared/validation/citationGrounding.js.map +1 -1
  260. package/dist/shared/validation/findingGrounding.d.ts +1 -1
  261. package/dist/shared/validation/findingGrounding.d.ts.map +1 -1
  262. package/dist/shared/validation/findingGrounding.js +11 -23
  263. package/dist/shared/validation/findingGrounding.js.map +1 -1
  264. package/docs/audit-pkg/contracts.md +6 -2
  265. package/docs/audit-pkg/operator-guide.md +13 -4
  266. package/package.json +2 -1
@@ -2,17 +2,18 @@ import { withArtifactTreeHold } from "../../shared/io/artifactTreeHold.js";
2
2
  import { auditLaneReviewRequirement } from "./reviewSubmission.js";
3
3
  import { bindWorkerPrompt } from "../../shared/submission/workerPromptBinding.js";
4
4
  import { hashContent } from "../../shared/hash.js";
5
- // sites-pinned: tests/shared/prompt-capability.test.ts, tests/audit/synthesis-narrative-prompt.test.ts
5
+ // sites-pinned: tests/shared/prompt-capability.test.ts, tests/audit/synthesis-narrative-prompt.test.ts, tests/audit/review-file-map-context.test.ts
6
6
  //
7
7
  // This module is the SECOND prompt-writing boundary in the tool (writeStepContract
8
8
  // is the first): every lane prompt file on disk is written here, so the path form
9
9
  // a lane reader sees is decided here.
10
- import { access, mkdir, readFile } from "node:fs/promises";
10
+ import { access, chmod, mkdir, readFile, unlink } from "node:fs/promises";
11
11
  import { join } from "node:path";
12
12
  import { writeTextFile } from "../../shared/io/json.js";
13
13
  import { publishAuditReviewBindings } from "./auditReviewBindings.js";
14
- import { deriveLaneDemand, estimateTokensFromBytes, laneAssetsDir, toPromptPathToken, } from "audit-tools/shared";
14
+ import { compareCodeUnits, deriveLaneDemand, estimateTokensFromBytes, laneAssetsDir, toPromptPathToken, } from "audit-tools/shared";
15
15
  import { normalizePromptBodyPaths } from "../../shared/tooling/exec.js";
16
+ import { sourceTreeInstruction } from "../io/runSnapshot.js";
16
17
  import { laneSubmissionPath, laneSubmissionId, recordDispatchedLanes, recordExpectedLanes, } from "./laneSubmissions.js";
17
18
  async function fileExists(path) {
18
19
  try {
@@ -23,6 +24,63 @@ async function fileExists(path) {
23
24
  return false;
24
25
  }
25
26
  }
27
+ /**
28
+ * Write one generated context file and return its path. A file already holding
29
+ * the same bytes is left alone (its path is content-addressed, so this is the
30
+ * unchanged-round case). A file holding OTHER bytes was edited in place: it is
31
+ * made writable and unlinked first, because on Windows a rename over a
32
+ * read-only file fails with EPERM.
33
+ */
34
+ async function writeGeneratedContext(promptDir, file) {
35
+ const path = join(promptDir, "context", hashContent(file.text), file.filename);
36
+ const expected = Buffer.from(file.text, "utf8");
37
+ const holdsExpected = async () => {
38
+ try {
39
+ return (await readFile(path)).equals(expected);
40
+ }
41
+ catch (error) {
42
+ if (error.code === "ENOENT")
43
+ return undefined;
44
+ throw error;
45
+ }
46
+ };
47
+ const existing = await holdsExpected();
48
+ if (existing === false) {
49
+ await chmod(path, 0o666);
50
+ await unlink(path);
51
+ }
52
+ if (existing !== true) {
53
+ try {
54
+ await writeTextFile(path, file.text);
55
+ }
56
+ catch (error) {
57
+ // A concurrent emission of the same round wrote (and locked) the same
58
+ // bytes first: the file is what this write would have produced.
59
+ if ((await holdsExpected()) !== true)
60
+ throw error;
61
+ }
62
+ }
63
+ await chmod(path, 0o444);
64
+ return path;
65
+ }
66
+ /**
67
+ * The section naming a lane's generated context files. It precedes the results
68
+ * footer, which stays the last section of every lane prompt.
69
+ */
70
+ function renderReadOnlyContextSection(files) {
71
+ return [
72
+ "",
73
+ "",
74
+ "## Read-only context files",
75
+ "",
76
+ "The audit tool generated each file below for this lane. You did not author it, and you must " +
77
+ "not edit it: it is read-only and bound into this review, so a submission made against an " +
78
+ "edited copy is refused. If you disagree with it, say so in your finding, naming the file and " +
79
+ "line that contradict it.",
80
+ "",
81
+ ...files.map((file) => `- \`${toPromptPathToken(file.path)}\` — ${file.label}`),
82
+ ].join("\n");
83
+ }
26
84
  /** Heading of the one results-path section any lane prompt carries. */
27
85
  export const LANE_RESULTS_HEADING = "## Results path";
28
86
  /**
@@ -70,8 +128,9 @@ export function renderLaneResultsFooter(resultPath) {
70
128
  * the same file. `normalizePromptBodyPaths` is anchored on a drive letter or a
71
129
  * UNC root, so a regex or an escape sequence inside a prompt body is untouched.
72
130
  */
73
- function footedPromptText(promptText, resultPath) {
74
- return normalizePromptBodyPaths(`${promptText.replace(/\s+$/, "")}\n\n${renderLaneResultsFooter(resultPath)}`);
131
+ function footedPromptText(promptText, resultPath, sourceRoot) {
132
+ return normalizePromptBodyPaths(`${promptText.replace(/\s+$/, "")}\n\n## Source tree\n\n${sourceTreeInstruction(sourceRoot)}\n\n` +
133
+ renderLaneResultsFooter(resultPath));
75
134
  }
76
135
  /**
77
136
  * Write the pending lanes' prompt files, record what the emission owes, and
@@ -89,13 +148,21 @@ export async function materializeFanoutLanes(params) {
89
148
  const resultPath = laneSubmissionPath(params.artifactsDir, spec.id, params.runId);
90
149
  const resultExists = await fileExists(resultPath);
91
150
  const requirement = auditLaneReviewRequirement(spec.id);
92
- const contextInputs = await Promise.all([...new Set(spec.contextPaths ?? [])].sort().map(async (path) => {
151
+ const generated = spec.generatedContext ?? [];
152
+ if (generated.length > 0 && requirement === "ordinary") {
153
+ throw new Error(`Lane '${spec.id}' carries generated context but no review binding to bind it into.`);
154
+ }
155
+ const generatedContextPaths = [];
156
+ for (const file of generated)
157
+ generatedContextPaths.push(await writeGeneratedContext(promptDir, file));
158
+ const contextInputs = await Promise.all([...new Set([...(spec.contextPaths ?? []), ...generatedContextPaths])].sort(compareCodeUnits).map(async (path) => {
93
159
  const bytes = await readFile(path);
94
160
  return { path, sha256: hashContent(bytes), bytes: bytes.length };
95
161
  }));
96
162
  const inputBindingText = requirement === "ordinary" || contextInputs.length === 0 ? "" : `\n\n## Bound input fingerprints\n${contextInputs.map(input => `${input.path}: ${input.sha256}`).join("\n")}`;
97
163
  const revisionText = spec.semanticInputRevision === undefined ? "" : `\n\nReview input revision: ${spec.semanticInputRevision}`;
98
- const body = footedPromptText(spec.promptText + revisionText + inputBindingText, resultPath) + (requirement === "ordinary" ? "" : "\nRequired independent review: use a context that did not author the work. If unavailable, return an unavailable declaration; never substitute self-review.");
164
+ const readOnlyContextText = generated.length === 0 ? "" : renderReadOnlyContextSection(generated.map((file, index) => ({ path: generatedContextPaths[index], label: file.label })));
165
+ const body = footedPromptText(spec.promptText + revisionText + inputBindingText + readOnlyContextText, resultPath, params.sourceRoot) + (requirement === "ordinary" ? "" : "\nRequired independent review: use a context that did not author the work. If unavailable, return an unavailable declaration; never substitute self-review.");
99
166
  const bound = requirement === "ordinary" ? { text: body, sha256: hashContent(body) } : bindWorkerPrompt(body, digest => [
100
167
  "## Bound review submission",
101
168
  "Place the domain result described above inside `result` in this envelope. Copy the prompt binding exactly. The review declaration reports the host's execution context; it is not proof of identity.",
@@ -123,6 +190,7 @@ export async function materializeFanoutLanes(params) {
123
190
  promptPath,
124
191
  resultPath,
125
192
  resultExists,
193
+ generatedContextPaths,
126
194
  reviewRequirement: requirement,
127
195
  // Derived from the prompt text the tool just wrote — the lane's own
128
196
  // bytes, not the caller's claim about them — plus whatever per-mode
@@ -166,7 +234,7 @@ export async function materializeFanoutLanes(params) {
166
234
  lanes,
167
235
  pendingLanes,
168
236
  artifactPaths,
169
- readPaths: [...new Set([...pendingLanes.map((lane) => lane.promptPath), ...params.lanes.flatMap(spec => spec.contextPaths ?? [])])],
237
+ readPaths: [...new Set([...pendingLanes.map((lane) => lane.promptPath), ...params.lanes.flatMap(spec => spec.contextPaths ?? []), ...lanes.flatMap(lane => lane.generatedContextPaths)])],
170
238
  writePaths: pendingLanes.map((lane) => lane.resultPath),
171
239
  shortfall,
172
240
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fanoutLanes.js","sourceRoot":"","sources":["../../../src/audit/cli/fanoutLanes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fanoutLanes.js","sourceRoot":"","sources":["../../../src/audit/cli/fanoutLanes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lineIndex.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/lineIndex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAa3D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,QAAa,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAExE;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqCjC;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgCjC;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAsBtB"}
1
+ {"version":3,"file":"lineIndex.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/lineIndex.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAa3D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,QAAa,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAExE;AAwCD,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIjC;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAGjC;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAsBtB"}
@@ -1,3 +1,4 @@
1
+ // sites-pinned: tests/audit/line-index-measurements.test.ts
1
2
  import { resolve } from "node:path";
2
3
  import { countLines } from "./args.js";
3
4
  import { isFileMissingError } from "audit-tools/shared";
@@ -38,51 +39,19 @@ export const UNMEASURED_LINE_COUNT = Number.NaN;
38
39
  export function isUnmeasuredLineCount(value) {
39
40
  return value === undefined || Number.isNaN(value);
40
41
  }
41
- export async function buildLineIndex(root, repoManifest) {
42
- const entries = [];
43
- let failureCount = 0;
44
- for (let i = 0; i < repoManifest.files.length; i += LINE_COUNT_BATCH_SIZE) {
45
- const batch = repoManifest.files.slice(i, i + LINE_COUNT_BATCH_SIZE);
46
- const results = await Promise.all(batch.map(async (file) => {
47
- try {
48
- return [
49
- file.path,
50
- await countLines(resolve(root, file.path)),
51
- ];
52
- }
53
- catch (err) {
54
- // Distinguish file-not-found from other IO errors so callers are not
55
- // misled into treating a missing file as an empty one (COR-c868f53d).
56
- const kind = isFileMissingError(err) ? "file not found" : "IO error";
57
- process.stderr.write(`[lineIndex] ${kind} counting lines for '${file.path}': ${err instanceof Error ? err.message : String(err)}\n`);
58
- failureCount++;
59
- // Unmeasured, not a silent 0 (CP-NODE-6) — see UNMEASURED_LINE_COUNT.
60
- return [file.path, UNMEASURED_LINE_COUNT];
61
- }
62
- }));
63
- entries.push(...results);
64
- }
65
- if (failureCount > 0) {
66
- process.stderr.write(`[lineIndex] ${failureCount} of ${repoManifest.files.length} file(s) failed line counting; those entries are marked unmeasured.\n`);
67
- }
68
- // Keys are `file.path` VERBATIM (no transform) — the same field
69
- // `initializeCoverageFromPlan` seeds `coverage.files[].path` from
70
- // (src/audit/orchestrator/planning.ts), so a lookup against a coverage path
71
- // always round-trips against this index's keys.
72
- return Object.fromEntries(entries);
73
- }
74
- export async function buildLineIndexForPaths(root, paths) {
75
- const uniquePaths = [...new Set(paths)].sort(compareCodeUnits);
42
+ /** Measure the adapter's exact sequence, including repeated manifest paths. */
43
+ async function measureLinePaths(root, preparedPaths) {
76
44
  const entries = [];
77
45
  let failureCount = 0;
78
- const batchSize = LINE_COUNT_BATCH_SIZE;
79
- for (let i = 0; i < uniquePaths.length; i += batchSize) {
80
- const batch = uniquePaths.slice(i, i + batchSize);
46
+ for (let i = 0; i < preparedPaths.length; i += LINE_COUNT_BATCH_SIZE) {
47
+ const batch = preparedPaths.slice(i, i + LINE_COUNT_BATCH_SIZE);
81
48
  const results = await Promise.all(batch.map(async (path) => {
82
49
  try {
83
50
  return [path, await countLines(resolve(root, path))];
84
51
  }
85
52
  catch (err) {
53
+ // Distinguish file-not-found from other IO errors so callers are not
54
+ // misled into treating a missing file as an empty one (COR-c868f53d).
86
55
  const kind = isFileMissingError(err) ? "file not found" : "IO error";
87
56
  process.stderr.write(`[lineIndex] ${kind} counting lines for '${path}': ${err instanceof Error ? err.message : String(err)}\n`);
88
57
  failureCount++;
@@ -93,12 +62,21 @@ export async function buildLineIndexForPaths(root, paths) {
93
62
  entries.push(...results);
94
63
  }
95
64
  if (failureCount > 0) {
96
- process.stderr.write(`[lineIndex] ${failureCount} of ${uniquePaths.length} file(s) failed line counting; those entries are marked unmeasured.\n`);
65
+ process.stderr.write(`[lineIndex] ${failureCount} of ${preparedPaths.length} file(s) failed line counting; those entries are marked unmeasured.\n`);
97
66
  }
98
- // Keys are the input `paths` VERBATIM (no transform) — same round-trip
99
- // guarantee as buildLineIndex above.
67
+ // Promise.all preserves input order: duplicate keys take their last input
68
+ // occurrence's value, independently of read completion order.
100
69
  return Object.fromEntries(entries);
101
70
  }
71
+ export async function buildLineIndex(root, repoManifest) {
72
+ // Keep original order, multiplicity and raw path spelling. Coverage uses
73
+ // these same verbatim keys, including paths with redundant segments.
74
+ return measureLinePaths(root, repoManifest.files.map((file) => file.path));
75
+ }
76
+ export async function buildLineIndexForPaths(root, paths) {
77
+ // Only this adapter deduplicates and sorts; keys still retain raw spelling.
78
+ return measureLinePaths(root, [...new Set(paths)].sort(compareCodeUnits));
79
+ }
102
80
  export async function addFileLineCountHints(root, tasks) {
103
81
  const lineIndex = await buildLineIndexForPaths(root, tasks.flatMap((task) => task.file_paths));
104
82
  return canonicalizeAuditTasks(tasks.map((task) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"lineIndex.js","sourceRoot":"","sources":["../../../src/audit/cli/lineIndex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lineIndex.js","sourceRoot":"","sources":["../../../src/audit/cli/lineIndex.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,10 @@ export declare function cmdNextStep(argv: string[]): Promise<void>;
9
9
  /** What an emission row is given: the invocation's bindings plus its own result. */
10
10
  interface NextStepEmitContext {
11
11
  argv: string[];
12
+ /** The LIVE repository root: the step contract's repo_root and every re-issued command. */
12
13
  root: string;
14
+ /** The run's frozen snapshot root, which every packet and workload is rendered from. */
15
+ sourceRoot: string;
13
16
  artifactsDir: string;
14
17
  /**
15
18
  * The durable analyzer policy, loaded before any dispatch decision. Present
@@ -1 +1 @@
1
- {"version":3,"file":"nextStepCommand.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/nextStepCommand.ts"],"names":[],"mappings":"AAYA,OAAO,EAML,wBAAwB,EAQzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AA0DhG,OAAO,EAAE,wBAAwB,EAAiC,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAC;AAyBrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,iCAAiC,EACjC,kCAAkC,EAClC,iBAAiB,EACjB,2BAA2B,EAC3B,wBAAwB,EACxB,8BAA8B,EAC9B,gBAAgB,EAChB,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAmJ9B,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC/D;AAgHD,oFAAoF;AACpF,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;GAKG;AACH,KAAK,aAAa,GACd;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAClE;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAC1E;IAAE,GAAG,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AA8NvF,KAAK,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAK/E,KAAK,mBAAmB,GAAG,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAoChF,uFAAuF;AACvF,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,cAAc,GACrB,iCAAiC,CAKnC;AAmzBD,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,gFAAgF;AAChF,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,4BAA4B,GAClC,MAAM,CAqDR;AA6LD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAC7C,MAAM,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAmBlD,CAAC;AAsCF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CACzB,CAAC"}
1
+ {"version":3,"file":"nextStepCommand.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/nextStepCommand.ts"],"names":[],"mappings":"AAYA,OAAO,EAML,wBAAwB,EAOzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AA0DhG,OAAO,EAAE,wBAAwB,EAAiC,MAAM,yBAAyB,CAAC;AAIlG,OAAO,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAC;AA0BrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,iCAAiC,EACjC,kCAAkC,EAClC,iBAAiB,EACjB,2BAA2B,EAC3B,wBAAwB,EACxB,8BAA8B,EAC9B,gBAAgB,EAChB,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AA4J9B,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC/D;AAwHD,oFAAoF;AACpF,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;GAKG;AACH,KAAK,aAAa,GACd;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAClE;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAC1E;IAAE,GAAG,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AA6NvF,KAAK,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAK/E,KAAK,mBAAmB,GAAG,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAoChF,uFAAuF;AACvF,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,cAAc,GACrB,iCAAiC,CAKnC;AAo0BD,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,gFAAgF;AAChF,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,4BAA4B,GAClC,MAAM,CAqDR;AA+LD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAC7C,MAAM,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAmBlD,CAAC;AAyCF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CACzB,CAAC"}