audit-tools 0.44.0 → 0.46.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.
Files changed (266) hide show
  1. package/README.md +15 -2
  2. package/dist/audit/cli/charterExtractionPrompt.d.ts.map +1 -1
  3. package/dist/audit/cli/charterExtractionPrompt.js +11 -1
  4. package/dist/audit/cli/charterExtractionPrompt.js.map +1 -1
  5. package/dist/audit/cli/cleanupCommand.d.ts +25 -0
  6. package/dist/audit/cli/cleanupCommand.d.ts.map +1 -1
  7. package/dist/audit/cli/cleanupCommand.js +69 -0
  8. package/dist/audit/cli/cleanupCommand.js.map +1 -1
  9. package/dist/audit/cli/dispatch/hostHandoff.d.ts +64 -3
  10. package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
  11. package/dist/audit/cli/dispatch/hostHandoff.js +247 -99
  12. package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
  13. package/dist/audit/cli/dispatch/packetFilter.d.ts +1 -1
  14. package/dist/audit/cli/dispatch.d.ts +1 -1
  15. package/dist/audit/cli/dispatch.d.ts.map +1 -1
  16. package/dist/audit/cli/dispatch.js +1 -1
  17. package/dist/audit/cli/dispatch.js.map +1 -1
  18. package/dist/audit/cli/fanoutLanes.d.ts.map +1 -1
  19. package/dist/audit/cli/fanoutLanes.js +6 -1
  20. package/dist/audit/cli/fanoutLanes.js.map +1 -1
  21. package/dist/audit/cli/laneSubmissions.d.ts +16 -2
  22. package/dist/audit/cli/laneSubmissions.d.ts.map +1 -1
  23. package/dist/audit/cli/laneSubmissions.js +38 -27
  24. package/dist/audit/cli/laneSubmissions.js.map +1 -1
  25. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  26. package/dist/audit/cli/nextStepCommand.js +9 -6
  27. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  28. package/dist/audit/cli/nextStepHelpers.d.ts +39 -4
  29. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  30. package/dist/audit/cli/nextStepHelpers.js +132 -42
  31. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  32. package/dist/audit/cli/reviewRun.d.ts +1 -1
  33. package/dist/audit/cli/reviewRun.d.ts.map +1 -1
  34. package/dist/audit/cli/reviewRun.js +2 -9
  35. package/dist/audit/cli/reviewRun.js.map +1 -1
  36. package/dist/audit/cli/sampleRunCommand.d.ts.map +1 -1
  37. package/dist/audit/cli/sampleRunCommand.js +12 -1
  38. package/dist/audit/cli/sampleRunCommand.js.map +1 -1
  39. package/dist/audit/cli/semanticReviewStep.d.ts +5 -2
  40. package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
  41. package/dist/audit/cli/semanticReviewStep.js +28 -1
  42. package/dist/audit/cli/semanticReviewStep.js.map +1 -1
  43. package/dist/audit/cli/steps.d.ts +6 -6
  44. package/dist/audit/cli/unacceptResultsCommand.d.ts +18 -0
  45. package/dist/audit/cli/unacceptResultsCommand.d.ts.map +1 -0
  46. package/dist/audit/cli/unacceptResultsCommand.js +49 -0
  47. package/dist/audit/cli/unacceptResultsCommand.js.map +1 -0
  48. package/dist/audit/cli.d.ts +6 -0
  49. package/dist/audit/cli.d.ts.map +1 -1
  50. package/dist/audit/cli.js +34 -59
  51. package/dist/audit/cli.js.map +1 -1
  52. package/dist/audit/contracts/findingContractPrompt.d.ts +11 -0
  53. package/dist/audit/contracts/findingContractPrompt.d.ts.map +1 -0
  54. package/dist/audit/contracts/findingContractPrompt.js +112 -0
  55. package/dist/audit/contracts/findingContractPrompt.js.map +1 -0
  56. package/dist/audit/contracts/workerSchemas.d.ts +106 -42
  57. package/dist/audit/contracts/workerSchemas.d.ts.map +1 -1
  58. package/dist/audit/contracts/workerSchemas.js +16 -7
  59. package/dist/audit/contracts/workerSchemas.js.map +1 -1
  60. package/dist/audit/contracts/wrapperResponse.d.ts +52 -28
  61. package/dist/audit/contracts/wrapperResponse.d.ts.map +1 -1
  62. package/dist/audit/contracts/wrapperResponse.js +8 -5
  63. package/dist/audit/contracts/wrapperResponse.js.map +1 -1
  64. package/dist/audit/decompose/sources.d.ts.map +1 -1
  65. package/dist/audit/decompose/sources.js +21 -5
  66. package/dist/audit/decompose/sources.js.map +1 -1
  67. package/dist/audit/extractors/analyzers/registry.d.ts +8 -5
  68. package/dist/audit/extractors/analyzers/registry.d.ts.map +1 -1
  69. package/dist/audit/extractors/analyzers/registry.js +28 -7
  70. package/dist/audit/extractors/analyzers/registry.js.map +1 -1
  71. package/dist/audit/extractors/designAssessment.js +1 -1
  72. package/dist/audit/extractors/gitHistory.d.ts +1 -1
  73. package/dist/audit/extractors/gitHistory.js +1 -1
  74. package/dist/audit/extractors/graph.d.ts +1 -1
  75. package/dist/audit/extractors/graph.js +1 -1
  76. package/dist/audit/extractors/risk.d.ts +1 -1
  77. package/dist/audit/extractors/risk.js +1 -1
  78. package/dist/audit/io/artifacts.d.ts.map +1 -1
  79. package/dist/audit/io/artifacts.js +5 -5
  80. package/dist/audit/io/artifacts.js.map +1 -1
  81. package/dist/audit/orchestrator/acquisitionExecutor.d.ts +11 -6
  82. package/dist/audit/orchestrator/acquisitionExecutor.d.ts.map +1 -1
  83. package/dist/audit/orchestrator/acquisitionExecutor.js +1 -1
  84. package/dist/audit/orchestrator/acquisitionExecutor.js.map +1 -1
  85. package/dist/audit/orchestrator/advance.d.ts +14 -10
  86. package/dist/audit/orchestrator/advance.d.ts.map +1 -1
  87. package/dist/audit/orchestrator/advance.js +49 -24
  88. package/dist/audit/orchestrator/advance.js.map +1 -1
  89. package/dist/audit/orchestrator/advanceTypes.d.ts +14 -0
  90. package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
  91. package/dist/audit/orchestrator/autoFixExecutor.d.ts +20 -1
  92. package/dist/audit/orchestrator/autoFixExecutor.d.ts.map +1 -1
  93. package/dist/audit/orchestrator/autoFixExecutor.js +77 -15
  94. package/dist/audit/orchestrator/autoFixExecutor.js.map +1 -1
  95. package/dist/audit/orchestrator/dependencyMap.js +1 -1
  96. package/dist/audit/orchestrator/dependencyMap.js.map +1 -1
  97. package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
  98. package/dist/audit/orchestrator/executorRunners.js +18 -4
  99. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  100. package/dist/audit/orchestrator/executors.d.ts +54 -0
  101. package/dist/audit/orchestrator/executors.d.ts.map +1 -1
  102. package/dist/audit/orchestrator/executors.js +352 -0
  103. package/dist/audit/orchestrator/executors.js.map +1 -1
  104. package/dist/audit/orchestrator/hostInputPause.d.ts +20 -11
  105. package/dist/audit/orchestrator/hostInputPause.d.ts.map +1 -1
  106. package/dist/audit/orchestrator/hostInputPause.js +17 -11
  107. package/dist/audit/orchestrator/hostInputPause.js.map +1 -1
  108. package/dist/audit/orchestrator/localCommands.d.ts +24 -1
  109. package/dist/audit/orchestrator/localCommands.d.ts.map +1 -1
  110. package/dist/audit/orchestrator/localCommands.js +44 -9
  111. package/dist/audit/orchestrator/localCommands.js.map +1 -1
  112. package/dist/audit/orchestrator/nextStep.d.ts +13 -0
  113. package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
  114. package/dist/audit/orchestrator/nextStep.js +13 -0
  115. package/dist/audit/orchestrator/nextStep.js.map +1 -1
  116. package/dist/audit/orchestrator/requeueCommand.d.ts +1 -1
  117. package/dist/audit/orchestrator/runtimeCommand.d.ts +32 -1
  118. package/dist/audit/orchestrator/runtimeCommand.d.ts.map +1 -1
  119. package/dist/audit/orchestrator/runtimeCommand.js +90 -3
  120. package/dist/audit/orchestrator/runtimeCommand.js.map +1 -1
  121. package/dist/audit/orchestrator/structureExecutors.js +1 -1
  122. package/dist/audit/orchestrator/structureExecutors.js.map +1 -1
  123. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts +11 -1
  124. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts.map +1 -1
  125. package/dist/audit/orchestrator/syntaxResolutionExecutor.js +25 -9
  126. package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
  127. package/dist/audit/supervisor/operatorHandoff.d.ts +0 -1
  128. package/dist/audit/supervisor/operatorHandoff.d.ts.map +1 -1
  129. package/dist/audit/supervisor/operatorHandoff.js +2 -1
  130. package/dist/audit/supervisor/operatorHandoff.js.map +1 -1
  131. package/dist/audit/types.d.ts +33 -19
  132. package/dist/audit/types.d.ts.map +1 -1
  133. package/dist/audit/validation/auditResults.d.ts +39 -0
  134. package/dist/audit/validation/auditResults.d.ts.map +1 -1
  135. package/dist/audit/validation/auditResults.js +111 -53
  136. package/dist/audit/validation/auditResults.js.map +1 -1
  137. package/dist/audit/validation/ingestIssueCodes.d.ts +18 -0
  138. package/dist/audit/validation/ingestIssueCodes.d.ts.map +1 -0
  139. package/dist/audit/validation/ingestIssueCodes.js +26 -0
  140. package/dist/audit/validation/ingestIssueCodes.js.map +1 -0
  141. package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
  142. package/dist/remediate/contractPipeline/derive.js +1 -0
  143. package/dist/remediate/contractPipeline/derive.js.map +1 -1
  144. package/dist/remediate/contractPipeline/semanticProjection.d.ts +5 -4
  145. package/dist/remediate/contractPipeline/semanticProjection.d.ts.map +1 -1
  146. package/dist/remediate/contractPipeline/semanticProjection.js +34 -19
  147. package/dist/remediate/contractPipeline/semanticProjection.js.map +1 -1
  148. package/dist/remediate/index.d.ts.map +1 -1
  149. package/dist/remediate/index.js +3 -2
  150. package/dist/remediate/index.js.map +1 -1
  151. package/dist/remediate/phases/close.d.ts +37 -2
  152. package/dist/remediate/phases/close.d.ts.map +1 -1
  153. package/dist/remediate/phases/close.js +100 -31
  154. package/dist/remediate/phases/close.js.map +1 -1
  155. package/dist/remediate/phases/closeVerifyAnalyzerLeads.js +2 -2
  156. package/dist/remediate/phases/closeVerifyAnalyzerLeads.js.map +1 -1
  157. package/dist/remediate/phases/triage.d.ts.map +1 -1
  158. package/dist/remediate/phases/triage.js +61 -19
  159. package/dist/remediate/phases/triage.js.map +1 -1
  160. package/dist/remediate/state/types.d.ts +15 -1
  161. package/dist/remediate/state/types.d.ts.map +1 -1
  162. package/dist/remediate/steps/contractPipeline.d.ts +13 -0
  163. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  164. package/dist/remediate/steps/contractPipeline.js +82 -3
  165. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  166. package/dist/remediate/steps/dispatch/hostHandoff.d.ts +1 -1
  167. package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
  168. package/dist/remediate/steps/dispatch/hostHandoff.js +297 -139
  169. package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
  170. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  171. package/dist/remediate/steps/nextStep.js +37 -7
  172. package/dist/remediate/steps/nextStep.js.map +1 -1
  173. package/dist/remediate/types/options.d.ts +1 -1
  174. package/dist/shared/analyzers/acquisitionEngine.d.ts +61 -28
  175. package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
  176. package/dist/shared/analyzers/acquisitionEngine.js +83 -24
  177. package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
  178. package/dist/shared/analyzers/binaryAcquisition.d.ts +8 -2
  179. package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
  180. package/dist/shared/analyzers/binaryAcquisition.js +4 -4
  181. package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
  182. package/dist/shared/constitutionalDocPaths.d.ts.map +1 -1
  183. package/dist/shared/constitutionalDocPaths.js +7 -0
  184. package/dist/shared/constitutionalDocPaths.js.map +1 -1
  185. package/dist/shared/decompose/systemicChallenge.d.ts +15 -1
  186. package/dist/shared/decompose/systemicChallenge.d.ts.map +1 -1
  187. package/dist/shared/engine/obligationEngine.d.ts +44 -3
  188. package/dist/shared/engine/obligationEngine.d.ts.map +1 -1
  189. package/dist/shared/engine/obligationEngine.js +53 -7
  190. package/dist/shared/engine/obligationEngine.js.map +1 -1
  191. package/dist/shared/findings/dedupe.d.ts.map +1 -1
  192. package/dist/shared/findings/dedupe.js +8 -0
  193. package/dist/shared/findings/dedupe.js.map +1 -1
  194. package/dist/shared/friction/frictionRecord.d.ts +42 -2
  195. package/dist/shared/friction/frictionRecord.d.ts.map +1 -1
  196. package/dist/shared/friction/frictionRecord.js +111 -3
  197. package/dist/shared/friction/frictionRecord.js.map +1 -1
  198. package/dist/shared/friction/triage.d.ts +15 -0
  199. package/dist/shared/friction/triage.d.ts.map +1 -1
  200. package/dist/shared/friction/triage.js +33 -2
  201. package/dist/shared/friction/triage.js.map +1 -1
  202. package/dist/shared/index.d.ts +16 -11
  203. package/dist/shared/index.d.ts.map +1 -1
  204. package/dist/shared/index.js +16 -9
  205. package/dist/shared/index.js.map +1 -1
  206. package/dist/shared/io/fileLock.d.ts.map +1 -1
  207. package/dist/shared/io/fileLock.js +22 -3
  208. package/dist/shared/io/fileLock.js.map +1 -1
  209. package/dist/shared/io/frictionCapture.d.ts +73 -19
  210. package/dist/shared/io/frictionCapture.d.ts.map +1 -1
  211. package/dist/shared/io/frictionCapture.js +21 -30
  212. package/dist/shared/io/frictionCapture.js.map +1 -1
  213. package/dist/shared/io/lockedJsonStore.d.ts +24 -3
  214. package/dist/shared/io/lockedJsonStore.d.ts.map +1 -1
  215. package/dist/shared/io/lockedJsonStore.js +35 -7
  216. package/dist/shared/io/lockedJsonStore.js.map +1 -1
  217. package/dist/shared/io/stepContractWriter.d.ts +3 -3
  218. package/dist/shared/io/stepContractWriter.d.ts.map +1 -1
  219. package/dist/shared/io/stepContractWriter.js +97 -13
  220. package/dist/shared/io/stepContractWriter.js.map +1 -1
  221. package/dist/shared/submission/expectedSubmissions.d.ts +18 -0
  222. package/dist/shared/submission/expectedSubmissions.d.ts.map +1 -1
  223. package/dist/shared/submission/expectedSubmissions.js +17 -0
  224. package/dist/shared/submission/expectedSubmissions.js.map +1 -1
  225. package/dist/shared/submission/handRecovery.d.ts.map +1 -1
  226. package/dist/shared/submission/handRecovery.js +9 -11
  227. package/dist/shared/submission/handRecovery.js.map +1 -1
  228. package/dist/shared/submission/hostHandoffCore.d.ts +155 -0
  229. package/dist/shared/submission/hostHandoffCore.d.ts.map +1 -0
  230. package/dist/shared/submission/hostHandoffCore.js +210 -0
  231. package/dist/shared/submission/hostHandoffCore.js.map +1 -0
  232. package/dist/shared/submission/submissionClassifier.d.ts +4 -1
  233. package/dist/shared/submission/submissionClassifier.d.ts.map +1 -1
  234. package/dist/shared/submission/submissionClassifier.js.map +1 -1
  235. package/dist/shared/submission/submissionLedger.d.ts +16 -5
  236. package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
  237. package/dist/shared/submission/submissionLedger.js +42 -3
  238. package/dist/shared/submission/submissionLedger.js.map +1 -1
  239. package/dist/shared/tooling/commandShape.d.ts +29 -0
  240. package/dist/shared/tooling/commandShape.d.ts.map +1 -1
  241. package/dist/shared/tooling/commandShape.js +82 -10
  242. package/dist/shared/tooling/commandShape.js.map +1 -1
  243. package/dist/shared/tooling/exec.d.ts +32 -0
  244. package/dist/shared/tooling/exec.d.ts.map +1 -1
  245. package/dist/shared/tooling/exec.js +189 -0
  246. package/dist/shared/tooling/exec.js.map +1 -1
  247. package/dist/shared/types/finding.d.ts +132 -20
  248. package/dist/shared/types/finding.d.ts.map +1 -1
  249. package/dist/shared/types/finding.js +70 -63
  250. package/dist/shared/types/finding.js.map +1 -1
  251. package/docs/audit-pkg/contracts.md +8 -1
  252. package/docs/audit-pkg/operator-guide.md +13 -2
  253. package/docs/audit-pkg/product.md +22 -6
  254. package/package.json +10 -6
  255. package/schemas/audit-code-v1alpha1.schema.json +297 -0
  256. package/schemas/audit_result.schema.json +5 -1
  257. package/schemas/audit_results.schema.json +5 -1
  258. package/schemas/finding.schema.json +1 -1
  259. package/scripts/shared/install-host-assets.mjs +8 -5
  260. package/skills/audit-code/SKILL.md +4 -2
  261. package/skills/audit-code/audit-code.prompt.md +5 -2
  262. package/skills/audit-code/opencode-command-template.txt +1 -1
  263. package/wrapper/audit-code-wrapper-lib.mjs +82 -16
  264. package/wrapper/installer-verb-help.mjs +14 -4
  265. package/docs/audit-pkg/development.md +0 -113
  266. package/docs/audit-pkg/release.md +0 -140
