audit-tools 0.50.21 → 0.51.1

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 (368) hide show
  1. package/README.md +1 -1
  2. package/dist/audit/cli/auditStep.d.ts +1 -1
  3. package/dist/audit/cli/charterExtractionPrompt.d.ts.map +1 -1
  4. package/dist/audit/cli/charterExtractionPrompt.js +14 -1
  5. package/dist/audit/cli/charterExtractionPrompt.js.map +1 -1
  6. package/dist/audit/cli/cleanup.d.ts +0 -1
  7. package/dist/audit/cli/cleanup.d.ts.map +1 -1
  8. package/dist/audit/cli/cleanup.js +32 -20
  9. package/dist/audit/cli/cleanup.js.map +1 -1
  10. package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
  11. package/dist/audit/cli/conceptualDispatch.js +30 -5
  12. package/dist/audit/cli/conceptualDispatch.js.map +1 -1
  13. package/dist/audit/cli/dispatch/hostHandoff.d.ts +2 -0
  14. package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
  15. package/dist/audit/cli/dispatch/hostHandoff.js +48 -20
  16. package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
  17. package/dist/audit/cli/fanoutLanes.d.ts +7 -0
  18. package/dist/audit/cli/fanoutLanes.d.ts.map +1 -1
  19. package/dist/audit/cli/fanoutLanes.js +9 -1
  20. package/dist/audit/cli/fanoutLanes.js.map +1 -1
  21. package/dist/audit/cli/forceSynthesisCommand.d.ts.map +1 -1
  22. package/dist/audit/cli/forceSynthesisCommand.js +2 -14
  23. package/dist/audit/cli/forceSynthesisCommand.js.map +1 -1
  24. package/dist/audit/cli/intakeCommand.d.ts.map +1 -1
  25. package/dist/audit/cli/intakeCommand.js +3 -13
  26. package/dist/audit/cli/intakeCommand.js.map +1 -1
  27. package/dist/audit/cli/laneSubmissions.d.ts +42 -57
  28. package/dist/audit/cli/laneSubmissions.d.ts.map +1 -1
  29. package/dist/audit/cli/laneSubmissions.js +116 -82
  30. package/dist/audit/cli/laneSubmissions.js.map +1 -1
  31. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  32. package/dist/audit/cli/nextStepCommand.js +132 -99
  33. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  34. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  35. package/dist/audit/cli/nextStepHelpers.js +39 -46
  36. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  37. package/dist/audit/cli/resynthesizeCommand.d.ts.map +1 -1
  38. package/dist/audit/cli/resynthesizeCommand.js +5 -2
  39. package/dist/audit/cli/resynthesizeCommand.js.map +1 -1
  40. package/dist/audit/cli/sampleRunCommand.d.ts +3 -2
  41. package/dist/audit/cli/sampleRunCommand.d.ts.map +1 -1
  42. package/dist/audit/cli/stepScaffold.d.ts +21 -0
  43. package/dist/audit/cli/stepScaffold.d.ts.map +1 -0
  44. package/dist/audit/cli/stepScaffold.js +50 -0
  45. package/dist/audit/cli/stepScaffold.js.map +1 -0
  46. package/dist/audit/cli/steps.d.ts +6 -6
  47. package/dist/audit/cli/synthesizeCommand.d.ts.map +1 -1
  48. package/dist/audit/cli/synthesizeCommand.js +2 -14
  49. package/dist/audit/cli/synthesizeCommand.js.map +1 -1
  50. package/dist/audit/contracts/workerSchemas.d.ts +8 -8
  51. package/dist/audit/contracts/workerSchemas.d.ts.map +1 -1
  52. package/dist/audit/contracts/workerSchemas.js +12 -6
  53. package/dist/audit/contracts/workerSchemas.js.map +1 -1
  54. package/dist/audit/contracts/wrapperResponse.d.ts +7 -7
  55. package/dist/audit/contracts/wrapperResponse.d.ts.map +1 -1
  56. package/dist/audit/contracts/wrapperResponse.js +9 -1
  57. package/dist/audit/contracts/wrapperResponse.js.map +1 -1
  58. package/dist/audit/extractors/analyzers/merge.d.ts.map +1 -1
  59. package/dist/audit/extractors/analyzers/merge.js +2 -7
  60. package/dist/audit/extractors/analyzers/merge.js.map +1 -1
  61. package/dist/audit/extractors/commentDecomposition.d.ts +28 -0
  62. package/dist/audit/extractors/commentDecomposition.d.ts.map +1 -1
  63. package/dist/audit/extractors/commentDecomposition.js +151 -22
  64. package/dist/audit/extractors/commentDecomposition.js.map +1 -1
  65. package/dist/audit/extractors/graph.d.ts +1 -1
  66. package/dist/audit/extractors/graph.d.ts.map +1 -1
  67. package/dist/audit/extractors/graph.js +2 -6
  68. package/dist/audit/extractors/graph.js.map +1 -1
  69. package/dist/audit/extractors/graphManifestEdges/cargo.d.ts.map +1 -1
  70. package/dist/audit/extractors/graphManifestEdges/cargo.js +4 -4
  71. package/dist/audit/extractors/graphManifestEdges/cargo.js.map +1 -1
  72. package/dist/audit/extractors/graphManifestEdges/pnpm.d.ts.map +1 -1
  73. package/dist/audit/extractors/graphManifestEdges/pnpm.js +3 -3
  74. package/dist/audit/extractors/graphManifestEdges/pnpm.js.map +1 -1
  75. package/dist/audit/extractors/graphManifestEdges/pyproject.d.ts.map +1 -1
  76. package/dist/audit/extractors/graphManifestEdges/pyproject.js +3 -2
  77. package/dist/audit/extractors/graphManifestEdges/pyproject.js.map +1 -1
  78. package/dist/audit/extractors/graphManifestEdges/toml.d.ts +0 -6
  79. package/dist/audit/extractors/graphManifestEdges/toml.d.ts.map +1 -1
  80. package/dist/audit/extractors/graphManifestEdges/toml.js +0 -13
  81. package/dist/audit/extractors/graphManifestEdges/toml.js.map +1 -1
  82. package/dist/audit/extractors/graphManifestEdges/workspace.d.ts +9 -0
  83. package/dist/audit/extractors/graphManifestEdges/workspace.d.ts.map +1 -1
  84. package/dist/audit/extractors/graphManifestEdges/workspace.js +16 -0
  85. package/dist/audit/extractors/graphManifestEdges/workspace.js.map +1 -1
  86. package/dist/audit/extractors/graphManifestEdges/yaml.d.ts +0 -2
  87. package/dist/audit/extractors/graphManifestEdges/yaml.d.ts.map +1 -1
  88. package/dist/audit/extractors/graphManifestEdges/yaml.js +0 -9
  89. package/dist/audit/extractors/graphManifestEdges/yaml.js.map +1 -1
  90. package/dist/audit/extractors/graphSignals.d.ts.map +1 -1
  91. package/dist/audit/extractors/graphSignals.js +16 -2
  92. package/dist/audit/extractors/graphSignals.js.map +1 -1
  93. package/dist/audit/io/artifacts.d.ts +19 -0
  94. package/dist/audit/io/artifacts.d.ts.map +1 -1
  95. package/dist/audit/io/artifacts.js +44 -2
  96. package/dist/audit/io/artifacts.js.map +1 -1
  97. package/dist/audit/orchestrator/advance.d.ts +0 -22
  98. package/dist/audit/orchestrator/advance.d.ts.map +1 -1
  99. package/dist/audit/orchestrator/advance.js +1 -43
  100. package/dist/audit/orchestrator/advance.js.map +1 -1
  101. package/dist/audit/orchestrator/charterDeltaExecutor.d.ts.map +1 -1
  102. package/dist/audit/orchestrator/charterDeltaExecutor.js +14 -0
  103. package/dist/audit/orchestrator/charterDeltaExecutor.js.map +1 -1
  104. package/dist/audit/orchestrator/charterExtractionExecutor.d.ts +16 -6
  105. package/dist/audit/orchestrator/charterExtractionExecutor.d.ts.map +1 -1
  106. package/dist/audit/orchestrator/charterExtractionExecutor.js +127 -9
  107. package/dist/audit/orchestrator/charterExtractionExecutor.js.map +1 -1
  108. package/dist/audit/orchestrator/charterPacketArchive.d.ts +51 -0
  109. package/dist/audit/orchestrator/charterPacketArchive.d.ts.map +1 -0
  110. package/dist/audit/orchestrator/charterPacketArchive.js +173 -0
  111. package/dist/audit/orchestrator/charterPacketArchive.js.map +1 -0
  112. package/dist/audit/orchestrator/charterPackets.d.ts +31 -13
  113. package/dist/audit/orchestrator/charterPackets.d.ts.map +1 -1
  114. package/dist/audit/orchestrator/charterPackets.js +299 -96
  115. package/dist/audit/orchestrator/charterPackets.js.map +1 -1
  116. package/dist/audit/orchestrator/designReviewPrompt.d.ts +20 -4
  117. package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
  118. package/dist/audit/orchestrator/designReviewPrompt.js +89 -12
  119. package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
  120. package/dist/audit/orchestrator/edgeReasoning.d.ts.map +1 -1
  121. package/dist/audit/orchestrator/edgeReasoning.js +4 -9
  122. package/dist/audit/orchestrator/edgeReasoning.js.map +1 -1
  123. package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
  124. package/dist/audit/orchestrator/executorRunners.js +17 -1
  125. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  126. package/dist/audit/orchestrator/graphEnrichmentExecutor.d.ts.map +1 -1
  127. package/dist/audit/orchestrator/graphEnrichmentExecutor.js +8 -1
  128. package/dist/audit/orchestrator/graphEnrichmentExecutor.js.map +1 -1
  129. package/dist/audit/orchestrator/intentCheckpointGate.d.ts.map +1 -1
  130. package/dist/audit/orchestrator/intentCheckpointGate.js +11 -2
  131. package/dist/audit/orchestrator/intentCheckpointGate.js.map +1 -1
  132. package/dist/audit/orchestrator/lineCounts.d.ts +44 -0
  133. package/dist/audit/orchestrator/lineCounts.d.ts.map +1 -0
  134. package/dist/audit/orchestrator/lineCounts.js +61 -0
  135. package/dist/audit/orchestrator/lineCounts.js.map +1 -0
  136. package/dist/audit/orchestrator/obligationDerive.d.ts +35 -0
  137. package/dist/audit/orchestrator/obligationDerive.d.ts.map +1 -0
  138. package/dist/audit/orchestrator/obligationDerive.js +50 -0
  139. package/dist/audit/orchestrator/obligationDerive.js.map +1 -0
  140. package/dist/audit/orchestrator/reviewPacketMetrics.d.ts.map +1 -1
  141. package/dist/audit/orchestrator/reviewPacketMetrics.js +3 -2
  142. package/dist/audit/orchestrator/reviewPacketMetrics.js.map +1 -1
  143. package/dist/audit/orchestrator/reviewPacketShared.d.ts +0 -2
  144. package/dist/audit/orchestrator/reviewPacketShared.d.ts.map +1 -1
  145. package/dist/audit/orchestrator/reviewPacketShared.js +0 -4
  146. package/dist/audit/orchestrator/reviewPacketShared.js.map +1 -1
  147. package/dist/audit/orchestrator/reviewPackets.d.ts.map +1 -1
  148. package/dist/audit/orchestrator/reviewPackets.js +3 -2
  149. package/dist/audit/orchestrator/reviewPackets.js.map +1 -1
  150. package/dist/audit/orchestrator/selectiveDeepening/conflict.d.ts.map +1 -1
  151. package/dist/audit/orchestrator/selectiveDeepening/conflict.js +3 -2
  152. package/dist/audit/orchestrator/selectiveDeepening/conflict.js.map +1 -1
  153. package/dist/audit/orchestrator/selectiveDeepening/findingFollowup.d.ts.map +1 -1
  154. package/dist/audit/orchestrator/selectiveDeepening/findingFollowup.js +3 -2
  155. package/dist/audit/orchestrator/selectiveDeepening/findingFollowup.js.map +1 -1
  156. package/dist/audit/orchestrator/selectiveDeepening/highRiskClean.d.ts.map +1 -1
  157. package/dist/audit/orchestrator/selectiveDeepening/highRiskClean.js +3 -2
  158. package/dist/audit/orchestrator/selectiveDeepening/highRiskClean.js.map +1 -1
  159. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.d.ts.map +1 -1
  160. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.js +4 -3
  161. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.js.map +1 -1
  162. package/dist/audit/orchestrator/selectiveDeepening/runtimeValidation.d.ts.map +1 -1
  163. package/dist/audit/orchestrator/selectiveDeepening/runtimeValidation.js +2 -1
  164. package/dist/audit/orchestrator/selectiveDeepening/runtimeValidation.js.map +1 -1
  165. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts +0 -2
  166. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts.map +1 -1
  167. package/dist/audit/orchestrator/selectiveDeepening/shared.js +0 -27
  168. package/dist/audit/orchestrator/selectiveDeepening/shared.js.map +1 -1
  169. package/dist/audit/orchestrator/selectiveDeepening/stewardFollowup.d.ts.map +1 -1
  170. package/dist/audit/orchestrator/selectiveDeepening/stewardFollowup.js +10 -1
  171. package/dist/audit/orchestrator/selectiveDeepening/stewardFollowup.js.map +1 -1
  172. package/dist/audit/orchestrator/state.d.ts.map +1 -1
  173. package/dist/audit/orchestrator/state.js +21 -14
  174. package/dist/audit/orchestrator/state.js.map +1 -1
  175. package/dist/audit/orchestrator/synthesisExecutors.d.ts +8 -0
  176. package/dist/audit/orchestrator/synthesisExecutors.d.ts.map +1 -1
  177. package/dist/audit/orchestrator/synthesisExecutors.js +10 -0
  178. package/dist/audit/orchestrator/synthesisExecutors.js.map +1 -1
  179. package/dist/audit/reporting/synthesis.d.ts +42 -2
  180. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  181. package/dist/audit/reporting/synthesis.js +264 -12
  182. package/dist/audit/reporting/synthesis.js.map +1 -1
  183. package/dist/audit/supervisor/operatorHandoff.d.ts.map +1 -1
  184. package/dist/audit/supervisor/operatorHandoff.js +14 -6
  185. package/dist/audit/supervisor/operatorHandoff.js.map +1 -1
  186. package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts.map +1 -1
  187. package/dist/audit/systemic/secondOrderAdversaryPrompt.js +14 -0
  188. package/dist/audit/systemic/secondOrderAdversaryPrompt.js.map +1 -1
  189. package/dist/audit/types/analyzerCapability.d.ts +35 -11
  190. package/dist/audit/types/analyzerCapability.d.ts.map +1 -1
  191. package/dist/audit/types/analyzerCapability.js +83 -5
  192. package/dist/audit/types/analyzerCapability.js.map +1 -1
  193. package/dist/audit/types/auditState.d.ts +8 -8
  194. package/dist/audit/types/charterRegister.d.ts +33 -3
  195. package/dist/audit/types/charterRegister.d.ts.map +1 -1
  196. package/dist/audit/types/charterRegister.js +11 -1
  197. package/dist/audit/types/charterRegister.js.map +1 -1
  198. package/dist/audit/types/conceptualAdjudication.d.ts +395 -16
  199. package/dist/audit/types/conceptualAdjudication.d.ts.map +1 -1
  200. package/dist/audit/types/conceptualAdjudication.js +109 -5
  201. package/dist/audit/types/conceptualAdjudication.js.map +1 -1
  202. package/dist/audit/types/designAssessment.d.ts +1 -1
  203. package/dist/audit/types/designAssessment.d.ts.map +1 -1
  204. package/dist/audit/types.d.ts +9 -4
  205. package/dist/audit/types.d.ts.map +1 -1
  206. package/dist/remediate/droppedFindingsRecord.d.ts +13 -0
  207. package/dist/remediate/droppedFindingsRecord.d.ts.map +1 -0
  208. package/dist/remediate/droppedFindingsRecord.js +113 -0
  209. package/dist/remediate/droppedFindingsRecord.js.map +1 -0
  210. package/dist/remediate/intake.d.ts +17 -0
  211. package/dist/remediate/intake.d.ts.map +1 -1
  212. package/dist/remediate/intake.js +23 -0
  213. package/dist/remediate/intake.js.map +1 -1
  214. package/dist/remediate/intent/intentOrdering.d.ts.map +1 -1
  215. package/dist/remediate/intent/intentOrdering.js +29 -1
  216. package/dist/remediate/intent/intentOrdering.js.map +1 -1
  217. package/dist/remediate/phases/close.d.ts +1 -1
  218. package/dist/remediate/phases/close.d.ts.map +1 -1
  219. package/dist/remediate/phases/close.js +68 -6
  220. package/dist/remediate/phases/close.js.map +1 -1
  221. package/dist/remediate/phases/grounding.d.ts +12 -4
  222. package/dist/remediate/phases/grounding.d.ts.map +1 -1
  223. package/dist/remediate/phases/grounding.js +23 -60
  224. package/dist/remediate/phases/grounding.js.map +1 -1
  225. package/dist/remediate/state/types.d.ts +17 -6
  226. package/dist/remediate/state/types.d.ts.map +1 -1
  227. package/dist/remediate/state/types.js +3 -1
  228. package/dist/remediate/state/types.js.map +1 -1
  229. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  230. package/dist/remediate/steps/contractPipeline.js +10 -4
  231. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  232. package/dist/remediate/steps/contractPipelinePrompts.d.ts +10 -2
  233. package/dist/remediate/steps/contractPipelinePrompts.d.ts.map +1 -1
  234. package/dist/remediate/steps/contractPipelinePrompts.js +56 -12
  235. package/dist/remediate/steps/contractPipelinePrompts.js.map +1 -1
  236. package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
  237. package/dist/remediate/steps/dispatch/hostHandoff.js +277 -146
  238. package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
  239. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  240. package/dist/remediate/steps/nextStep.js +253 -75
  241. package/dist/remediate/steps/nextStep.js.map +1 -1
  242. package/dist/remediate/steps/prompts.d.ts +14 -0
  243. package/dist/remediate/steps/prompts.d.ts.map +1 -1
  244. package/dist/remediate/steps/prompts.js +52 -4
  245. package/dist/remediate/steps/prompts.js.map +1 -1
  246. package/dist/remediate/steps/types.d.ts +1 -1
  247. package/dist/remediate/steps/types.d.ts.map +1 -1
  248. package/dist/remediate/steps/types.js.map +1 -1
  249. package/dist/remediate/validation/contractPipelineGates.d.ts +0 -34
  250. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  251. package/dist/remediate/validation/contractPipelineGates.js +181 -143
  252. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  253. package/dist/shared/agentReflections.d.ts +44 -3
  254. package/dist/shared/agentReflections.d.ts.map +1 -1
  255. package/dist/shared/agentReflections.js +63 -4
  256. package/dist/shared/agentReflections.js.map +1 -1
  257. package/dist/shared/analyzers/acquisitionEngine.d.ts +20 -1
  258. package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
  259. package/dist/shared/analyzers/acquisitionEngine.js +17 -3
  260. package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
  261. package/dist/shared/analyzers/candidates.d.ts.map +1 -1
  262. package/dist/shared/analyzers/candidates.js +13 -4
  263. package/dist/shared/analyzers/candidates.js.map +1 -1
  264. package/dist/shared/analyzers/types.d.ts +17 -6
  265. package/dist/shared/analyzers/types.d.ts.map +1 -1
  266. package/dist/shared/analyzers/types.js +6 -15
  267. package/dist/shared/analyzers/types.js.map +1 -1
  268. package/dist/shared/decompose/systemicChallenge.d.ts +116 -9
  269. package/dist/shared/decompose/systemicChallenge.d.ts.map +1 -1
  270. package/dist/shared/decompose/systemicChallenge.js +32 -1
  271. package/dist/shared/decompose/systemicChallenge.js.map +1 -1
  272. package/dist/shared/engine/obligationEngine.d.ts +23 -6
  273. package/dist/shared/engine/obligationEngine.d.ts.map +1 -1
  274. package/dist/shared/engine/obligationEngine.js +38 -3
  275. package/dist/shared/engine/obligationEngine.js.map +1 -1
  276. package/dist/shared/findings/dedupe.d.ts +10 -0
  277. package/dist/shared/findings/dedupe.d.ts.map +1 -1
  278. package/dist/shared/findings/dedupe.js +15 -0
  279. package/dist/shared/findings/dedupe.js.map +1 -1
  280. package/dist/shared/friction/triage.d.ts.map +1 -1
  281. package/dist/shared/friction/triage.js +5 -1
  282. package/dist/shared/friction/triage.js.map +1 -1
  283. package/dist/shared/git.d.ts +6 -0
  284. package/dist/shared/git.d.ts.map +1 -1
  285. package/dist/shared/git.js +8 -0
  286. package/dist/shared/git.js.map +1 -1
  287. package/dist/shared/graph/edgeConfidence.d.ts +12 -0
  288. package/dist/shared/graph/edgeConfidence.d.ts.map +1 -0
  289. package/dist/shared/graph/edgeConfidence.js +15 -0
  290. package/dist/shared/graph/edgeConfidence.js.map +1 -0
  291. package/dist/shared/index.d.ts +26 -9
  292. package/dist/shared/index.d.ts.map +1 -1
  293. package/dist/shared/index.js +20 -8
  294. package/dist/shared/index.js.map +1 -1
  295. package/dist/shared/loopCorePaths.d.ts.map +1 -1
  296. package/dist/shared/loopCorePaths.js +4 -0
  297. package/dist/shared/loopCorePaths.js.map +1 -1
  298. package/dist/shared/measurement/measuredOutcome.d.ts +61 -0
  299. package/dist/shared/measurement/measuredOutcome.d.ts.map +1 -0
  300. package/dist/shared/measurement/measuredOutcome.js +109 -0
  301. package/dist/shared/measurement/measuredOutcome.js.map +1 -0
  302. package/dist/shared/reporting/findingDisplay.d.ts +14 -2
  303. package/dist/shared/reporting/findingDisplay.d.ts.map +1 -1
  304. package/dist/shared/reporting/findingDisplay.js +29 -2
  305. package/dist/shared/reporting/findingDisplay.js.map +1 -1
  306. package/dist/shared/reporting/lensCoverage.d.ts +70 -0
  307. package/dist/shared/reporting/lensCoverage.d.ts.map +1 -0
  308. package/dist/shared/reporting/lensCoverage.js +108 -0
  309. package/dist/shared/reporting/lensCoverage.js.map +1 -0
  310. package/dist/shared/submission/hostResultOutcomes.d.ts +42 -0
  311. package/dist/shared/submission/hostResultOutcomes.d.ts.map +1 -0
  312. package/dist/shared/submission/hostResultOutcomes.js +129 -0
  313. package/dist/shared/submission/hostResultOutcomes.js.map +1 -0
  314. package/dist/shared/submission/ingestionChecks.d.ts +146 -0
  315. package/dist/shared/submission/ingestionChecks.d.ts.map +1 -0
  316. package/dist/shared/submission/ingestionChecks.js +157 -0
  317. package/dist/shared/submission/ingestionChecks.js.map +1 -0
  318. package/dist/shared/submission/submissionClassifier.d.ts +8 -0
  319. package/dist/shared/submission/submissionClassifier.d.ts.map +1 -1
  320. package/dist/shared/submission/submissionClassifier.js.map +1 -1
  321. package/dist/shared/submission/submissionLedger.d.ts +24 -1
  322. package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
  323. package/dist/shared/submission/submissionLedger.js +61 -0
  324. package/dist/shared/submission/submissionLedger.js.map +1 -1
  325. package/dist/shared/submission/submissionScan.d.ts +2 -0
  326. package/dist/shared/submission/submissionScan.d.ts.map +1 -1
  327. package/dist/shared/submission/submissionScan.js +4 -0
  328. package/dist/shared/submission/submissionScan.js.map +1 -1
  329. package/dist/shared/tooling/projectFacts.d.ts +71 -0
  330. package/dist/shared/tooling/projectFacts.d.ts.map +1 -0
  331. package/dist/shared/tooling/projectFacts.js +153 -0
  332. package/dist/shared/tooling/projectFacts.js.map +1 -0
  333. package/dist/shared/tooling/projectTestAdmission.d.ts +5 -15
  334. package/dist/shared/tooling/projectTestAdmission.d.ts.map +1 -1
  335. package/dist/shared/tooling/projectTestAdmission.js +14 -5
  336. package/dist/shared/tooling/projectTestAdmission.js.map +1 -1
  337. package/dist/shared/types/charterPacket.d.ts +156 -0
  338. package/dist/shared/types/charterPacket.d.ts.map +1 -0
  339. package/dist/shared/types/charterPacket.js +9 -0
  340. package/dist/shared/types/charterPacket.js.map +1 -0
  341. package/dist/shared/types/closingActions.d.ts +16 -0
  342. package/dist/shared/types/closingActions.d.ts.map +1 -0
  343. package/dist/shared/types/closingActions.js +25 -0
  344. package/dist/shared/types/closingActions.js.map +1 -0
  345. package/dist/shared/types/finding.d.ts +275 -40
  346. package/dist/shared/types/finding.d.ts.map +1 -1
  347. package/dist/shared/types/finding.js +87 -0
  348. package/dist/shared/types/finding.js.map +1 -1
  349. package/dist/shared/types/intentCheckpoint.d.ts +50 -0
  350. package/dist/shared/types/intentCheckpoint.d.ts.map +1 -1
  351. package/dist/shared/types/intentCheckpoint.js +31 -0
  352. package/dist/shared/types/intentCheckpoint.js.map +1 -1
  353. package/dist/shared/validation/citationGrounding.d.ts +115 -0
  354. package/dist/shared/validation/citationGrounding.d.ts.map +1 -0
  355. package/dist/shared/validation/citationGrounding.js +347 -0
  356. package/dist/shared/validation/citationGrounding.js.map +1 -0
  357. package/dist/shared/validation/findingsReport.d.ts.map +1 -1
  358. package/dist/shared/validation/findingsReport.js +62 -0
  359. package/dist/shared/validation/findingsReport.js.map +1 -1
  360. package/docs/audit-pkg/contracts.md +34 -12
  361. package/docs/audit-pkg/operator-guide.md +10 -7
  362. package/package.json +3 -2
  363. package/schemas/audit-code-v1alpha1.schema.json +2 -1
  364. package/skills/audit-code/audit-code.prompt.md +5 -3
  365. package/dist/remediate/state/closingActions.d.ts +0 -3
  366. package/dist/remediate/state/closingActions.d.ts.map +0 -1
  367. package/dist/remediate/state/closingActions.js +0 -10
  368. package/dist/remediate/state/closingActions.js.map +0 -1
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Citation grounding — ONE core, two draws.
3
+ *
4
+ * A citation is `path`, `path:line`, or `path:start-end`. This module is the
5
+ * single authority that parses one, resolves its path against the repository,
6
+ * checks its line range against the file's REAL length, optionally re-verifies a
7
+ * quoted span, and — when the caller can say what evidence was actually handed to
8
+ * the author — checks that the cited lines lie inside evidence that was delivered.
9
+ *
10
+ * Two draws consume it:
11
+ * - the REMEDIATE draw asks the existential question ("does this evidence
12
+ * string cite at least one real, in-range location?") through
13
+ * `evidenceCitesRealPath`, a thin wrapper in `src/remediate/phases/grounding.ts`;
14
+ * - the AUDIT draw asks the per-citation question over a charter register's
15
+ * `provenance[].ref` / `.quote` and records each verdict.
16
+ *
17
+ * **The core is SYNCHRONOUS**, over an injected {@link SyncSourceReader}. That is
18
+ * a deliberate constraint, not an oversight: the remediate draw's callers
19
+ * (`evidenceCitesRealPath`, `groundEvidence`) are synchronous predicates called
20
+ * inside `.some()` over every finding's evidence, and making them async would
21
+ * cascade through the whole grounding pass for no gain — the reads are small,
22
+ * memoized per pass, and already synchronous today.
23
+ *
24
+ * **It REJECTS, it never REPAIRS.** A wrong line number is reported unchanged;
25
+ * there is no nearest-enclosing-declaration resolution. That pass was tried and
26
+ * rejected repo-wide on 2026-07-28 (see `docs/backlog/durable-traps.md`, "Cite a
27
+ * SYMBOL, never a bare line number"): it swapped an honest stale number for a
28
+ * confident wrong one. The verdict enum has no repair state, so the exclusion is
29
+ * by construction rather than by intent.
30
+ */
31
+ import { existsSync, readFileSync, statSync } from "node:fs";
32
+ import { isAbsolute, join } from "node:path";
33
+ import { compareCodeUnits } from "../compareCodeUnits.js";
34
+ import { isBareBasename, quoteMatches, resolveBasenameToTrackedPath, } from "./findingGrounding.js";
35
+ const defaultSyncSourceReader = (absolutePath) => readFileSync(absolutePath, "utf8");
36
+ /**
37
+ * A {@link SyncSourceReader} memoized by absolute path, for ONE checking pass: a
38
+ * batch of citations into the same file reads that file once. Failures are cached
39
+ * too, so an unreadable path is not retried per citation.
40
+ *
41
+ * Scope it to a single pass and discard it — a reader that outlived the pass
42
+ * would serve stale bytes after a later edit, which is exactly what re-checking
43
+ * a citation against disk exists to catch.
44
+ */
45
+ export function createMemoizedSyncSourceReader() {
46
+ const hits = new Map();
47
+ const misses = new Map();
48
+ return (absolutePath) => {
49
+ const cached = hits.get(absolutePath);
50
+ if (cached !== undefined)
51
+ return cached;
52
+ if (misses.has(absolutePath))
53
+ throw misses.get(absolutePath);
54
+ try {
55
+ const text = defaultSyncSourceReader(absolutePath);
56
+ hits.set(absolutePath, text);
57
+ return text;
58
+ }
59
+ catch (error) {
60
+ misses.set(absolutePath, error);
61
+ throw error;
62
+ }
63
+ };
64
+ }
65
+ /**
66
+ * The number of TRUE lines in a source text.
67
+ *
68
+ * Two corrections over a bare `split("\n").length`, both of which produced a
69
+ * silent off-by-one that let `path:<n+1>` ground into an n-line file:
70
+ * - a single TRAILING empty segment is dropped — a file that ends with a line
71
+ * terminator has n lines, not n+1;
72
+ * - carriage returns are stripped first, so a CRLF checkout counts the same as
73
+ * an LF one (`OS/platform-agnostic`: the same file must not have two lengths
74
+ * depending on who checked it out).
75
+ * Empty content is zero lines.
76
+ */
77
+ export function countSourceLines(content) {
78
+ if (content.length === 0)
79
+ return 0;
80
+ const segments = content.replace(/\r/g, "").split("\n");
81
+ if (segments.length > 1 && segments[segments.length - 1] === "") {
82
+ segments.pop();
83
+ }
84
+ return segments.length;
85
+ }
86
+ /** The `:<start>[-<end>]` suffix, anchored at the end of a reference. */
87
+ const LINE_SUFFIX_RE = /:(\d+)(?:-(\d+))?$/;
88
+ /**
89
+ * Parse `path`, `path:12`, or `path:12-19` into its parts. Returns `undefined`
90
+ * when the reference carries no path at all (empty, or a bare line suffix).
91
+ * The path half is taken verbatim: resolving it is a separate step, so a
92
+ * component id or a checkpoint field parses here and fails to resolve later,
93
+ * which is the honest split.
94
+ */
95
+ export function parseCitationRef(ref) {
96
+ const trimmed = ref.trim();
97
+ if (trimmed.length === 0)
98
+ return undefined;
99
+ const suffix = LINE_SUFFIX_RE.exec(trimmed);
100
+ if (!suffix)
101
+ return { raw: ref, path: trimmed };
102
+ const path = trimmed.slice(0, suffix.index);
103
+ if (path.length === 0)
104
+ return undefined;
105
+ const start = Number(suffix[1]);
106
+ const end = suffix[2] === undefined ? undefined : Number(suffix[2]);
107
+ return end === undefined
108
+ ? { raw: ref, path, start_line: start }
109
+ : { raw: ref, path, start_line: start, end_line: end };
110
+ }
111
+ /**
112
+ * Candidate `path[:start[-end]]` citations inside a prose string. A token must
113
+ * look like a path (contains a separator or a dot-extension) to be considered;
114
+ * bare prose words never match. THE one home of the embedded-citation grammar —
115
+ * the range half is what a `(?::(\d+))?` grammar silently dropped, validating a
116
+ * citation's start while its end overshot the file by 50x.
117
+ */
118
+ const EVIDENCE_PATH_TOKEN_RE = /(?<path>[A-Za-z0-9_@.-]*[/\\][A-Za-z0-9_@./\\-]+|[A-Za-z0-9_@-]+\.[A-Za-z0-9_-]+)(?::(?<start>\d+)(?:-(?<end>\d+))?)?/g;
119
+ /** Every citation reference embedded in a prose string, in source order. */
120
+ export function extractCitationRefs(text) {
121
+ const refs = [];
122
+ for (const match of text.matchAll(EVIDENCE_PATH_TOKEN_RE)) {
123
+ const path = match.groups?.path;
124
+ if (!path)
125
+ continue;
126
+ const start = match.groups?.start;
127
+ const end = match.groups?.end;
128
+ refs.push(start === undefined
129
+ ? path
130
+ : end === undefined
131
+ ? `${path}:${start}`
132
+ : `${path}:${start}-${end}`);
133
+ }
134
+ return refs;
135
+ }
136
+ /**
137
+ * Strip the emitted `NNN| ` line prefix from every line of a quoted span,
138
+ * POSITIONALLY — by the fixed character width the emitter recorded, never by a
139
+ * regex. A regex (`^\s*\d+\| `) collides with the markdown table rows the doc
140
+ * evidence class delivers verbatim (`| 12 | value |`), silently mutilating a
141
+ * quoted cell before it is matched. A line shorter than the prefix carries no
142
+ * prefix and is left alone.
143
+ */
144
+ export function stripEmittedLinePrefix(text, prefixWidth) {
145
+ if (prefixWidth <= 0)
146
+ return text;
147
+ return text
148
+ .split("\n")
149
+ .map((line) => (line.length >= prefixWidth ? line.slice(prefixWidth) : line))
150
+ .join("\n");
151
+ }
152
+ /**
153
+ * Resolve a cited path to an existing absolute path plus the repo-relative form
154
+ * it resolved through. A full/dotfile path resolves by the `root` join; a bare
155
+ * basename that is not a top-level file resolves against the tracked-path corpus
156
+ * (INV-B3-3) so a nested `advance.ts` is not false-negatived.
157
+ */
158
+ function resolveCitedPath(root, citedPath, corpus) {
159
+ const trimmed = citedPath.trim();
160
+ const direct = isAbsolute(trimmed) ? trimmed : join(root, trimmed);
161
+ if (existsSync(direct)) {
162
+ return { absolutePath: direct, repoRelativePath: trimmed.replace(/\\/g, "/") };
163
+ }
164
+ if (isBareBasename(trimmed)) {
165
+ const tracked = resolveBasenameToTrackedPath(trimmed, corpus);
166
+ if (tracked) {
167
+ const resolved = isAbsolute(tracked) ? tracked : join(root, tracked);
168
+ if (existsSync(resolved)) {
169
+ return { absolutePath: resolved, repoRelativePath: tracked };
170
+ }
171
+ }
172
+ }
173
+ return undefined;
174
+ }
175
+ function runContains(runs, start, end) {
176
+ return runs.some((run) => start >= run.start && end <= run.end);
177
+ }
178
+ /**
179
+ * Check every citation and return a verdict for each. Deterministic and
180
+ * order-stable: the result array is sorted by `(owner_id, ref)`, so a re-run over
181
+ * the same inputs produces a byte-identical array and cannot churn the content
182
+ * hash of an artifact that carries it.
183
+ */
184
+ export function checkCitations(params) {
185
+ const readSource = params.readSource ?? createMemoizedSyncSourceReader();
186
+ const deliveredByPath = new Map();
187
+ for (const excerpt of params.delivered ?? []) {
188
+ const existing = deliveredByPath.get(excerpt.source_path);
189
+ if (existing)
190
+ existing.push(excerpt);
191
+ else
192
+ deliveredByPath.set(excerpt.source_path, [excerpt]);
193
+ }
194
+ const deliveredChecked = params.delivered !== undefined;
195
+ const checks = [];
196
+ let checkedCount = 0;
197
+ for (const citation of params.citations) {
198
+ const parsed = parseCitationRef(citation.ref);
199
+ if (!parsed) {
200
+ checks.push({
201
+ owner_id: citation.owner_id,
202
+ ref: citation.ref,
203
+ verdict: "unparseable",
204
+ detail: "no path could be read from the reference",
205
+ });
206
+ continue;
207
+ }
208
+ checkedCount += 1;
209
+ const resolved = resolveCitedPath(params.root, parsed.path, params.corpus);
210
+ if (!resolved) {
211
+ checks.push({
212
+ owner_id: citation.owner_id,
213
+ ref: citation.ref,
214
+ verdict: "unknown_path",
215
+ detail: `'${parsed.path}' does not resolve in the repository`,
216
+ });
217
+ continue;
218
+ }
219
+ const excerpts = deliveredByPath.get(resolved.repoRelativePath) ?? [];
220
+ let fileLines;
221
+ if (parsed.start_line !== undefined) {
222
+ const end = parsed.end_line ?? parsed.start_line;
223
+ if (parsed.start_line > end) {
224
+ checks.push({
225
+ owner_id: citation.owner_id,
226
+ ref: citation.ref,
227
+ verdict: "inverted_range",
228
+ resolved_path: resolved.repoRelativePath,
229
+ detail: `start line ${parsed.start_line} is after end line ${end}`,
230
+ });
231
+ continue;
232
+ }
233
+ let isFile = false;
234
+ try {
235
+ isFile = statSync(resolved.absolutePath).isFile();
236
+ }
237
+ catch {
238
+ isFile = false;
239
+ }
240
+ if (!isFile) {
241
+ checks.push({
242
+ owner_id: citation.owner_id,
243
+ ref: citation.ref,
244
+ verdict: "unknown_path",
245
+ resolved_path: resolved.repoRelativePath,
246
+ detail: "cited lines in something that is not a readable file",
247
+ });
248
+ continue;
249
+ }
250
+ let content;
251
+ try {
252
+ content = readSource(resolved.absolutePath);
253
+ }
254
+ catch {
255
+ checks.push({
256
+ owner_id: citation.owner_id,
257
+ ref: citation.ref,
258
+ verdict: "unknown_path",
259
+ resolved_path: resolved.repoRelativePath,
260
+ detail: "file could not be read on disk",
261
+ });
262
+ continue;
263
+ }
264
+ fileLines = countSourceLines(content);
265
+ if (parsed.start_line < 1 || end > fileLines) {
266
+ checks.push({
267
+ owner_id: citation.owner_id,
268
+ ref: citation.ref,
269
+ verdict: "line_out_of_range",
270
+ resolved_path: resolved.repoRelativePath,
271
+ file_lines: fileLines,
272
+ detail: `cited lines ${parsed.start_line}-${end} in a ${fileLines}-line file`,
273
+ });
274
+ continue;
275
+ }
276
+ if (deliveredChecked) {
277
+ const inside = excerpts.some((excerpt) => runContains(excerpt.line_runs, parsed.start_line, end));
278
+ if (!inside) {
279
+ checks.push({
280
+ owner_id: citation.owner_id,
281
+ ref: citation.ref,
282
+ verdict: "outside_delivered_evidence",
283
+ resolved_path: resolved.repoRelativePath,
284
+ file_lines: fileLines,
285
+ detail: excerpts.length === 0
286
+ ? "no excerpt of this file was delivered to the author"
287
+ : `lines ${parsed.start_line}-${end} lie in no delivered run of this file`,
288
+ });
289
+ continue;
290
+ }
291
+ }
292
+ }
293
+ // A PATH-ONLY citation makes no line claim, so it is not checked against the
294
+ // delivered runs. Some channels legitimately name a file they delivered no
295
+ // excerpt of — the structural packet lists every member in its file tree
296
+ // while a member with no top-level declarations yields no excerpt — and
297
+ // refusing those would be a false red, not a caught defect.
298
+ const quote = citation.quote?.trim() ?? "";
299
+ if (quote.length > 0) {
300
+ let content;
301
+ try {
302
+ content = readSource(resolved.absolutePath);
303
+ }
304
+ catch {
305
+ checks.push({
306
+ owner_id: citation.owner_id,
307
+ ref: citation.ref,
308
+ verdict: "unknown_path",
309
+ resolved_path: resolved.repoRelativePath,
310
+ detail: "file could not be read on disk",
311
+ });
312
+ continue;
313
+ }
314
+ // The RAW quote first — a correctly de-prefixed quote must never be
315
+ // mutilated by a strip it did not need. Only when that fails is the
316
+ // positional strip tried, using the width the emitter recorded.
317
+ const widths = new Set(excerpts.map((excerpt) => excerpt.prefix_width));
318
+ const matched = quoteMatches(content, citation.quote) ||
319
+ [...widths].some((width) => quoteMatches(content, stripEmittedLinePrefix(citation.quote, width)));
320
+ if (!matched) {
321
+ checks.push({
322
+ owner_id: citation.owner_id,
323
+ ref: citation.ref,
324
+ verdict: "quote_not_found",
325
+ resolved_path: resolved.repoRelativePath,
326
+ file_lines: fileLines,
327
+ detail: "the quoted span does not appear in the cited file",
328
+ });
329
+ continue;
330
+ }
331
+ }
332
+ checks.push({
333
+ owner_id: citation.owner_id,
334
+ ref: citation.ref,
335
+ verdict: "ok",
336
+ resolved_path: resolved.repoRelativePath,
337
+ ...(fileLines === undefined ? {} : { file_lines: fileLines }),
338
+ });
339
+ }
340
+ checks.sort((a, b) => compareCodeUnits(a.owner_id, b.owner_id) || compareCodeUnits(a.ref, b.ref));
341
+ return {
342
+ checked_count: checkedCount,
343
+ checks,
344
+ delivered_evidence_checked: deliveredChecked,
345
+ };
346
+ }
347
+ //# sourceMappingURL=citationGrounding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citationGrounding.js","sourceRoot":"","sources":["../../../src/shared/validation/citationGrounding.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"findingsReport.d.ts","sourceRoot":"","sources":["../../../src/shared/validation/findingsReport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAI9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,eAAO,MAAM,+BAA+B,EAC1C,qCAA8C,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAAC;IAC3C,MAAM,EAAE,UAAU,GAAG,sBAAsB,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE,qBAAqB,CAAC;IACtC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CAC1D;AAwWD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,IAAI,SAAK,GACR,eAAe,EAAE,CAEnB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAUlF;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,SAAS,OAAO,EAAE,GACnC,mBAAmB,CAoKrB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,mBAAmB,CAE9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMnE"}
1
+ {"version":3,"file":"findingsReport.d.ts","sourceRoot":"","sources":["../../../src/shared/validation/findingsReport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAQ9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,eAAO,MAAM,+BAA+B,EAC1C,qCAA8C,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAAC;IAC3C,MAAM,EAAE,UAAU,GAAG,sBAAsB,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE,qBAAqB,CAAC;IACtC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CAC1D;AAmaD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,IAAI,SAAK,GACR,eAAe,EAAE,CAEnB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAUlF;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,SAAS,OAAO,EAAE,GACnC,mBAAmB,CA6LrB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,mBAAmB,CAE9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMnE"}
@@ -5,6 +5,7 @@
5
5
  import { AuditFindingsReportSchema, } from "../types/finding.js";
6
6
  import { workBlockSeamRationale } from "../decompose/workBlockSeams.js";
7
7
  import { compareCodeUnits } from "../compareCodeUnits.js";
8
+ import { lensCoverageEntryContradictsCount, reprojectLensCoverage, } from "../reporting/lensCoverage.js";
8
9
  import { severityRank } from "../types/lens.js";
9
10
  import { isRecord, pushValidationIssue } from "./basic.js";
10
11
  export const AUDIT_FINDINGS_CONTRACT_VERSION = "audit-tools/audit-findings/v1alpha1";
@@ -22,6 +23,46 @@ function validateBreakdown(issues, path, label, actual, expected) {
22
23
  pushCountMismatch(issues, childPath(path, key), `${label}.${key}`, actual[key] ?? 0, expected.get(key) ?? 0);
23
24
  }
24
25
  }
26
+ /**
27
+ * `lens_coverage`, checked for INTERNAL CONSISTENCY and nothing else.
28
+ *
29
+ * This function receives the report and nothing else — no intent checkpoint —
30
+ * so it cannot establish whether the run carried a selection, and a gate that
31
+ * cannot ESTABLISH its verdict abstains rather than approximating one. Presence
32
+ * is guaranteed at the synthesis boundary, which does hold the checkpoint.
33
+ *
34
+ * What it CAN establish from the report alone, and therefore refuses on:
35
+ * • every `lens_breakdown` key appears in the coverage map (otherwise the map
36
+ * silently omits a lens the report itself counts);
37
+ * • each entry's `findings_count` equals the recount from `report.findings`;
38
+ * • no entry's `outcome` contradicts its own count.
39
+ *
40
+ * It ABSTAINS on `clean` versus `not_run`. Which of the two a zero-count lens
41
+ * deserves depends on whether a lens-open channel was ingested, and that is not
42
+ * in the report — so picking one here would refuse legitimate output rather than
43
+ * catch a defect. That distinction is the synthesis boundary's to make, and this
44
+ * one refuses only what it can establish.
45
+ */
46
+ function validateLensCoverage(issues, path, report, lensBreakdown) {
47
+ const coverage = report.summary.lens_coverage;
48
+ if (coverage === undefined)
49
+ return;
50
+ const coveragePath = childPath(path, "summary.lens_coverage");
51
+ const seen = new Set();
52
+ for (const entry of coverage) {
53
+ seen.add(entry.lens);
54
+ const expected = lensBreakdown.get(entry.lens) ?? 0;
55
+ pushCountMismatch(issues, childPath(coveragePath, `${entry.lens}.findings_count`), `summary.lens_coverage.${entry.lens}.findings_count`, entry.findings_count, expected);
56
+ if (lensCoverageEntryContradictsCount(entry)) {
57
+ pushValidationIssue(issues, childPath(coveragePath, `${entry.lens}.outcome`), `summary.lens_coverage.${entry.lens}.outcome "${entry.outcome}" contradicts its own ${String(entry.findings_count)} finding(s): a lens with findings is "findings", and a lens with none is "clean" or "not_run".`);
58
+ }
59
+ }
60
+ for (const lens of [...lensBreakdown.keys()].sort()) {
61
+ if (seen.has(lens))
62
+ continue;
63
+ pushValidationIssue(issues, childPath(coveragePath, lens), `summary.lens_coverage omits "${lens}", which summary.lens_breakdown counts — a coverage map must account for every lens the report itself reports.`);
64
+ }
65
+ }
25
66
  function buildProjection(report, path, issues) {
26
67
  const approvedById = new Map();
27
68
  const quarantinedById = new Map();
@@ -179,6 +220,7 @@ function buildProjection(report, path, issues) {
179
220
  if (report.summary.lens_breakdown !== undefined) {
180
221
  validateBreakdown(issues, childPath(path, "summary.lens_breakdown"), "summary.lens_breakdown", report.summary.lens_breakdown, lensBreakdown);
181
222
  }
223
+ validateLensCoverage(issues, path, report, lensBreakdown);
182
224
  const dispositionById = new Map();
183
225
  for (const [findingId] of approvedById) {
184
226
  dispositionById.set(findingId, {
@@ -371,6 +413,15 @@ export function projectAuditFindingsReportSubset(value, selectedFindings) {
371
413
  : {
372
414
  lens_breakdown: projectedBreakdown(report.summary.lens_breakdown, findings.map((finding) => finding.lens)),
373
415
  }),
416
+ // RE-DERIVED over the surviving findings, never copied from the parent by
417
+ // the `...report.summary` spread above. The projection validates itself at
418
+ // the write boundary, so a carried-through map would contradict the
419
+ // re-derived `lens_breakdown` beside it and throw — on a subset that drops
420
+ // every finding of one lens, which is exactly what the remediate intake's
421
+ // approved-subset request produces.
422
+ ...(report.summary.lens_coverage === undefined
423
+ ? {}
424
+ : { lens_coverage: reprojectLensCoverage(report.summary.lens_coverage, findings) }),
374
425
  ...(report.summary.grounding_status_breakdown === undefined
375
426
  ? {}
376
427
  : {
@@ -378,6 +429,17 @@ export function projectAuditFindingsReportSubset(value, selectedFindings) {
378
429
  ? []
379
430
  : [finding.grounding.status])),
380
431
  }),
432
+ // Same conditional-on-presence shape as grounding: re-count over the
433
+ // PROJECTED set, because an approved subset that reported the whole run's
434
+ // counts would overstate itself. Counted over the admitted findings only —
435
+ // a quarantined finding is not part of what the subset claims.
436
+ ...(report.summary.verification_status_breakdown === undefined
437
+ ? {}
438
+ : {
439
+ verification_status_breakdown: projectedBreakdown(report.summary.verification_status_breakdown, findings.flatMap((finding) => finding.verification_status === undefined
440
+ ? []
441
+ : [finding.verification_status])),
442
+ }),
381
443
  },
382
444
  };
383
445
  // A projection is a first-class canonical report, not a permissive internal
@@ -1 +1 @@
1
- {"version":3,"file":"findingsReport.js","sourceRoot":"","sources":["../../../src/shared/validation/findingsReport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findingsReport.js","sourceRoot":"","sources":["../../../src/shared/validation/findingsReport.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ The JSON contract is authoritative; Markdown is its render.
18
18
 
19
19
  ## Step artifacts
20
20
 
21
- `audit-code next-step` advances one bounded transition and writes:
21
+ `audit-code next-step` advances one bounded, fold-aware drain of the deterministic frontier and writes:
22
22
 
23
23
  ```text
24
24
  <artifacts_dir>/steps/current-step.json
@@ -45,18 +45,40 @@ A companion `audit-host-result-map/v1alpha1` binds each work-item id, prompt
45
45
  digest, and result path. No backend, model, routing, quota, transport, launch
46
46
  command, or worker identity is part of either contract.
47
47
 
48
- The host writes `audit-host-result/v1alpha1` records. Ingestion requires exact
49
- top-level fields and verifies:
50
-
51
- - run id, work-item id, prompt digest, and result path against tool-owned
52
- bindings
53
- - assigned file coverage only, with current total-line counts
54
- - finding and lens consistency through the normal `AuditResult` schema
55
- - repository containment for every artifact path
56
- - append-time idempotency through the accepted-results ledger
57
-
48
+ The host writes `audit-host-result/v1alpha1` records. Ingestion verifies every
49
+ result before it accepts it; the check set below is the one list, rendered from
50
+ the registry both the audit and the remediation ingest cite on every refusal.
58
51
  Malformed, fabricated, stale, or replayed-with-different-bytes records do not
59
- advance the run. A byte-identical accepted replay is a no-op.
52
+ advance the run.
53
+
54
+ <!-- BEGIN GENERATED INGESTION CHECKS — scripts/shared/generate-ingestion-checks.mjs — DO NOT EDIT BY HAND -->
55
+
56
+ > Rendered from `src/shared/submission/ingestionChecks.ts` — the registry both host-handoff twins cite on every
57
+ > refusal they emit. Add a check there and this table follows; the drift test refuses a
58
+ > row nothing cites.
59
+
60
+ | Check | What must hold for the result to be accepted | Draws |
61
+ |---|---|---|
62
+ | `result_path` | The submission is read only from the tool-derived bound path (`<run dir>/<sha256(work item id)>.json`) inside the run's artifacts directory; a result written anywhere else is never consulted. | `audit`, `remediate` |
63
+ | `result_json` | The bytes at the bound path parse as JSON. | `audit`, `remediate` |
64
+ | `result_envelope` | The top-level key set is exactly the draw's result contract and `contract_version` is the version the workload was issued under. | `audit`, `remediate` |
65
+ | `identity_binding` | `run_id` is the run that emitted the workload, `work_item_id` is the work item the result was read for, and `prompt_sha256` is the digest of the prompt that work item was issued with — an answer to another run, item or a stale prompt is refused. | `audit`, `remediate` |
66
+ | `workload_binding` | The persisted workload, result map and task bindings still derive from this run (versions, bound paths, prompt digests, scopes); a result cannot be accepted against a binding the tool cannot re-derive. | `audit`, `remediate` |
67
+ | `file_coverage` | `file_coverage` names exactly the assigned files, each fully reviewed, with `total_lines` equal to the line count bound at dispatch. | `audit` |
68
+ | `findings_contract` | Every finding satisfies the audit finding contract (lens, ids, evidence shape). | `audit` |
69
+ | `result_schema` | The bound result converts to the persisted `AuditResult` schema (`schemas/audit_result.schema.json`). | `audit` |
70
+ | `result_validation` | The per-result content rules hold before acceptance (evidence present, line spans inside the file, line counts matching disk); warnings ride an advisory channel and never refuse. | `audit` |
71
+ | `outcome_shape` | A decision result's `outcome` carries exactly the fields its status requires (`resolved_no_change` evidence, `blocked` failure reason, `needs_clarification` question). | `remediate` |
72
+ | `write_scope` | `changed_files` is non-empty, sorted, unique and normalized, lies within the prompt-bound `allowed_files`, and equals the files the landed commit actually changed. | `remediate` |
73
+ | `commit_evidence` | `commit_evidence` binds the workload baseline to a distinct landed commit; both exist, the baseline is an ancestor of the landed commit (waived only under a genuinely orphaned baseline in recovery), and the landed commit is reachable from HEAD. | `remediate` |
74
+ | `test_evidence` | `test_evidence` carries exactly one passed entry per required test echoing the bound command, and the tool's own mechanical rerun of those tests passes. | `remediate` |
75
+ | `obligation_evidence` | `obligation_evidence` cites non-empty evidence for every prompt-bound obligation, none twice, and none the work item does not bind. | `remediate` |
76
+ | `worktree_evidence` | `worktree_evidence` binds the workload baseline and the same changed-file list, and no landed file overlaps dirt that pre-dated the run. | `remediate` |
77
+ | `landing_attestation` | `acceptance` and `merge` both attest a completed landing. | `remediate` |
78
+ | `no_change_corroboration` | A `resolved_no_change` claim is corroborated against git and the persisted write-scope binding; attestation-only acceptance is refused. | `remediate` |
79
+ | `duplicate_result` | `result_id` has not already been accepted this run: a byte-identical replay is a no-op, a different body under an accepted id is refused. | `audit`, `remediate` |
80
+
81
+ <!-- END GENERATED INGESTION CHECKS -->
60
82
 
61
83
  Per-result audit-results validation runs at acceptance, before the accepted
62
84
  pair is written: a failing result is classified-rejected (warnings ride a