@@ -1,4 +1,6 @@
1
+ import { existsSync } from "node:fs";
1
2
  import { mkdir } from "node:fs/promises";
3
+ import { join } from "node:path";
2
4
  import { buildRepoManifest } from "../extractors/fileInventory.js";
3
5
  import { buildFileDisposition } from "../extractors/disposition.js";
4
6
  import { buildCriticalFlowManifest } from "../extractors/flows.js";
@@ -10,7 +12,7 @@ import { initializeCoverageFromPlan } from "../orchestrator/planning.js";
10
12
  import { writeCoreArtifacts } from "../io/artifacts.js";
11
13
  import { buildAuditReportModel, renderAuditReportMarkdown, } from "../reporting/synthesis.js";
12
14
  import { deriveAuditState } from "../orchestrator/state.js";
13
- import { getArtifactsDir } from "./args.js";
15
+ import { getArtifactsDir, hasFlag } from "./args.js";
14
16
  import { outputJson } from "./cliHelpers.js";
15
17
  const SAMPLE_REPO_FILES = [
16
18
  { path: "src/api/auth.ts", size_bytes: 1240, hash: "abc123" },
@@ -87,6 +89,15 @@ export async function runSample(argv = process.argv) {
87
89
  audit_report: auditReport,
88
90
  });
89
91
  const artifactsDir = getArtifactsDir(argv);
92
+ // A live bundle (audit_state.json present) is real run state — fabricated
93
+ // sample artifacts must never overwrite it. `--force` is the explicit
94
+ // disposable-target override, mirroring the cleanup verb.
95
+ if (existsSync(join(artifactsDir, "audit_state.json")) &&
96
+ !hasFlag(argv, "--force")) {
97
+ console.error(`Refusing to write sample artifacts into '${artifactsDir}': an audit state file is present. Pass --force to overwrite a disposable target.`);
98
+ process.exitCode = 1;
99
+ return;
100
+ }
90
101
  await mkdir(artifactsDir, { recursive: true });
91
102
  await writeCoreArtifacts(artifactsDir, {
92
103
  repo_manifest: repoManifest,
@@ -1 +1 @@
1
- {"version":3,"file":"sampleRunCommand.js","sourceRoot":"","sources":["../../../src/audit/cli/sampleRunCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sampleRunCommand.js","sourceRoot":"","sources":["../../../src/audit/cli/sampleRunCommand.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { type SubmissionIssue } from "audit-tools/shared";
2
1
  import type { ActiveReviewRun } from "../supervisor/operatorHandoff.js";
2
+ import type { AuditHostIngestIssue } from "../validation/ingestIssueCodes.js";
3
+ import { type AuditHostValidationWarning } from "./dispatch/hostHandoff.js";
3
4
  import { writeCurrentStep } from "./steps.js";
4
5
  /**
5
6
  * Publish the complete provider-neutral semantic-review workload. The host owns
@@ -13,6 +14,8 @@ export declare function renderSemanticReviewStep(params: {
13
14
  selectedExecutor?: string | null;
14
15
  inProcessMadeProgress?: boolean;
15
16
  /** Failures the ingest that preceded this emission classified. */
16
- ingestIssues?: readonly SubmissionIssue[];
17
+ ingestIssues?: readonly AuditHostIngestIssue[];
18
+ /** Advisory validation findings on results the SAME ingest accepted. */
19
+ validationWarnings?: readonly AuditHostValidationWarning[];
17
20
  }): Promise<Awaited<ReturnType<typeof writeCurrentStep>>>;
18
21
  //# sourceMappingURL=semanticReviewStep.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"semanticReviewStep.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/semanticReviewStep.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAOxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuD9C;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kEAAkE;IAClE,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CAC3C,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAuExD"}
1
+ {"version":3,"file":"semanticReviewStep.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/semanticReviewStep.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6E9C;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kEAAkE;IAClE,YAAY,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC5D,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAqFxD"}
@@ -1,5 +1,6 @@
1
1
  import { resolve } from "node:path";
2
- import { readJsonFile } from "audit-tools/shared";
2
+ import { linkFrictionRunIds, readJsonFile } from "audit-tools/shared";
3
+ import { AUDIT_FRICTION_RUN_ID } from "../orchestrator/nextStep.js";
3
4
  import { prepareAuditHostHandoff, } from "./dispatch/hostHandoff.js";
4
5
  import { nextStepCommand } from "./prompts.js";
5
6
  import { writeCurrentStep } from "./steps.js";
@@ -51,6 +52,23 @@ function renderIngestIssueLines(issues) {
51
52
  "",
52
53
  ];
53
54
  }
55
+ /**
56
+ * The ADVISORY half of the ingest report: validation warnings on results that
57
+ * WERE accepted. Deliberately a separate renderer from {@link renderIngestIssueLines}
58
+ * — these need no repair, so they must not share a section (or a count) with
59
+ * items that could not be accepted, or an accepted-with-warning result reads as
60
+ * a refusal that never happened.
61
+ */
62
+ function renderValidationWarningLines(warnings) {
63
+ if (warnings.length === 0)
64
+ return [];
65
+ return [
66
+ "## Advisory notes on accepted results",
67
+ "",
68
+ ...warnings.map((warning) => `- \`${warning.work_item_id}\` was ACCEPTED; advisory: ${warning.message}`),
69
+ "",
70
+ ];
71
+ }
54
72
  /**
55
73
  * Publish the complete provider-neutral semantic-review workload. The host owns
56
74
  * every execution choice; audit-tools only binds prompts/results and ingests
@@ -68,9 +86,17 @@ export async function renderSemanticReviewStep(params) {
68
86
  runId: activeReviewRun.run_id,
69
87
  tasks: tasks.map(toHostTask),
70
88
  });
89
+ // Name this round's runs on the audit friction record, which is keyed by a fixed
90
+ // literal and so on its own names no run at all (semantics: `FrictionRunLinks`). Each
91
+ // reference is sourced from the envelope that owns it, never synthesized.
92
+ await linkFrictionRunIds(artifactsDir, AUDIT_FRICTION_RUN_ID, {
93
+ step_run_id: activeReviewRun.run_id,
94
+ dispatch_run_id: handoff.workload.run_id,
95
+ }, "audit-code");
71
96
  const continueCommand = nextStepCommand(root, artifactsDir);
72
97
  const resultPaths = handoff.workload.work_items.map((item) => resolve(root, item.result_path));
73
98
  const issues = params.ingestIssues ?? [];
99
+ const validationWarnings = params.validationWarnings ?? [];
74
100
  return writeCurrentStep({
75
101
  artifactsDir,
76
102
  stepKind: "dispatch_review",
@@ -99,6 +125,7 @@ export async function renderSemanticReviewStep(params) {
99
125
  "# audit-code semantic review",
100
126
  "",
101
127
  ...renderIngestIssueLines(issues),
128
+ ...renderValidationWarningLines(validationWarnings),
102
129
  `Read the complete provider-neutral workload at: ${handoff.workload_path}`,
103
130
  "",
104
131
  "Execute every work item using the host facilities available in this conversation.",
@@ -1 +1 @@
1
- {"version":3,"file":"semanticReviewStep.js","sourceRoot":"","sources":["../../../src/audit/cli/semanticReviewStep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semanticReviewStep.js","sourceRoot":"","sources":["../../../src/audit/cli/semanticReviewStep.ts"],"names":[],"mappings":"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"}
@@ -181,13 +181,13 @@ export declare const StepArtifactSchema: z.ZodObject<{
181
181
  status: "blocked" | "ready" | "complete";
182
182
  contract_version: "audit-code-step/v1alpha1";
183
183
  run_id: string | null;
184
+ repo_root: string;
185
+ artifacts_dir: string;
186
+ artifact_paths: Record<string, string | null>;
184
187
  step_kind: "blocked" | "design_review" | "charter_clarification" | "analyzer_consent" | "systemic_challenge" | "critical_flow_fallback" | "synthesis_narrative" | "design_review_contract" | "design_review_conceptual" | "intent_equivalence" | "charter_delta" | "dispatch_review" | "design_review_parallel" | "charter_extraction" | "confirm_intent" | "analyzer_install" | "edge_reasoning_dispatch" | "present_report";
185
188
  prompt_path: string;
186
189
  allowed_commands: string[];
187
190
  stop_condition: string;
188
- repo_root: string;
189
- artifacts_dir: string;
190
- artifact_paths: Record<string, string | null>;
191
191
  progress?: {
192
192
  summary: string;
193
193
  pending_packets?: number | undefined;
@@ -220,13 +220,13 @@ export declare const StepArtifactSchema: z.ZodObject<{
220
220
  status: "blocked" | "ready" | "complete";
221
221
  contract_version: "audit-code-step/v1alpha1";
222
222
  run_id: string | null;
223
+ repo_root: string;
224
+ artifacts_dir: string;
225
+ artifact_paths: Record<string, string | null>;
223
226
  step_kind: "blocked" | "design_review" | "charter_clarification" | "analyzer_consent" | "systemic_challenge" | "critical_flow_fallback" | "synthesis_narrative" | "design_review_contract" | "design_review_conceptual" | "intent_equivalence" | "charter_delta" | "dispatch_review" | "design_review_parallel" | "charter_extraction" | "confirm_intent" | "analyzer_install" | "edge_reasoning_dispatch" | "present_report";
224
227
  prompt_path: string;
225
228
  allowed_commands: string[];
226
229
  stop_condition: string;
227
- repo_root: string;
228
- artifacts_dir: string;
229
- artifact_paths: Record<string, string | null>;
230
230
  progress?: {
231
231
  summary: string;
232
232
  pending_packets?: number | undefined;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `audit-code unaccept-results --work-item <id> [--work-item <id> …] | --all`
3
+ *
4
+ * Remove entries from the run's accepted host-results pair — the supported path
5
+ * back out of an acceptance, per the recovery-verb doctrine: operator-facing,
6
+ * refusing what it cannot validate (the strict accepted-ledger loader throws on
7
+ * a corrupt pair), recording the removal so a repaired run stays
8
+ * distinguishable from a clean one, and invalidating the persisted step
9
+ * contract. After dropping, the next fold re-reads the bound result files.
10
+ *
11
+ * Argument validation lives in {@link dropAcceptedResults} — the ONE copy of
12
+ * the "requires --work-item or --all" refusal; this command parses argv only.
13
+ *
14
+ * The run id resolves from the persisted review-run manifest, not an argv flag:
15
+ * the operator names WHAT to drop, never WHERE the state lives.
16
+ */
17
+ export declare function cmdUnacceptResults(argv: string[]): Promise<void>;
18
+ //# sourceMappingURL=unacceptResultsCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unacceptResultsCommand.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/unacceptResultsCommand.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CtE"}
@@ -0,0 +1,49 @@
1
+ import { dropAcceptedResults } from "./dispatch/hostHandoff.js";
2
+ import { getArtifactsDir, getFlag, getRootDir, hasFlag, } from "./args.js";
3
+ import { loadCurrentActiveReviewRun } from "./reviewRun.js";
4
+ /**
5
+ * `audit-code unaccept-results --work-item <id> [--work-item <id> …] | --all`
6
+ *
7
+ * Remove entries from the run's accepted host-results pair — the supported path
8
+ * back out of an acceptance, per the recovery-verb doctrine: operator-facing,
9
+ * refusing what it cannot validate (the strict accepted-ledger loader throws on
10
+ * a corrupt pair), recording the removal so a repaired run stays
11
+ * distinguishable from a clean one, and invalidating the persisted step
12
+ * contract. After dropping, the next fold re-reads the bound result files.
13
+ *
14
+ * Argument validation lives in {@link dropAcceptedResults} — the ONE copy of
15
+ * the "requires --work-item or --all" refusal; this command parses argv only.
16
+ *
17
+ * The run id resolves from the persisted review-run manifest, not an argv flag:
18
+ * the operator names WHAT to drop, never WHERE the state lives.
19
+ */
20
+ export async function cmdUnacceptResults(argv) {
21
+ const root = getRootDir(argv);
22
+ const artifactsDir = getArtifactsDir(argv);
23
+ const all = hasFlag(argv, "--all");
24
+ const workItemIds = argv
25
+ .flatMap((token, index) => token === "--work-item" ? [argv[index + 1]] : [])
26
+ .filter((value) => typeof value === "string");
27
+ // Canonical run resolution: the same manifest `next-step`'s ingest fold reads.
28
+ // A hand-supplied run id would be a second way to be wrong about which state
29
+ // is being mutated.
30
+ const overrideRunId = getFlag(argv, "--run-id");
31
+ const runId = overrideRunId ?? (await loadCurrentActiveReviewRun(artifactsDir))?.run_id;
32
+ if (runId === undefined) {
33
+ throw new Error(`unaccept-results could not resolve the active review run under ${artifactsDir} ` +
34
+ "(no dispatch manifest); pass --run-id <id> only if the manifest was removed");
35
+ }
36
+ const outcome = await dropAcceptedResults({
37
+ root,
38
+ artifactsDir,
39
+ runId,
40
+ ...(all ? { all: true } : { workItemIds }),
41
+ });
42
+ console.log(JSON.stringify({
43
+ status: "unaccepted",
44
+ run_id: runId,
45
+ dropped_work_item_ids: outcome.dropped_work_item_ids,
46
+ next: "audit-code next-step re-reads the bound result files for the dropped items",
47
+ }, null, 2));
48
+ }
49
+ //# sourceMappingURL=unacceptResultsCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unacceptResultsCommand.js","sourceRoot":"","sources":["../../../src/audit/cli/unacceptResultsCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,eAAe,EACf,OAAO,EACP,UAAU,EACV,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAc;IACrD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI;SACrB,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACxB,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CACjD;SACA,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IAEjE,+EAA+E;IAC/E,6EAA6E;IAC7E,oBAAoB;IACpB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,0BAA0B,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC;IAC5E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,kEAAkE,YAAY,GAAG;YAC/E,6EAA6E,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACxC,IAAI;QACJ,YAAY;QACZ,KAAK;QACL,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;KAC3C,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;QACE,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,KAAK;QACb,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,IAAI,EAAE,4EAA4E;KACnF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;AACJ,CAAC"}
@@ -17,5 +17,11 @@ export declare const cliTestUtils: {
17
17
  countLines: typeof countLines;
18
18
  warnIfNotGitRepo: typeof warnIfNotGitRepo;
19
19
  };
20
+ /**
21
+ * The ONE route table for the audit CLI. Each row is [verb, handler]; the
22
+ * dispatch below walks it and the unknown-command listing is DERIVED from it —
23
+ * never a second hand-maintained copy that drifts when a verb is added.
24
+ */
25
+ export declare const COMMAND_ROUTES: ReadonlyArray<readonly [string, (argv: string[]) => Promise<void>]>;
20
26
  export declare function runCli(argv: string[]): Promise<void>;
21
27
  //# sourceMappingURL=cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/audit/cli.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,OAAO,EACP,OAAO,EACP,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAiBtD,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;CAWxB,CAAC;AA0FF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1D"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/audit/cli.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,OAAO,EACP,OAAO,EACP,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAkBtD,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;CAWxB,CAAC;AAgBF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,aAAa,CACxC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAqBrD,CAAC;AAwBF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1D"}
package/dist/audit/cli.js CHANGED
@@ -20,6 +20,7 @@ import { cmdResynthesize } from "./cli/resynthesizeCommand.js";
20
20
  import { cmdCleanup } from "./cli/cleanupCommand.js";
21
21
  import { cmdScoreAudit } from "./cli/scoreAuditCommand.js";
22
22
  import { cmdRecoverSubmission } from "./cli/recoverSubmissionCommand.js";
23
+ import { cmdUnacceptResults } from "./cli/unacceptResultsCommand.js";
23
24
  export { runSample };
24
25
  export const cliTestUtils = {
25
26
  defaults: DIRECT_CLI_DEFAULTS,
@@ -46,6 +47,32 @@ export const cliTestUtils = {
46
47
  * wrapper, scrubbed from provider spawns).
47
48
  */
48
49
  const WORKER_SAFE_COMMANDS = new Set();
50
+ /**
51
+ * The ONE route table for the audit CLI. Each row is [verb, handler]; the
52
+ * dispatch below walks it and the unknown-command listing is DERIVED from it —
53
+ * never a second hand-maintained copy that drifts when a verb is added.
54
+ */
55
+ export const COMMAND_ROUTES = [
56
+ ["sample-run", runSample],
57
+ ["next-step", cmdNextStep],
58
+ ["import-external-analyzer", cmdImportExternalAnalyzer],
59
+ ["intake", cmdIntake],
60
+ ["plan", cmdPlan],
61
+ ["ingest-results", cmdIngestResults],
62
+ ["explain-task", cmdExplainTask],
63
+ ["update-runtime-validation", cmdUpdateRuntimeValidation],
64
+ ["validate", cmdValidate],
65
+ ["validate-results", cmdValidateResults],
66
+ ["requeue", cmdRequeue],
67
+ ["synthesize", cmdSynthesize],
68
+ ["force-synthesis", cmdForceSynthesis],
69
+ ["resynthesize", cmdResynthesize],
70
+ ["cleanup", cmdCleanup],
71
+ ["status", cmdStatus],
72
+ ["score-audit", cmdScoreAudit],
73
+ ["recover-submission", cmdRecoverSubmission],
74
+ ["unaccept-results", cmdUnacceptResults],
75
+ ];
49
76
  async function main(argv) {
50
77
  const command = argv[2] ?? "sample-run";
51
78
  assertCliCommandAllowedFromCwd({
@@ -56,66 +83,14 @@ async function main(argv) {
56
83
  // worktree evidence, so the guard must see the unanchored value.
57
84
  rawRoot: getFlag(argv, "--root"),
58
85
  });
59
- switch (command) {
60
- case "sample-run":
61
- await runSample(argv);
62
- return;
63
- case "next-step":
64
- await cmdNextStep(argv);
65
- return;
66
- case "import-external-analyzer":
67
- await cmdImportExternalAnalyzer(argv);
68
- return;
69
- case "intake":
70
- await cmdIntake(argv);
71
- return;
72
- case "plan":
73
- await cmdPlan(argv);
74
- return;
75
- case "ingest-results":
76
- await cmdIngestResults(argv);
77
- return;
78
- case "explain-task":
79
- await cmdExplainTask(argv);
80
- return;
81
- case "update-runtime-validation":
82
- await cmdUpdateRuntimeValidation(argv);
83
- return;
84
- case "validate":
85
- await cmdValidate(argv);
86
- return;
87
- case "validate-results":
88
- await cmdValidateResults(argv);
89
- return;
90
- case "requeue":
91
- await cmdRequeue(argv);
92
- return;
93
- case "synthesize":
94
- await cmdSynthesize(argv);
95
- return;
96
- case "force-synthesis":
97
- await cmdForceSynthesis(argv);
98
- return;
99
- case "resynthesize":
100
- await cmdResynthesize(argv);
101
- return;
102
- case "cleanup":
103
- await cmdCleanup(argv);
104
- return;
105
- case "status":
106
- await cmdStatus(argv);
107
- return;
108
- case "score-audit":
109
- await cmdScoreAudit(argv);
110
- return;
111
- case "recover-submission":
112
- await cmdRecoverSubmission(argv);
113
- return;
114
- default:
115
- console.error(`Unknown command: ${command}`);
116
- console.error("Available commands: sample-run, next-step, import-external-analyzer, intake, plan, ingest-results, explain-task, update-runtime-validation, validate, validate-results, requeue, synthesize, force-synthesis, resynthesize, cleanup, status, score-audit, recover-submission");
117
- process.exitCode = 1;
86
+ const route = COMMAND_ROUTES.find(([verb]) => verb === command);
87
+ if (!route) {
88
+ console.error(`Unknown command: ${command}`);
89
+ console.error(`Available commands: ${COMMAND_ROUTES.map(([verb]) => verb).join(", ")}`);
90
+ process.exitCode = 1;
91
+ return;
118
92
  }
93
+ await route[1](argv);
119
94
  }
120
95
  export async function runCli(argv) {
121
96
  await main(argv).catch((error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/audit/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/audit/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The finding contract as prompt lines: required fields (with their shapes),
3
+ * min-length facts, the closed vocabularies, the optional fields with their own
4
+ * `.describe()` text, and every non-schema rule statement verbatim.
5
+ *
6
+ * Memoized: the derivation is pure and the result is embedded in every
7
+ * work-item prompt (and therefore in every prompt hash), so it must be both
8
+ * cheap and byte-stable across a run.
9
+ */
10
+ export declare function findingContractPromptLines(): readonly string[];
11
+ //# sourceMappingURL=findingContractPrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findingContractPrompt.d.ts","sourceRoot":"","sources":["../../../src/audit/contracts/findingContractPrompt.ts"],"names":[],"mappings":"AA8DA;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,IAAI,SAAS,MAAM,EAAE,CAoE9D"}
@@ -0,0 +1,112 @@
1
+ // The audit draw's finding contract as prompt lines.
2
+ //
3
+ // DERIVED from `WorkerFindingSchema` — the strict projection ingestion parses —
4
+ // plus `AUDIT_RESULT_RULES`, the registry of the rules that are not expressible
5
+ // as per-finding schema refinements and that `validateAuditResults` emits its
6
+ // messages FROM. Prompt, acceptance and validation therefore share ONE source:
7
+ // a field or rule the validators enforce is stated here because it exists in
8
+ // the schema/registry, never because someone remembered to copy it in.
9
+ //
10
+ // A dispatch prompt that says only "findings must satisfy the audit finding
11
+ // contract" leaves the host to remember or fetch the contract; a measured lap
12
+ // lost four complete results exactly that way (findings missing the required
13
+ // per-finding `lens`; `evidence` submitted as a string where an array is
14
+ // required), and the 2026-08-21 lap then lost more to `evidence` being omitted
15
+ // entirely while downstream validation required it.
16
+ import { zodToJsonSchema } from "zod-to-json-schema";
17
+ import { CONFIDENCES, LENSES, SEVERITIES, FINDING_LINE_END_INTEGER_RULE, FINDING_LINE_ORDER_RULE, FINDING_LINE_START_INTEGER_RULE, } from "audit-tools/shared";
18
+ import { AUDIT_RESULT_RULES } from "../validation/auditResults.js";
19
+ import { WorkerFindingSchema } from "./workerSchemas.js";
20
+ function describeField(node) {
21
+ if (node === undefined)
22
+ return "value";
23
+ if (Array.isArray(node.enum)) {
24
+ return `one of ${node.enum.map((value) => String(value)).join("|")}`;
25
+ }
26
+ if (node.type === "array") {
27
+ const item = node.items;
28
+ if (item?.type === "object") {
29
+ const required = [...(item.required ?? [])].sort();
30
+ return required.length > 0
31
+ ? `array of objects, each requiring ${required.join(" + ")}`
32
+ : "array of objects";
33
+ }
34
+ return typeof item?.type === "string" ? `array of ${item.type}s` : "array";
35
+ }
36
+ return typeof node.type === "string" ? node.type : "value";
37
+ }
38
+ let renderedContract;
39
+ /**
40
+ * The finding contract as prompt lines: required fields (with their shapes),
41
+ * min-length facts, the closed vocabularies, the optional fields with their own
42
+ * `.describe()` text, and every non-schema rule statement verbatim.
43
+ *
44
+ * Memoized: the derivation is pure and the result is embedded in every
45
+ * work-item prompt (and therefore in every prompt hash), so it must be both
46
+ * cheap and byte-stable across a run.
47
+ */
48
+ export function findingContractPromptLines() {
49
+ if (renderedContract !== undefined)
50
+ return renderedContract;
51
+ const schema = zodToJsonSchema(WorkerFindingSchema, {
52
+ $refStrategy: "none",
53
+ target: "jsonSchema7",
54
+ });
55
+ const properties = schema.properties ?? {};
56
+ const required = [...(schema.required ?? [])].sort();
57
+ const arrayFields = Object.entries(properties)
58
+ .filter(([, node]) => node.type === "array")
59
+ .map(([name]) => name)
60
+ .sort();
61
+ const optionalFields = Object.entries(properties)
62
+ .filter(([name]) => !required.includes(name))
63
+ .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0));
64
+ // Every min(1) the schema carries is a contract fact the host must know —
65
+ // an empty value fails the parse exactly as a missing field does — so it is
66
+ // detected FROM the schema node (required or optional, array or string),
67
+ // never from a hand list.
68
+ const nonEmptyFields = Object.entries(properties)
69
+ .filter(([, node]) => (node.minItems ?? 0) >= 1 || (node.minLength ?? 0) >= 1)
70
+ .map(([name]) => name)
71
+ .sort();
72
+ const nonEmptyLine = (names) => `Finding contract — ${names.join(", ")} ` +
73
+ `${names.every((name) => required.includes(name)) ? "must be non-empty" : "must be non-empty when supplied"} ` +
74
+ "(an empty value rejects the submission).";
75
+ const lines = [
76
+ "Finding contract — every entry of `findings` must carry these required fields: " +
77
+ required
78
+ .map((name) => `${name} (${describeField(properties[name])})`)
79
+ .join(", ") +
80
+ ".",
81
+ ...[
82
+ nonEmptyFields.filter((name) => required.includes(name)),
83
+ nonEmptyFields.filter((name) => !required.includes(name)),
84
+ ]
85
+ .filter((names) => names.length > 0)
86
+ .map((names) => nonEmptyLine(names)),
87
+ "These fields are JSON arrays whenever present, never a bare string or object: " +
88
+ arrayFields.join(", ") +
89
+ ". A finding that fails this contract rejects the whole submission.",
90
+ // `lens` is an OPTIONAL finding field (the enclosing AuditResult supplies
91
+ // the default), so its vocabulary clause is scoped to findings that supply
92
+ // one — stated two lines above as "lens is optional" — while severity and
93
+ // confidence are required on every finding. Still derived: the value list
94
+ // comes from LENSES, never a hand-typed copy.
95
+ `Closed vocabularies — severity must be one of ${SEVERITIES.join("|")}; confidence one of ${CONFIDENCES.join("|")}; lens, when supplied, one of ${LENSES.join("|")}.`,
96
+ ...optionalFields
97
+ .filter(([, node]) => typeof node.description === "string")
98
+ .map(([name, node]) => `${name} is optional${typeof node.description === "string" ? `: ${node.description}` : "."}`),
99
+ // The line-span rules are enforced by the shared location refinement; the
100
+ // prompt states the very sentences the refinement emits (the exported
101
+ // constants), so the check and the statement cannot drift.
102
+ `Rule: ${FINDING_LINE_START_INTEGER_RULE}`,
103
+ `Rule: ${FINDING_LINE_END_INTEGER_RULE}`,
104
+ `Rule: ${FINDING_LINE_ORDER_RULE}`,
105
+ // Every cross-record rule the downstream validator enforces, verbatim from
106
+ // the registry the validator itself reads — not a paraphrase.
107
+ ...AUDIT_RESULT_RULES.map((rule) => `Rule: ${rule.statement}`),
108
+ ];
109
+ renderedContract = lines;
110
+ return renderedContract;
111
+ }
112
+ //# sourceMappingURL=findingContractPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findingContractPrompt.js","sourceRoot":"","sources":["../../../src/audit/contracts/findingContractPrompt.ts"],"names":[],"mappings":"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"}