audit-tools 0.52.3 → 0.52.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/README.md +31 -1
  2. package/dist/audit/cli/args.d.ts.map +1 -1
  3. package/dist/audit/cli/args.js +6 -2
  4. package/dist/audit/cli/args.js.map +1 -1
  5. package/dist/audit/cli/argumentContract.d.ts +11 -0
  6. package/dist/audit/cli/argumentContract.d.ts.map +1 -0
  7. package/dist/audit/cli/argumentContract.js +45 -0
  8. package/dist/audit/cli/argumentContract.js.map +1 -0
  9. package/dist/audit/cli/auditReviewBindings.d.ts +49 -0
  10. package/dist/audit/cli/auditReviewBindings.d.ts.map +1 -0
  11. package/dist/audit/cli/auditReviewBindings.js +61 -0
  12. package/dist/audit/cli/auditReviewBindings.js.map +1 -0
  13. package/dist/audit/cli/auditStep.d.ts +1 -27
  14. package/dist/audit/cli/auditStep.d.ts.map +1 -1
  15. package/dist/audit/cli/auditStep.js +7 -32
  16. package/dist/audit/cli/auditStep.js.map +1 -1
  17. package/dist/audit/cli/charterComparisonPrompt.d.ts +2 -0
  18. package/dist/audit/cli/charterComparisonPrompt.d.ts.map +1 -1
  19. package/dist/audit/cli/charterComparisonPrompt.js +9 -0
  20. package/dist/audit/cli/charterComparisonPrompt.js.map +1 -1
  21. package/dist/audit/cli/charterExtractionPrompt.d.ts.map +1 -1
  22. package/dist/audit/cli/charterExtractionPrompt.js +17 -3
  23. package/dist/audit/cli/charterExtractionPrompt.js.map +1 -1
  24. package/dist/audit/cli/conceptualDispatch.d.ts +1 -1
  25. package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
  26. package/dist/audit/cli/conceptualDispatch.js +15 -2
  27. package/dist/audit/cli/conceptualDispatch.js.map +1 -1
  28. package/dist/audit/cli/confirmIntentStep.d.ts.map +1 -1
  29. package/dist/audit/cli/confirmIntentStep.js +10 -17
  30. package/dist/audit/cli/confirmIntentStep.js.map +1 -1
  31. package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
  32. package/dist/audit/cli/dispatch/hostHandoff.js +231 -229
  33. package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
  34. package/dist/audit/cli/explainTaskCommand.d.ts.map +1 -1
  35. package/dist/audit/cli/explainTaskCommand.js +3 -1
  36. package/dist/audit/cli/explainTaskCommand.js.map +1 -1
  37. package/dist/audit/cli/fanoutLanes.d.ts +10 -14
  38. package/dist/audit/cli/fanoutLanes.d.ts.map +1 -1
  39. package/dist/audit/cli/fanoutLanes.js +50 -16
  40. package/dist/audit/cli/fanoutLanes.js.map +1 -1
  41. package/dist/audit/cli/functionalPreflight.d.ts +96 -0
  42. package/dist/audit/cli/functionalPreflight.d.ts.map +1 -0
  43. package/dist/audit/cli/functionalPreflight.js +103 -0
  44. package/dist/audit/cli/functionalPreflight.js.map +1 -0
  45. package/dist/audit/cli/laneSubmissions.d.ts +5 -1
  46. package/dist/audit/cli/laneSubmissions.d.ts.map +1 -1
  47. package/dist/audit/cli/laneSubmissions.js +45 -34
  48. package/dist/audit/cli/laneSubmissions.js.map +1 -1
  49. package/dist/audit/cli/nextStepCommand.d.ts +1 -9
  50. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  51. package/dist/audit/cli/nextStepCommand.js +101 -38
  52. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  53. package/dist/audit/cli/nextStepHelpers.d.ts +10 -25
  54. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  55. package/dist/audit/cli/nextStepHelpers.js +57 -67
  56. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  57. package/dist/audit/cli/prompts.d.ts.map +1 -1
  58. package/dist/audit/cli/prompts.js +9 -4
  59. package/dist/audit/cli/prompts.js.map +1 -1
  60. package/dist/audit/cli/recoverSubmissionCommand.d.ts.map +1 -1
  61. package/dist/audit/cli/recoverSubmissionCommand.js +8 -1
  62. package/dist/audit/cli/recoverSubmissionCommand.js.map +1 -1
  63. package/dist/audit/cli/reviewRun.js +1 -1
  64. package/dist/audit/cli/reviewRun.js.map +1 -1
  65. package/dist/audit/cli/reviewSubmission.d.ts +24 -0
  66. package/dist/audit/cli/reviewSubmission.d.ts.map +1 -0
  67. package/dist/audit/cli/reviewSubmission.js +97 -0
  68. package/dist/audit/cli/reviewSubmission.js.map +1 -0
  69. package/dist/audit/cli/sampleRunCommand.d.ts +3 -3
  70. package/dist/audit/cli/steps.d.ts +18 -18
  71. package/dist/audit/cli/steps.d.ts.map +1 -1
  72. package/dist/audit/cli/steps.js +1 -0
  73. package/dist/audit/cli/steps.js.map +1 -1
  74. package/dist/audit/cli/unacceptResultsCommand.d.ts.map +1 -1
  75. package/dist/audit/cli/unacceptResultsCommand.js +2 -1
  76. package/dist/audit/cli/unacceptResultsCommand.js.map +1 -1
  77. package/dist/audit/cli.d.ts +2 -1
  78. package/dist/audit/cli.d.ts.map +1 -1
  79. package/dist/audit/cli.js +27 -19
  80. package/dist/audit/cli.js.map +1 -1
  81. package/dist/audit/contracts/workerSchemas.d.ts +10 -10
  82. package/dist/audit/contracts/wrapperResponse.d.ts +34 -34
  83. package/dist/audit/extractors/commentDecomposition.d.ts +14 -0
  84. package/dist/audit/extractors/commentDecomposition.d.ts.map +1 -1
  85. package/dist/audit/extractors/commentDecomposition.js +2 -1
  86. package/dist/audit/extractors/commentDecomposition.js.map +1 -1
  87. package/dist/audit/extractors/graph.d.ts +1 -1
  88. package/dist/audit/extractors/graph.d.ts.map +1 -1
  89. package/dist/audit/extractors/graph.js +12 -7
  90. package/dist/audit/extractors/graph.js.map +1 -1
  91. package/dist/audit/extractors/graphPythonImports.d.ts +3 -0
  92. package/dist/audit/extractors/graphPythonImports.d.ts.map +1 -1
  93. package/dist/audit/extractors/graphPythonImports.js +24 -5
  94. package/dist/audit/extractors/graphPythonImports.js.map +1 -1
  95. package/dist/audit/extractors/graphRouteSources.d.ts +7 -0
  96. package/dist/audit/extractors/graphRouteSources.d.ts.map +1 -0
  97. package/dist/audit/extractors/graphRouteSources.js +208 -0
  98. package/dist/audit/extractors/graphRouteSources.js.map +1 -0
  99. package/dist/audit/extractors/graphRoutes.d.ts +1 -1
  100. package/dist/audit/extractors/graphRoutes.d.ts.map +1 -1
  101. package/dist/audit/extractors/graphRoutes.js +65 -68
  102. package/dist/audit/extractors/graphRoutes.js.map +1 -1
  103. package/dist/audit/io/artifacts.d.ts +1 -0
  104. package/dist/audit/io/artifacts.d.ts.map +1 -1
  105. package/dist/audit/io/artifacts.js +29 -10
  106. package/dist/audit/io/artifacts.js.map +1 -1
  107. package/dist/audit/io/runArtifacts.d.ts +1 -1
  108. package/dist/audit/io/runArtifacts.d.ts.map +1 -1
  109. package/dist/audit/io/runArtifacts.js +3 -0
  110. package/dist/audit/io/runArtifacts.js.map +1 -1
  111. package/dist/audit/io/toolingManifest.d.ts.map +1 -1
  112. package/dist/audit/io/toolingManifest.js +11 -32
  113. package/dist/audit/io/toolingManifest.js.map +1 -1
  114. package/dist/audit/orchestrator/acquisitionExecutor.d.ts +2 -3
  115. package/dist/audit/orchestrator/acquisitionExecutor.d.ts.map +1 -1
  116. package/dist/audit/orchestrator/acquisitionExecutor.js.map +1 -1
  117. package/dist/audit/orchestrator/advanceTypes.d.ts +1 -2
  118. package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
  119. package/dist/audit/orchestrator/autoFixExecutor.d.ts +2 -2
  120. package/dist/audit/orchestrator/autoFixExecutor.d.ts.map +1 -1
  121. package/dist/audit/orchestrator/autoFixExecutor.js +2 -2
  122. package/dist/audit/orchestrator/autoFixExecutor.js.map +1 -1
  123. package/dist/audit/orchestrator/charterFidelityPacket.d.ts +2 -0
  124. package/dist/audit/orchestrator/charterFidelityPacket.d.ts.map +1 -1
  125. package/dist/audit/orchestrator/charterFidelityPacket.js +6 -1
  126. package/dist/audit/orchestrator/charterFidelityPacket.js.map +1 -1
  127. package/dist/audit/orchestrator/charterPackets.d.ts +2 -0
  128. package/dist/audit/orchestrator/charterPackets.d.ts.map +1 -1
  129. package/dist/audit/orchestrator/charterPackets.js +6 -0
  130. package/dist/audit/orchestrator/charterPackets.js.map +1 -1
  131. package/dist/audit/orchestrator/designReviewProjection.d.ts +5 -8
  132. package/dist/audit/orchestrator/designReviewProjection.d.ts.map +1 -1
  133. package/dist/audit/orchestrator/designReviewProjection.js +7 -1
  134. package/dist/audit/orchestrator/designReviewProjection.js.map +1 -1
  135. package/dist/audit/orchestrator/designReviewPrompt.d.ts +3 -47
  136. package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
  137. package/dist/audit/orchestrator/designReviewPrompt.js +28 -135
  138. package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
  139. package/dist/audit/orchestrator/designReviewSnapshot.d.ts +24 -1
  140. package/dist/audit/orchestrator/designReviewSnapshot.d.ts.map +1 -1
  141. package/dist/audit/orchestrator/designReviewSnapshot.js +8 -2
  142. package/dist/audit/orchestrator/designReviewSnapshot.js.map +1 -1
  143. package/dist/audit/orchestrator/designReviewTask.d.ts +46 -0
  144. package/dist/audit/orchestrator/designReviewTask.d.ts.map +1 -0
  145. package/dist/audit/orchestrator/designReviewTask.js +44 -0
  146. package/dist/audit/orchestrator/designReviewTask.js.map +1 -0
  147. package/dist/audit/orchestrator/intentCheckpointGate.d.ts +1 -1
  148. package/dist/audit/orchestrator/intentCheckpointGate.d.ts.map +1 -1
  149. package/dist/audit/orchestrator/intentCheckpointGate.js +4 -2
  150. package/dist/audit/orchestrator/intentCheckpointGate.js.map +1 -1
  151. package/dist/audit/orchestrator/intentEquivalenceExecutor.d.ts +3 -0
  152. package/dist/audit/orchestrator/intentEquivalenceExecutor.d.ts.map +1 -1
  153. package/dist/audit/orchestrator/intentEquivalenceExecutor.js +2 -0
  154. package/dist/audit/orchestrator/intentEquivalenceExecutor.js.map +1 -1
  155. package/dist/audit/orchestrator/intentInterpreter.d.ts +1 -9
  156. package/dist/audit/orchestrator/intentInterpreter.d.ts.map +1 -1
  157. package/dist/audit/orchestrator/intentInterpreter.js +6 -11
  158. package/dist/audit/orchestrator/intentInterpreter.js.map +1 -1
  159. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts +2 -2
  160. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts.map +1 -1
  161. package/dist/audit/orchestrator/staleness.d.ts.map +1 -1
  162. package/dist/audit/orchestrator/staleness.js +32 -40
  163. package/dist/audit/orchestrator/staleness.js.map +1 -1
  164. package/dist/audit/orchestrator/state.d.ts.map +1 -1
  165. package/dist/audit/orchestrator/state.js +8 -14
  166. package/dist/audit/orchestrator/state.js.map +1 -1
  167. package/dist/audit/orchestrator/systemicChallengeExecutor.d.ts +19 -0
  168. package/dist/audit/orchestrator/systemicChallengeExecutor.d.ts.map +1 -1
  169. package/dist/audit/orchestrator/systemicChallengeExecutor.js +15 -1
  170. package/dist/audit/orchestrator/systemicChallengeExecutor.js.map +1 -1
  171. package/dist/audit/reporting/criticalFlowFallbackPrompt.d.ts +1 -1
  172. package/dist/audit/reporting/criticalFlowFallbackPrompt.d.ts.map +1 -1
  173. package/dist/audit/reporting/criticalFlowFallbackPrompt.js +4 -2
  174. package/dist/audit/reporting/criticalFlowFallbackPrompt.js.map +1 -1
  175. package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
  176. package/dist/audit/reporting/mergeFindings.js +43 -2
  177. package/dist/audit/reporting/mergeFindings.js.map +1 -1
  178. package/dist/audit/types/auditScope.d.ts +2 -2
  179. package/dist/audit/types/auditState.d.ts +6 -6
  180. package/dist/audit/types/conceptualAdjudication.d.ts +19 -19
  181. package/dist/audit/types/conceptualAdjudication.d.ts.map +1 -1
  182. package/dist/audit/types/conceptualAdjudication.js +3 -3
  183. package/dist/audit/types/conceptualAdjudication.js.map +1 -1
  184. package/dist/audit/types.d.ts +17 -19
  185. package/dist/audit/types.d.ts.map +1 -1
  186. package/dist/audit/types.js +19 -20
  187. package/dist/audit/types.js.map +1 -1
  188. package/dist/remediate/contractPipeline/artifactStore.d.ts +3 -1
  189. package/dist/remediate/contractPipeline/artifactStore.d.ts.map +1 -1
  190. package/dist/remediate/contractPipeline/artifactStore.js +26 -31
  191. package/dist/remediate/contractPipeline/artifactStore.js.map +1 -1
  192. package/dist/remediate/contractPipeline/changeClassification.d.ts.map +1 -1
  193. package/dist/remediate/contractPipeline/changeClassification.js +20 -8
  194. package/dist/remediate/contractPipeline/changeClassification.js.map +1 -1
  195. package/dist/remediate/contractPipeline/contractReviewBinding.d.ts +28 -0
  196. package/dist/remediate/contractPipeline/contractReviewBinding.d.ts.map +1 -0
  197. package/dist/remediate/contractPipeline/contractReviewBinding.js +75 -0
  198. package/dist/remediate/contractPipeline/contractReviewBinding.js.map +1 -0
  199. package/dist/remediate/contractPipeline/repairState.d.ts +3 -1
  200. package/dist/remediate/contractPipeline/repairState.d.ts.map +1 -1
  201. package/dist/remediate/contractPipeline/repairState.js +1 -0
  202. package/dist/remediate/contractPipeline/repairState.js.map +1 -1
  203. package/dist/remediate/contractPipeline/sketchSource.d.ts +1 -0
  204. package/dist/remediate/contractPipeline/sketchSource.d.ts.map +1 -1
  205. package/dist/remediate/contractPipeline/sketchSource.js +1 -0
  206. package/dist/remediate/contractPipeline/sketchSource.js.map +1 -1
  207. package/dist/remediate/dedup/crossLensDedup.d.ts +1 -2
  208. package/dist/remediate/dedup/crossLensDedup.d.ts.map +1 -1
  209. package/dist/remediate/dedup/crossLensDedup.js +1 -0
  210. package/dist/remediate/dedup/crossLensDedup.js.map +1 -1
  211. package/dist/remediate/index.d.ts.map +1 -1
  212. package/dist/remediate/index.js +92 -52
  213. package/dist/remediate/index.js.map +1 -1
  214. package/dist/remediate/intake.d.ts +54 -0
  215. package/dist/remediate/intake.d.ts.map +1 -1
  216. package/dist/remediate/intake.js +15 -1
  217. package/dist/remediate/intake.js.map +1 -1
  218. package/dist/remediate/intakeSelection.d.ts +27 -0
  219. package/dist/remediate/intakeSelection.d.ts.map +1 -0
  220. package/dist/remediate/intakeSelection.js +37 -0
  221. package/dist/remediate/intakeSelection.js.map +1 -0
  222. package/dist/remediate/intent/intentPersistence.d.ts +41 -0
  223. package/dist/remediate/intent/intentPersistence.d.ts.map +1 -0
  224. package/dist/remediate/intent/intentPersistence.js +129 -0
  225. package/dist/remediate/intent/intentPersistence.js.map +1 -0
  226. package/dist/remediate/phases/close.d.ts +2 -1
  227. package/dist/remediate/phases/close.d.ts.map +1 -1
  228. package/dist/remediate/phases/close.js +19 -2
  229. package/dist/remediate/phases/close.js.map +1 -1
  230. package/dist/remediate/phases/closeReviewProvenance.d.ts +4 -0
  231. package/dist/remediate/phases/closeReviewProvenance.d.ts.map +1 -0
  232. package/dist/remediate/phases/closeReviewProvenance.js +16 -0
  233. package/dist/remediate/phases/closeReviewProvenance.js.map +1 -0
  234. package/dist/remediate/phases/triage.d.ts.map +1 -1
  235. package/dist/remediate/phases/triage.js +3 -1
  236. package/dist/remediate/phases/triage.js.map +1 -1
  237. package/dist/remediate/review/filterDispositions.d.ts +13 -0
  238. package/dist/remediate/review/filterDispositions.d.ts.map +1 -0
  239. package/dist/remediate/review/filterDispositions.js +32 -0
  240. package/dist/remediate/review/filterDispositions.js.map +1 -0
  241. package/dist/remediate/state/runIdentity.d.ts +27 -0
  242. package/dist/remediate/state/runIdentity.d.ts.map +1 -0
  243. package/dist/remediate/state/runIdentity.js +38 -0
  244. package/dist/remediate/state/runIdentity.js.map +1 -0
  245. package/dist/remediate/state/store.d.ts +80 -1
  246. package/dist/remediate/state/store.d.ts.map +1 -1
  247. package/dist/remediate/state/store.js +82 -1
  248. package/dist/remediate/state/store.js.map +1 -1
  249. package/dist/remediate/state/types.d.ts +215 -42
  250. package/dist/remediate/state/types.d.ts.map +1 -1
  251. package/dist/remediate/state/types.js +11 -3
  252. package/dist/remediate/state/types.js.map +1 -1
  253. package/dist/remediate/steps/contractPipeline.d.ts +61 -3
  254. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  255. package/dist/remediate/steps/contractPipeline.js +121 -47
  256. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  257. package/dist/remediate/steps/contractPipelinePrompts.d.ts +27 -4
  258. package/dist/remediate/steps/contractPipelinePrompts.d.ts.map +1 -1
  259. package/dist/remediate/steps/contractPipelinePrompts.js +34 -32
  260. package/dist/remediate/steps/contractPipelinePrompts.js.map +1 -1
  261. package/dist/remediate/steps/dispatch/contractConformanceReview.d.ts +31 -0
  262. package/dist/remediate/steps/dispatch/contractConformanceReview.d.ts.map +1 -0
  263. package/dist/remediate/steps/dispatch/contractConformanceReview.js +98 -0
  264. package/dist/remediate/steps/dispatch/contractConformanceReview.js.map +1 -0
  265. package/dist/remediate/steps/dispatch/hostContracts.d.ts +133 -0
  266. package/dist/remediate/steps/dispatch/hostContracts.d.ts.map +1 -0
  267. package/dist/remediate/steps/dispatch/hostContracts.js +104 -0
  268. package/dist/remediate/steps/dispatch/hostContracts.js.map +1 -0
  269. package/dist/remediate/steps/dispatch/hostCorroboration.d.ts +70 -0
  270. package/dist/remediate/steps/dispatch/hostCorroboration.d.ts.map +1 -0
  271. package/dist/remediate/steps/dispatch/hostCorroboration.js +350 -0
  272. package/dist/remediate/steps/dispatch/hostCorroboration.js.map +1 -0
  273. package/dist/remediate/steps/dispatch/hostHandoff.d.ts +8 -162
  274. package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
  275. package/dist/remediate/steps/dispatch/hostHandoff.js +137 -690
  276. package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
  277. package/dist/remediate/steps/dispatch/requiredTests.d.ts +83 -0
  278. package/dist/remediate/steps/dispatch/requiredTests.d.ts.map +1 -0
  279. package/dist/remediate/steps/dispatch/requiredTests.js +262 -0
  280. package/dist/remediate/steps/dispatch/requiredTests.js.map +1 -0
  281. package/dist/remediate/steps/finalGate.d.ts +8 -7
  282. package/dist/remediate/steps/finalGate.d.ts.map +1 -1
  283. package/dist/remediate/steps/finalGate.js +14 -11
  284. package/dist/remediate/steps/finalGate.js.map +1 -1
  285. package/dist/remediate/steps/frictionCloseout.d.ts +34 -0
  286. package/dist/remediate/steps/frictionCloseout.d.ts.map +1 -0
  287. package/dist/remediate/steps/frictionCloseout.js +113 -0
  288. package/dist/remediate/steps/frictionCloseout.js.map +1 -0
  289. package/dist/remediate/steps/gateCommands.d.ts +7 -9
  290. package/dist/remediate/steps/gateCommands.d.ts.map +1 -1
  291. package/dist/remediate/steps/gateCommands.js +37 -11
  292. package/dist/remediate/steps/gateCommands.js.map +1 -1
  293. package/dist/remediate/steps/intakeResolver.d.ts +2 -0
  294. package/dist/remediate/steps/intakeResolver.d.ts.map +1 -1
  295. package/dist/remediate/steps/intakeResolver.js +36 -11
  296. package/dist/remediate/steps/intakeResolver.js.map +1 -1
  297. package/dist/remediate/steps/nextStep.d.ts +23 -110
  298. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  299. package/dist/remediate/steps/nextStep.js +232 -508
  300. package/dist/remediate/steps/nextStep.js.map +1 -1
  301. package/dist/remediate/steps/prompts.d.ts +1 -1
  302. package/dist/remediate/steps/prompts.d.ts.map +1 -1
  303. package/dist/remediate/steps/prompts.js +7 -2
  304. package/dist/remediate/steps/prompts.js.map +1 -1
  305. package/dist/remediate/steps/recoverIngest.d.ts +57 -0
  306. package/dist/remediate/steps/recoverIngest.d.ts.map +1 -0
  307. package/dist/remediate/steps/recoverIngest.js +171 -0
  308. package/dist/remediate/steps/recoverIngest.js.map +1 -0
  309. package/dist/remediate/steps/stepWriter.d.ts +5 -4
  310. package/dist/remediate/steps/stepWriter.d.ts.map +1 -1
  311. package/dist/remediate/steps/stepWriter.js +2 -1
  312. package/dist/remediate/steps/stepWriter.js.map +1 -1
  313. package/dist/remediate/steps/types.d.ts +2 -3
  314. package/dist/remediate/steps/types.d.ts.map +1 -1
  315. package/dist/remediate/steps/types.js.map +1 -1
  316. package/dist/remediate/validation/artifacts.d.ts.map +1 -1
  317. package/dist/remediate/validation/artifacts.js +5 -12
  318. package/dist/remediate/validation/artifacts.js.map +1 -1
  319. package/dist/remediate/validation/contractPipeline.d.ts.map +1 -1
  320. package/dist/remediate/validation/contractPipeline.js +10 -7
  321. package/dist/remediate/validation/contractPipeline.js.map +1 -1
  322. package/dist/remediate/validation/contractPipelineGates.d.ts +13 -67
  323. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  324. package/dist/remediate/validation/contractPipelineGates.js +65 -139
  325. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  326. package/dist/remediate/validation/remediationState.d.ts.map +1 -1
  327. package/dist/remediate/validation/remediationState.js +9 -3
  328. package/dist/remediate/validation/remediationState.js.map +1 -1
  329. package/dist/shared/agentReflections.d.ts +2 -2
  330. package/dist/shared/analyzerPolicy.d.ts +2 -16
  331. package/dist/shared/analyzerPolicy.d.ts.map +1 -1
  332. package/dist/shared/analyzerPolicy.js +22 -24
  333. package/dist/shared/analyzerPolicy.js.map +1 -1
  334. package/dist/shared/analyzerRunConsent.d.ts +33 -0
  335. package/dist/shared/analyzerRunConsent.d.ts.map +1 -0
  336. package/dist/shared/analyzerRunConsent.js +42 -0
  337. package/dist/shared/analyzerRunConsent.js.map +1 -0
  338. package/dist/shared/analyzers/acquisitionEngine.d.ts +3 -8
  339. package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
  340. package/dist/shared/analyzers/acquisitionEngine.js +1 -0
  341. package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
  342. package/dist/shared/decompose/charterExtraction.d.ts +8 -8
  343. package/dist/shared/decompose/systemicChallenge.d.ts +12 -12
  344. package/dist/shared/engine/obligationEngine.d.ts +2 -2
  345. package/dist/shared/findings/dedupe.d.ts.map +1 -1
  346. package/dist/shared/findings/dedupe.js +16 -0
  347. package/dist/shared/findings/dedupe.js.map +1 -1
  348. package/dist/shared/graph/orderedReachability.d.ts +9 -0
  349. package/dist/shared/graph/orderedReachability.d.ts.map +1 -0
  350. package/dist/shared/graph/orderedReachability.js +21 -0
  351. package/dist/shared/graph/orderedReachability.js.map +1 -0
  352. package/dist/shared/index.d.ts +9 -3
  353. package/dist/shared/index.d.ts.map +1 -1
  354. package/dist/shared/index.js +6 -3
  355. package/dist/shared/index.js.map +1 -1
  356. package/dist/shared/intake/guidanceBootstrap.d.ts +2 -0
  357. package/dist/shared/intake/guidanceBootstrap.d.ts.map +1 -1
  358. package/dist/shared/intake/guidanceBootstrap.js +10 -1
  359. package/dist/shared/intake/guidanceBootstrap.js.map +1 -1
  360. package/dist/shared/intent/constraintClauses.d.ts +3 -0
  361. package/dist/shared/intent/constraintClauses.d.ts.map +1 -1
  362. package/dist/shared/intent/constraintClauses.js +9 -0
  363. package/dist/shared/intent/constraintClauses.js.map +1 -1
  364. package/dist/shared/io/artifactTreeHold.d.ts +5 -0
  365. package/dist/shared/io/artifactTreeHold.d.ts.map +1 -0
  366. package/dist/shared/io/artifactTreeHold.js +13 -0
  367. package/dist/shared/io/artifactTreeHold.js.map +1 -0
  368. package/dist/shared/io/auditToolsPaths.d.ts +3 -1
  369. package/dist/shared/io/auditToolsPaths.d.ts.map +1 -1
  370. package/dist/shared/io/auditToolsPaths.js +6 -1
  371. package/dist/shared/io/auditToolsPaths.js.map +1 -1
  372. package/dist/shared/io/collectFilesSorted.d.ts +10 -0
  373. package/dist/shared/io/collectFilesSorted.d.ts.map +1 -0
  374. package/dist/shared/io/collectFilesSorted.js +38 -0
  375. package/dist/shared/io/collectFilesSorted.js.map +1 -0
  376. package/dist/shared/io/json.d.ts.map +1 -1
  377. package/dist/shared/io/json.js +11 -4
  378. package/dist/shared/io/json.js.map +1 -1
  379. package/dist/shared/io/stepContractWriter.d.ts.map +1 -1
  380. package/dist/shared/io/stepContractWriter.js +8 -0
  381. package/dist/shared/io/stepContractWriter.js.map +1 -1
  382. package/dist/shared/loopCorePaths.d.ts.map +1 -1
  383. package/dist/shared/loopCorePaths.js +9 -0
  384. package/dist/shared/loopCorePaths.js.map +1 -1
  385. package/dist/shared/observability/rootLogObservations.d.ts +10 -0
  386. package/dist/shared/observability/rootLogObservations.d.ts.map +1 -0
  387. package/dist/shared/observability/rootLogObservations.js +147 -0
  388. package/dist/shared/observability/rootLogObservations.js.map +1 -0
  389. package/dist/shared/prompts.d.ts +7 -7
  390. package/dist/shared/prompts.d.ts.map +1 -1
  391. package/dist/shared/prompts.js +11 -11
  392. package/dist/shared/prompts.js.map +1 -1
  393. package/dist/shared/submission/submissionLedger.d.ts +7 -1
  394. package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
  395. package/dist/shared/submission/submissionLedger.js +8 -0
  396. package/dist/shared/submission/submissionLedger.js.map +1 -1
  397. package/dist/shared/tooling/testCommand.d.ts +1 -0
  398. package/dist/shared/tooling/testCommand.d.ts.map +1 -1
  399. package/dist/shared/tooling/testCommand.js +4 -0
  400. package/dist/shared/tooling/testCommand.js.map +1 -1
  401. package/dist/shared/types/charter.d.ts +8 -8
  402. package/dist/shared/types/conceptualPerspective.d.ts +66 -0
  403. package/dist/shared/types/conceptualPerspective.d.ts.map +1 -0
  404. package/dist/shared/types/conceptualPerspective.js +135 -0
  405. package/dist/shared/types/conceptualPerspective.js.map +1 -0
  406. package/dist/shared/types/contractPipeline/design.d.ts +5 -0
  407. package/dist/shared/types/contractPipeline/design.d.ts.map +1 -1
  408. package/dist/shared/types/contractPipeline/design.js +6 -0
  409. package/dist/shared/types/contractPipeline/design.js.map +1 -1
  410. package/dist/shared/types/contractPipeline/implementation.d.ts +54 -0
  411. package/dist/shared/types/contractPipeline/implementation.d.ts.map +1 -1
  412. package/dist/shared/types/contractPipeline/implementation.js +10 -5
  413. package/dist/shared/types/contractPipeline/implementation.js.map +1 -1
  414. package/dist/shared/types/contractPipeline/obligations.d.ts +21 -10
  415. package/dist/shared/types/contractPipeline/obligations.d.ts.map +1 -1
  416. package/dist/shared/types/contractPipeline/obligations.js +13 -1
  417. package/dist/shared/types/contractPipeline/obligations.js.map +1 -1
  418. package/dist/shared/types/disposition.d.ts +6 -6
  419. package/dist/shared/types/finding.d.ts +50 -50
  420. package/dist/shared/types/intentCheckpoint.d.ts +66 -11
  421. package/dist/shared/types/intentCheckpoint.d.ts.map +1 -1
  422. package/dist/shared/types/intentCheckpoint.js +10 -2
  423. package/dist/shared/types/intentCheckpoint.js.map +1 -1
  424. package/dist/shared/types/remediationOutcome.d.ts +252 -24
  425. package/dist/shared/types/remediationOutcome.d.ts.map +1 -1
  426. package/dist/shared/types/remediationOutcome.js +4 -0
  427. package/dist/shared/types/remediationOutcome.js.map +1 -1
  428. package/dist/shared/types/reviewIndependence.d.ts +225 -0
  429. package/dist/shared/types/reviewIndependence.d.ts.map +1 -0
  430. package/dist/shared/types/reviewIndependence.js +67 -0
  431. package/dist/shared/types/reviewIndependence.js.map +1 -0
  432. package/dist/shared/types/stepContract.d.ts +8 -2
  433. package/dist/shared/types/stepContract.d.ts.map +1 -1
  434. package/dist/shared/types/stepContract.js +4 -1
  435. package/dist/shared/types/stepContract.js.map +1 -1
  436. package/dist/shared/validation/findingsReport.d.ts.map +1 -1
  437. package/dist/shared/validation/findingsReport.js +13 -0
  438. package/dist/shared/validation/findingsReport.js.map +1 -1
  439. package/docs/audit-pkg/contracts.md +38 -2
  440. package/docs/audit-pkg/operator-guide.md +59 -4
  441. package/package.json +5 -5
  442. package/remediate-code.mjs +16 -3
  443. package/skills/audit-code/audit-code.prompt.md +1 -31
  444. package/skills/remediate-code/remediate-code.prompt.md +12 -6
@@ -0,0 +1,262 @@
1
+ // sites-pinned: tests/remediate/host-handoff-corroboration.test.ts, tests/remediate/phase-triage.test.ts
2
+ import { remediationRequiredTestLogsDir } from "../../../shared/io/auditToolsPaths.js";
3
+ import { randomUUID } from "node:crypto";
4
+ import { join } from "node:path";
5
+ import { parseCommandString, runTrackedAsync, writeJsonFile } from "audit-tools/shared";
6
+ /**
7
+ * Per-command deadline. A required test is host-authored and may legitimately be
8
+ * a full suite, so the bound is generous; what changed is that hitting it is now
9
+ * a NAMED outcome instead of an unlabelled failure string.
10
+ */
11
+ const REQUIRED_TEST_TIMEOUT_MS = 10 * 60 * 1_000;
12
+ /**
13
+ * Captured output is bounded and TAIL-biased: a failing suite's verdict is at
14
+ * the end, and an unbounded capture would put a whole test log into state and
15
+ * into every rendered issue.
16
+ */
17
+ const CAPTURED_OUTPUT_LIMIT = 1_200;
18
+ /**
19
+ * The bound on the MESSAGE a required-test failure produces.
20
+ *
21
+ * `CAPTURED_OUTPUT_LIMIT` bounds one STREAM; the message is a different thing —
22
+ * `requiredTestIssue` joins every failing command, and a work item may bind any
23
+ * number of them, so the rendered message grew with the number of failures. A
24
+ * message is a HOST-FACING delivery (it is rendered into the step prompt an
25
+ * operator reads), so its size cannot be a function of how many commands
26
+ * happened to fail.
27
+ *
28
+ * The bound TRUNCATES the excerpt and says so; it never drops the verdict. What
29
+ * survives at the front is the part that identifies the failure — the command
30
+ * and its outcome — and the marker tells the operator the rest was elided and
31
+ * where to look instead.
32
+ */
33
+ export const REQUIRED_TEST_MESSAGE_LIMIT = 8_000;
34
+ /** The marker that names an elided excerpt, so truncation is never silent. */
35
+ const REQUIRED_TEST_TRUNCATION_MARKER = "… [excerpt truncated — captured logs are in .audit-tools/remediation/required-test-logs]";
36
+ /**
37
+ * The spawn's raw capture buffer. Exceeding it does not truncate — node KILLS
38
+ * the child — so the cap is a named constant the `output_overflow` message can
39
+ * quote, rather than a literal buried in the spawn options.
40
+ */
41
+ const REQUIRED_TEST_MAX_BUFFER_BYTES = 8 * 1_024 * 1_024;
42
+ function tail(value) {
43
+ const text = value ?? "";
44
+ return text.length <= CAPTURED_OUTPUT_LIMIT
45
+ ? text
46
+ : `…${text.slice(text.length - CAPTURED_OUTPUT_LIMIT)}`;
47
+ }
48
+ /**
49
+ * Render one classified failure for a host-facing issue message.
50
+ *
51
+ * `output_overflow` says the verdict is UNKNOWN, not that the tests were fine: a
52
+ * child killed at the buffer cap may have been heading for exit 0 or exit 3, and
53
+ * the runner cannot tell which. Either way the item is refused — the honest
54
+ * report is "we could not find out", and it fails closed.
55
+ *
56
+ * A signal-killed child renders the SIGNAL, not `exit null`: `exit_code` is null
57
+ * for every non-exit outcome, so printing it there described nothing.
58
+ */
59
+ function describeRequiredTestFailure(failure) {
60
+ const head = failure.outcome === "timed_out"
61
+ ? `${failure.command} (timed out)`
62
+ : failure.outcome === "output_overflow"
63
+ ? `${failure.command} (killed after exceeding the ${String(REQUIRED_TEST_MAX_BUFFER_BYTES)}-byte ` +
64
+ "output buffer — the run ended at the capture cap, so whether the tests pass is UNKNOWN)"
65
+ : failure.outcome === "spawn_error"
66
+ ? `${failure.command} (could not be started)`
67
+ : failure.exit_code === null
68
+ ? `${failure.command} (terminated by ${failure.signal ?? "an unreported signal"})`
69
+ : `${failure.command} (exit ${String(failure.exit_code)})`;
70
+ const captured = [failure.stdout, failure.stderr]
71
+ .filter((stream) => stream.trim().length > 0)
72
+ .join("\n");
73
+ const excerpt = captured.length > 0 ? `${head}: ${captured}` : head;
74
+ const truncated = failure.stdout.startsWith("…") || failure.stderr.startsWith("…");
75
+ return failure.output_log
76
+ ? `${excerpt} [${truncated ? "excerpt truncated; " : ""}captured output: ${failure.output_log}]`
77
+ : excerpt;
78
+ }
79
+ /**
80
+ * Length-prefixed so the root/command boundary is unambiguous for any path, and
81
+ * printable so the source stays text (a raw separator byte would make the file
82
+ * binary to git and invisible to grep). The root is part of the key because a
83
+ * verdict is a fact about one command in one working tree, and nothing
84
+ * guarantees a single process only ever ingests for one root.
85
+ */
86
+ export function requiredTestVerdictKey(root, command) {
87
+ return `${String(root.length)}:${root}:${command}`;
88
+ }
89
+ /**
90
+ * The ONE place a required-test command is spawned.
91
+ *
92
+ * `timeoutMs` is a parameter so the deadline is exercisable: a hang is a
93
+ * first-class outcome of this function, and an outcome that can only be reached
94
+ * by waiting ten real minutes is an outcome nothing ever tests.
95
+ */
96
+ export async function runRequiredTest(root, command, timeoutMs = REQUIRED_TEST_TIMEOUT_MS) {
97
+ // AWAITED, never `spawnSync`: ingestion runs with the remediation state lock
98
+ // held, and a synchronous child blocks the event loop for the whole suite —
99
+ // starving the lock's mtime heartbeat until a LIVE lock is classified stale
100
+ // and stolen mid-ingest.
101
+ //
102
+ // argv + `shell: false`, never a shell string. A required test is a workload
103
+ // command that already cleared the declared-shape gate at the producer, so
104
+ // splitting it is unambiguous, and dropping the shell removes the last place
105
+ // an ingest hands a declared string to `sh`/`cmd.exe`. `resolveExecArgv`
106
+ // inside the runner is what keeps the npm/npx shims resolvable on win32.
107
+ const result = await runTrackedAsync(parseCommandString(command), {
108
+ cwd: root,
109
+ // Captured, not discarded: without it a red ingest reports that something
110
+ // failed and nothing about why.
111
+ encoding: "utf8",
112
+ maxBuffer: REQUIRED_TEST_MAX_BUFFER_BYTES,
113
+ timeout: timeoutMs,
114
+ windowsHide: true,
115
+ });
116
+ if (!result.error && result.status === 0 && result.signal == null)
117
+ return null;
118
+ const output_log = join(remediationRequiredTestLogsDir(root), `${randomUUID()}.json`);
119
+ // Persist everything the bounded runner captured BEFORE deriving prompt excerpts.
120
+ await writeJsonFile(output_log, {
121
+ command, stdout: result.stdout ?? "", stderr: result.stderr ?? "",
122
+ status: result.status, signal: result.signal ?? null,
123
+ overflow_limit_bytes: REQUIRED_TEST_MAX_BUFFER_BYTES, error: result.error?.message ?? null,
124
+ });
125
+ const stdout = tail(result.stdout);
126
+ const stderr = tail(result.stderr);
127
+ // The ERROR CODE discriminates, never `signal`. node kills an over-deadline
128
+ // child AND an over-`maxBuffer` child, and an external `kill` sets `signal`
129
+ // too — so `signal !== null` was true for three unrelated facts and reported
130
+ // all of them as a hang, including a command killed purely for printing more
131
+ // than the buffer holds.
132
+ //
133
+ // ASSUMPTION, stated: a deadline miss reports `ETIMEDOUT`. Verified on win32;
134
+ // it is node's documented contract, not a platform quirk this code confirmed
135
+ // everywhere. On a platform that killed a child at the deadline WITHOUT that
136
+ // code, the case degrades to `spawn_error` — a less specific refusal, still a
137
+ // refusal, so the fail direction holds and only the label is lost.
138
+ const code = result.error?.code;
139
+ if (code === "ETIMEDOUT") {
140
+ return { command, output_log, outcome: "timed_out", exit_code: null, stdout, stderr };
141
+ }
142
+ if (code === "ENOBUFS") {
143
+ return {
144
+ command,
145
+ output_log,
146
+ outcome: "output_overflow",
147
+ exit_code: null,
148
+ stdout,
149
+ stderr,
150
+ };
151
+ }
152
+ if (result.error) {
153
+ return {
154
+ command,
155
+ output_log,
156
+ outcome: "spawn_error",
157
+ exit_code: null,
158
+ stdout,
159
+ stderr: stderr.length > 0 ? stderr : result.error.message,
160
+ };
161
+ }
162
+ // Killed by something outside this runner (an operator `kill`, an OOM reaper).
163
+ // Reported as FAILED with the signal named: the command did not complete, and
164
+ // calling it a deadline miss would attribute it to a bound this runner set.
165
+ //
166
+ // POSIX-ONLY IN PRACTICE, and UNTESTED for that reason: Windows has no signal
167
+ // delivery to report here — a killed child surfaces as an ordinary non-zero
168
+ // `status` with `signal` null — so this branch is unreachable on the platform
169
+ // this repo runs its suites on, and no test exercises it. It is kept because
170
+ // the runner is OS-agnostic by contract, not because it has been observed.
171
+ if (result.signal !== null && result.signal !== undefined) {
172
+ return {
173
+ command,
174
+ output_log,
175
+ outcome: "failed",
176
+ exit_code: null,
177
+ stdout,
178
+ stderr,
179
+ signal: result.signal,
180
+ };
181
+ }
182
+ if (result.status !== 0) {
183
+ return {
184
+ command,
185
+ output_log,
186
+ outcome: "failed",
187
+ exit_code: result.status,
188
+ stdout,
189
+ stderr,
190
+ };
191
+ }
192
+ return null;
193
+ }
194
+ export async function rerunRequiredTests(root, commands,
195
+ /** `null` on the normal lane — see {@link RemediationRequiredTestVerdicts}. */
196
+ verdicts) {
197
+ const failures = [];
198
+ for (const command of commands) {
199
+ if (verdicts) {
200
+ const verdict = verdicts.get(requiredTestVerdictKey(root, command));
201
+ if (verdict === undefined) {
202
+ failures.push({
203
+ command,
204
+ outcome: "spawn_error",
205
+ exit_code: null,
206
+ stdout: "",
207
+ stderr: "no pre-computed verdict — refusing to spawn a test while the state lock is held",
208
+ });
209
+ }
210
+ else if (verdict !== null) {
211
+ failures.push(verdict);
212
+ }
213
+ continue;
214
+ }
215
+ const failure = await runRequiredTest(root, command);
216
+ if (failure !== null)
217
+ failures.push(failure);
218
+ }
219
+ return failures;
220
+ }
221
+ /**
222
+ * The classified issue for a set of required-test failures. An ENVIRONMENT fact
223
+ * anywhere in the set wins over a red sibling, timeout first: a hung or
224
+ * buffer-killed suite is the fact that explains the ingest, and burying it under
225
+ * a sibling's exit code is exactly the conflation the code split exists to end.
226
+ * Only a set where every failure is a genuine non-zero exit reads as
227
+ * `required_test_failed`.
228
+ */
229
+ export function requiredTestIssue(workItem, failures) {
230
+ // Bounded at the point the message is BUILT, not left to the caller: the
231
+ // failure count is a property of the work item's bound commands, so bounding
232
+ // anywhere downstream would still have carried an unbounded string through
233
+ // state and into the ledger. See REQUIRED_TEST_MESSAGE_LIMIT.
234
+ const body = `mechanical required-test rerun failed: ${failures
235
+ .map(describeRequiredTestFailure)
236
+ .join("; ")}`;
237
+ return {
238
+ code: failures.some((failure) => failure.outcome === "timed_out")
239
+ ? "required_test_timed_out"
240
+ : failures.some((failure) => failure.outcome === "output_overflow")
241
+ ? "required_test_output_overflow"
242
+ : "required_test_failed",
243
+ check: "required_tests",
244
+ work_item_id: workItem.id,
245
+ result_path: workItem.result_path,
246
+ message: boundRequiredTestMessage(body),
247
+ };
248
+ }
249
+ /**
250
+ * Truncate a required-test failure message to {@link REQUIRED_TEST_MESSAGE_LIMIT},
251
+ * marking the elision. The head is kept because it is what identifies the
252
+ * failure — the command and its classified outcome — and the marker replaces
253
+ * the tail rather than being appended past the cap, so the result is bounded by
254
+ * construction.
255
+ */
256
+ function boundRequiredTestMessage(message) {
257
+ if (message.length <= REQUIRED_TEST_MESSAGE_LIMIT)
258
+ return message;
259
+ const room = REQUIRED_TEST_MESSAGE_LIMIT - REQUIRED_TEST_TRUNCATION_MARKER.length;
260
+ return `${message.slice(0, room)}${REQUIRED_TEST_TRUNCATION_MARKER}`;
261
+ }
262
+ //# sourceMappingURL=requiredTests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requiredTests.js","sourceRoot":"","sources":["../../../../src/remediate/steps/dispatch/requiredTests.ts"],"names":[],"mappings":"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"}
@@ -60,10 +60,8 @@ export interface ToolOwnedFinalGateResult {
60
60
  */
61
61
  outcome: Exclude<FinalGateOutcomeKind, "disabled">;
62
62
  /**
63
- * True when the audit-tools-specific suite did not apply (target is not the
64
- * audit-tools monorepo). The gate then does not block; it is a declared scope,
65
- * not a vacuous pass. Kept alongside {@link outcome} as the boolean draw of
66
- * the same fact for the branches that only need "did anything run".
63
+ * True when no command could be derived. This is a blocking non-verdict;
64
+ * the operator must supply a command or leave the run paused.
67
65
  */
68
66
  scoped_out: boolean;
69
67
  /**
@@ -112,11 +110,12 @@ export declare const RUNTIME_RESIDUAL_DECLARATION: ToolOwnedFinalGateResult["run
112
110
  * header; the host's session variables reach the child unchanged).
113
111
  * The first failing command short-circuits the floor (a broken build makes the
114
112
  * later layers meaningless). A `runner` may be injected for tests. When the
115
- * audit-tools suite does not apply (non-monorepo target), the gate is
116
- * `scoped_out` (does not block) rather than vacuously passing.
113
+ * target declares no executable gates, it returns a non-verdict that blocks
114
+ * for an explicit operator command rather than vacuously passing.
117
115
  */
118
116
  export declare function runToolOwnedFinalGate(root: string, opts?: {
119
117
  runner?: GateRunner;
118
+ testCommand?: string[];
120
119
  }): Promise<ToolOwnedFinalGateResult>;
121
120
  /**
122
121
  * Where the failing gate run is recorded, relative to the artifacts dir. The
@@ -166,6 +165,7 @@ export interface FinalGateVerdictRecord {
166
165
  outcome: Exclude<FinalGateOutcomeKind, "disabled">;
167
166
  /** The per-command results the red record is rebuilt from. */
168
167
  results: FinalGateCommandResult[];
168
+ binding?: string;
169
169
  recorded_at: string;
170
170
  }
171
171
  /**
@@ -183,7 +183,7 @@ export declare function finalGateVerdictPath(artifactsDir: string): string;
183
183
  * a cache miss costs a gate run, a false hit certifies a tree nobody checked.
184
184
  * Never throws.
185
185
  */
186
- export declare function readFinalGateVerdict(artifactsDir: string, scope: string, tree: string | null): Promise<FinalGateVerdictRecord | undefined>;
186
+ export declare function readFinalGateVerdict(artifactsDir: string, scope: string, tree: string | null, binding?: string): Promise<FinalGateVerdictRecord | undefined>;
187
187
  /**
188
188
  * Record a gate verdict against the tree it was reached on. Overwrites.
189
189
  *
@@ -198,6 +198,7 @@ export declare function writeFinalGateVerdict(artifactsDir: string, verdict: {
198
198
  scoped_out: boolean;
199
199
  outcome: Exclude<FinalGateOutcomeKind, "disabled">;
200
200
  results: FinalGateCommandResult[];
201
+ binding?: string;
201
202
  }): Promise<string>;
202
203
  /**
203
204
  * The ONE gate-outcome record. Every gate family that runs this floor writes
@@ -1 +1 @@
1
- {"version":3,"file":"finalGate.d.ts","sourceRoot":"","sources":["../../../src/remediate/steps/finalGate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finalGate.d.ts","sourceRoot":"","sources":["../../../src/remediate/steps/finalGate.ts"],"names":[],"mappings":"AAsDA,OAAO,EAEL,KAAK,oBAAoB,IAAI,0BAA0B,EACxD,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAEL,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErC,sDAAsD;AACtD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAE9D,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IACnD;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,gBAAgB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC3D;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,KAEjB;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAkBzE;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,EAAE,wBAAwB,CAAC,kBAAkB,CAOnF,CAAC;AAEJ;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACzD,OAAO,CAAC,wBAAwB,CAAC,CAoFnC;AAOD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,4CAA4C,CAAC;IAC7D,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IACnD,8DAA8D;IAC9D,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAY7C;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IACnD,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,4CAA4C,CAAC;IAC7D,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,oBAAoB,CAAC;IAC9B,gFAAgF;IAChF,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,oCAAoC,CAAC;IACrD,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,sBAAsB,GAAG,SAAS,EAC1C,gBAAgB,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAC/D,OAAO,CAAC,MAAM,CAAC,CA+BjB"}
@@ -1,3 +1,4 @@
1
+ // sites-pinned: tests/remediate/arbitrary-repository-gates.test.ts, tests/remediate/final-gate-red-pause.test.ts, tests/remediate/final-gate-extraction-equivalence.test.ts
1
2
  // ---------------------------------------------------------------------------
2
3
  // Tool-owned final completion gate (INV-RS-10)
3
4
  // ---------------------------------------------------------------------------
@@ -88,20 +89,19 @@ export const RUNTIME_RESIDUAL_DECLARATION = {
88
89
  * header; the host's session variables reach the child unchanged).
89
90
  * The first failing command short-circuits the floor (a broken build makes the
90
91
  * later layers meaningless). A `runner` may be injected for tests. When the
91
- * audit-tools suite does not apply (non-monorepo target), the gate is
92
- * `scoped_out` (does not block) rather than vacuously passing.
92
+ * target declares no executable gates, it returns a non-verdict that blocks
93
+ * for an explicit operator command rather than vacuously passing.
93
94
  */
94
95
  export async function runToolOwnedFinalGate(root, opts = {}) {
95
- const runtime_residual = RUNTIME_RESIDUAL_DECLARATION;
96
- const commands = toolOwnedFinalGateCommands(root);
96
+ const runtime_residual = isAuditToolsMonorepo(root)
97
+ ? RUNTIME_RESIDUAL_DECLARATION
98
+ : { surface: "verification roles not declared by the target repository", commands: [] };
99
+ const commands = toolOwnedFinalGateCommands(root, opts.testCommand);
97
100
  if (commands.length === 0) {
98
- // Audit-tools-specific suite does not apply here — declared scope, not a
99
- // vacuous pass (it never substitutes for a real gate on the audit-tools repo).
100
- // `passed: true` keeps it NON-BLOCKING, which is the declared design; the
101
- // `outcome` beside it is what stops that non-blocking value from being
102
- // recorded as if a floor had run green.
101
+ // No declared command is not a verdict. The consumer emits an operator
102
+ // decision and preserves the run, rather than treating zero checks as green.
103
103
  return {
104
- passed: true,
104
+ passed: false,
105
105
  results: [],
106
106
  outcome: "scoped_out",
107
107
  scoped_out: true,
@@ -211,7 +211,7 @@ export function finalGateVerdictPath(artifactsDir) {
211
211
  * a cache miss costs a gate run, a false hit certifies a tree nobody checked.
212
212
  * Never throws.
213
213
  */
214
- export async function readFinalGateVerdict(artifactsDir, scope, tree) {
214
+ export async function readFinalGateVerdict(artifactsDir, scope, tree, binding) {
215
215
  if (tree === null)
216
216
  return undefined;
217
217
  const raw = await readOptionalJsonFile(finalGateVerdictPath(artifactsDir)).catch(() => undefined);
@@ -220,6 +220,8 @@ export async function readFinalGateVerdict(artifactsDir, scope, tree) {
220
220
  return undefined;
221
221
  if (record.scope !== scope)
222
222
  return undefined;
223
+ if (binding !== undefined && (record.binding !== binding || record.scoped_out))
224
+ return undefined;
223
225
  if (record.tree === null || record.tree !== tree)
224
226
  return undefined;
225
227
  if (!Array.isArray(record.results))
@@ -243,6 +245,7 @@ export async function writeFinalGateVerdict(artifactsDir, verdict) {
243
245
  scoped_out: verdict.scoped_out,
244
246
  outcome: verdict.outcome,
245
247
  results: verdict.results,
248
+ binding: verdict.binding,
246
249
  recorded_at: new Date().toISOString(),
247
250
  };
248
251
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"finalGate.js","sourceRoot":"","sources":["../../../src/remediate/steps/finalGate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finalGate.js","sourceRoot":"","sources":["../../../src/remediate/steps/finalGate.ts"],"names":[],"mappings":"AAAA,4KAA4K;AAC5K,8EAA8E;AAC9E,+CAA+C;AAC/C,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,uEAAuE;AACvE,EAAE;AACF,wEAAwE;AACxE,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,gDAAgD;AAChD,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,iEAAiE;AACjE,gFAAgF;AAChF,kFAAkF;AAClF,gFAAgF;AAChF,2CAA2C;AAC3C,EAAE;AACF,oFAAoF;AACpF,oFAAoF;AACpF,mEAAmE;AACnE,iFAAiF;AACjF,+BAA+B;AAC/B,sGAAsG;AACtG,0CAA0C;AAC1C,EAAE;AACF,oEAAoE;AACpE,+EAA+E;AAC/E,+EAA+E;AAC/E,iFAAiF;AACjF,4EAA4E;AAC5E,gDAAgD;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,EACpB,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,iFAAiF;AACjF,gFAAgF;AAChF,wEAAwE;AACxE,OAAO,EACL,kBAAkB,GAEnB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,GAI3B,MAAM,mBAAmB,CAAC;AAE3B,mFAAmF;AACnF,gFAAgF;AAChF,8EAA8E;AAC9E,oFAAoF;AACpF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,CAAC;AA+F5D;;;;;GAKG;AACH,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAErC,SAAS,UAAU,CAAC,KAAyB;IAC3C,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IACzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,MAAM,IAAI,sBAAsB;QAC1C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GACvC;IACE,OAAO,EAAE,8CAA8C;IACvD,QAAQ,EAAE;QACR,mCAAmC;QACnC,uCAAuC;KACxC;CACF,CAAC;AAEJ;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,OAAwD,EAAE;IAE1D,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,CAAC;QACjD,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,EAAE,OAAO,EAAE,0DAA0D,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAE1F,MAAM,QAAQ,GAAG,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,uEAAuE;QACvE,6EAA6E;QAC7E,OAAO;YACL,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,IAAI;YAChB,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GACV,IAAI,CAAC,MAAM;QACX,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE;YAC/B,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAChC,4EAA4E;YAC5E,2DAA2D;YAC3D,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/D,uEAAuE;YACvE,sEAAsE;YACtE,wDAAwD;YACxD,EAAE;YACF,oEAAoE;YACpE,8EAA8E;YAC9E,6EAA6E;YAC7E,0EAA0E;YAC1E,2EAA2E;YAC3E,2EAA2E;YAC3E,yEAAyE;YACzE,0EAA0E;YAC1E,uBAAuB;YACvB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE;gBACvD,GAAG,EAAE,YAAY;gBACjB,sEAAsE;gBACtE,yEAAyE;gBACzE,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YACH,0EAA0E;YAC1E,wEAAwE;YACxE,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;QACJ,CAAC,CAAC,CAAC;IAEL,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,yEAAyE;QACzE,yEAAyE;QACzE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,SAAS;YACjB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;YAChE,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;SACjE,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,GAAG,KAAK,CAAC;YACf,MAAM,CAAC,gEAAgE;QACzE,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM;QACN,OAAO;QACP,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,KAAK;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AACpD,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,0BAA0B,GAAG,4CAA4C,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,OAAO,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,OAAO,IAAI,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;AACzD,CAAC;AAwCD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,OAAO,IAAI,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAAoB,EACpB,KAAa,EACb,IAAmB,EACnB,OAAgB;IAEhB,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,oBAAoB,CACpC,oBAAoB,CAAC,YAAY,CAAC,CACnC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,8BAA8B,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;IAC/E,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC9D,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACjG,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,YAAoB,EACpB,OAQC;IAED,MAAM,IAAI,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,MAAM,GAA2B;QACrC,cAAc,EAAE,0BAA0B;QAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;QAC5E,0EAA0E;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AA8BD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,YAAoB,EACpB,OAMC;IAED,MAAM,IAAI,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAA2B;QACrC,cAAc,EAAE,4CAA4C;QAC5D,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACnC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;IACF,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAkCD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,YAAoB,EACpB,KAAa,EACb,MAA0C,EAC1C,gBAAgE;IAEhE,MAAM,IAAI,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,WAA2C,CAAC;IAChD,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAC;QAC/B,2EAA2E;QAC3E,0EAA0E;QAC1E,2EAA2E;QAC3E,6CAA6C;QAC7C,WAAW,GAAG,MAAM,gBAAgB,CAAC;YACnC,IAAI,EAAE,gBAAgB,CAAC,IAAI;YAC3B,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,KAAK,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE;SACnE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,MAAM,GAAuB;QACjC,cAAc,EAAE,oCAAoC;QACpD,KAAK;QACL,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB;QAC1E,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,IAAI;QACpC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,IAAI;QAC5B,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QACxC,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QACxC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;KACtD,CAAC;IACF,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type FrictionTriageDecision } from "audit-tools/shared";
2
+ import type { RemediationState } from "../state/store.js";
3
+ import type { RemediationStep } from "./types.js";
4
+ /**
5
+ * The BLOCKING friction close-out step for a run whose walk is still owed.
6
+ *
7
+ * Emitted from `handleClosing` BEFORE the close touches disk, so the record the
8
+ * host is told to write (`triage.recordPath`) is the plan-keyed one this very
9
+ * decision just materialized — and so the run's identity in that path is the
10
+ * plan id, not a fallback. The step is a `closing`-phase gate: `next-step`
11
+ * re-decides the same walk on the next call, and only a disposed walk lets the
12
+ * close proceed.
13
+ */
14
+ export declare function buildFrictionWalkStep(root: string, artifactsDir: string, state: RemediationState, triage: FrictionTriageDecision): Promise<RemediationStep>;
15
+ export declare function presentReportStep(root: string, artifactsDir: string, state: RemediationState | null): Promise<RemediationStep>;
16
+ /**
17
+ * The terminal friction-TRIAGE close-out for the remediate half. Thin delegation to
18
+ * the single-sourced `decideFrictionTriage` (`audit-tools/shared`) — the exact analog
19
+ * of audit-code's `decideAuditFrictionCloseout`, so the triage shape, disposition
20
+ * vocabulary, blocking semantics, and close-out logic cannot drift between the two
21
+ * halves. Drops the former false-green (an empty up-front record no longer satisfies):
22
+ * the blocking triage stays unsatisfied ("dispose") until every captured mechanical
23
+ * event AND every surfaced agent-feedback reflection carries a disposition; an empty
24
+ * set (zero events AND zero reflections) is trivially "disposed". Keyed only off
25
+ * `(artifactsDir, runId)`; never coupled to any repo's backlog doc.
26
+ *
27
+ * A state with NO plan id can name no run, and since the decision MATERIALIZES
28
+ * the record it keys, guessing a key there would mint one. It returns `null`
29
+ * instead — "there is no run here to close out", which is the truthful answer
30
+ * for a state whose plan is gone. Callers that hold the run's plan get a
31
+ * decision; callers past the run boundary get nothing to render.
32
+ */
33
+ export declare function decideRemediateFrictionCloseout(artifactsDir: string, state: RemediationState | null): Promise<FrictionTriageDecision | null>;
34
+ //# sourceMappingURL=frictionCloseout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frictionCloseout.d.ts","sourceRoot":"","sources":["../../../src/remediate/steps/frictionCloseout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkD,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAa1B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,eAAe,CAAC,CA4D1B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAIxC"}
@@ -0,0 +1,113 @@
1
+ // sites-pinned: tests/remediate/friction-capture-closeout.test.ts
2
+ import { dirname, join } from "node:path";
3
+ import { decideFrictionTriage, buildFrictionTriageBlock } from "audit-tools/shared";
4
+ import { stateRunId, requireStateRunId } from "../state/runIdentity.js";
5
+ import { writeCurrentStep } from "./stepWriter.js";
6
+ /**
7
+ * The BLOCKING friction close-out step for a run whose walk is still owed.
8
+ *
9
+ * Emitted from `handleClosing` BEFORE the close touches disk, so the record the
10
+ * host is told to write (`triage.recordPath`) is the plan-keyed one this very
11
+ * decision just materialized — and so the run's identity in that path is the
12
+ * plan id, not a fallback. The step is a `closing`-phase gate: `next-step`
13
+ * re-decides the same walk on the next call, and only a disposed walk lets the
14
+ * close proceed.
15
+ */
16
+ export async function buildFrictionWalkStep(root, artifactsDir, state, triage) {
17
+ return writeCurrentStep({
18
+ stepKind: "close_run",
19
+ status: "ready",
20
+ runId: requireStateRunId(state),
21
+ repoRoot: root,
22
+ artifactsDir,
23
+ prompt: `# Remediation Run Friction Triage\n\nComplete the friction close-out walk before the run may close.\n${buildFrictionTriageBlock(triage)}`,
24
+ allowedCommands: [],
25
+ stopCondition: "Complete friction triage (write dispositions and open_observations), then call next-step again.",
26
+ artifactPaths: { friction_record: triage.recordPath },
27
+ });
28
+ }
29
+ export async function presentReportStep(root, artifactsDir, state) {
30
+ const reportPath = join(dirname(artifactsDir), "remediation-report.md");
31
+ // Terminal friction-TRIAGE close-out, folded into present_report (single-sourced in
32
+ // `audit-tools/shared`). MANDATORY + BLOCKING: stays "dispose" until every mechanical
33
+ // event + reflection is disposed AND ≥1 open observation written. Never trivially
34
+ // satisfied by an empty event set — the host must actively confirm the friction state.
35
+ //
36
+ // NO FRICTION RECORD IS EVER MINTED HERE. The decision was made — and the
37
+ // record, under the run's plan-keyed path, was walked — before the close
38
+ // archived it: `handleClosing` consults `decideRemediateFrictionCloseout`
39
+ // against the LIVE state and short-circuits the close until the walk is
40
+ // disposed. So ON THE GREEN PATH — the close ran to `complete`, archived the
41
+ // run and removed the artifacts dir — the walk was already completed when the
42
+ // close started, the plan-keyed record left with the other deliverables, and
43
+ // all that is left is to RENDER the already-recorded walk for the host.
44
+ //
45
+ // NOT-GREEN IS THE OTHER HALF, and it is not "mint nothing": a close that
46
+ // returned a non-`complete` state PRESERVES the artifacts dir, so the record
47
+ // this step decides remains where the run wrote it — the caller reaches here
48
+ // with the saved state still carrying its plan id, `decideFrictionTriage`
49
+ // materializes (or re-reads) that same plan-keyed file, and the walk is
50
+ // rendered from the record that is still in place.
51
+ //
52
+ // It is decided — and so materialized — ONLY when the state names a run. The
53
+ // guard is the plan id, not the artifacts dir: the dir is not evidence of
54
+ // anything here, since `decideNextStepLoop` mkdirs it unconditionally on entry,
55
+ // `RunLogger.event` mkdirs it again for `run.log.jsonl`, and `writeJsonFile`
56
+ // mkdirs any parent it is handed. So a dir-existence test is true on every
57
+ // path, including a run whose state the close deleted. Guarding on the dir was
58
+ // the 2026-08-24 defect: the decider ran with a null state, took a fallback
59
+ // key, and because `decideFrictionTriage` MATERIALIZES the record it is given,
60
+ // minted a fresh EMPTY record inside the directory the close had just deleted —
61
+ // re-blocking the run on the record it had created. `stateRunId` now answers
62
+ // `null` for a planless state and this call therefore decides nothing.
63
+ //
64
+ // A `complete` state reaching here is a run that never ran the close walk (a
65
+ // re-delivery of an already-complete run, whose plan the state still carries),
66
+ // so the walk is genuinely still owed and deciding it here is correct — it
67
+ // renders as the blocking step. Only a planless state renders nothing.
68
+ const triage = await decideRemediateFrictionCloseout(artifactsDir, state);
69
+ const frictionBlock = triage ? buildFrictionTriageBlock(triage) : "";
70
+ const isBlocked = triage?.action === "dispose";
71
+ return writeCurrentStep({
72
+ stepKind: "present_report",
73
+ status: isBlocked ? "ready" : "complete",
74
+ runId: stateRunId(state),
75
+ repoRoot: root,
76
+ artifactsDir,
77
+ prompt: isBlocked
78
+ ? `# Remediation Run Friction Triage\n\nComplete friction triage before presenting the report.\n${frictionBlock}`
79
+ : `# Present Remediation Report\n\nRead \`${reportPath}\` and summarize the remediation outcome.\nMention resolved, ignored, and deemed-inappropriate counts plus the closing action.\n${frictionBlock}`,
80
+ allowedCommands: [],
81
+ stopCondition: isBlocked
82
+ ? "Complete friction triage (write dispositions and open_observations), then call next-step again."
83
+ : "Present the remediation report summary and stop.",
84
+ artifactPaths: {
85
+ final_report: reportPath,
86
+ ...(triage ? { friction_record: triage.recordPath } : {}),
87
+ },
88
+ });
89
+ }
90
+ /**
91
+ * The terminal friction-TRIAGE close-out for the remediate half. Thin delegation to
92
+ * the single-sourced `decideFrictionTriage` (`audit-tools/shared`) — the exact analog
93
+ * of audit-code's `decideAuditFrictionCloseout`, so the triage shape, disposition
94
+ * vocabulary, blocking semantics, and close-out logic cannot drift between the two
95
+ * halves. Drops the former false-green (an empty up-front record no longer satisfies):
96
+ * the blocking triage stays unsatisfied ("dispose") until every captured mechanical
97
+ * event AND every surfaced agent-feedback reflection carries a disposition; an empty
98
+ * set (zero events AND zero reflections) is trivially "disposed". Keyed only off
99
+ * `(artifactsDir, runId)`; never coupled to any repo's backlog doc.
100
+ *
101
+ * A state with NO plan id can name no run, and since the decision MATERIALIZES
102
+ * the record it keys, guessing a key there would mint one. It returns `null`
103
+ * instead — "there is no run here to close out", which is the truthful answer
104
+ * for a state whose plan is gone. Callers that hold the run's plan get a
105
+ * decision; callers past the run boundary get nothing to render.
106
+ */
107
+ export async function decideRemediateFrictionCloseout(artifactsDir, state) {
108
+ const runId = stateRunId(state);
109
+ if (!runId)
110
+ return null;
111
+ return decideFrictionTriage(artifactsDir, runId, "remediate-code");
112
+ }
113
+ //# sourceMappingURL=frictionCloseout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frictionCloseout.js","sourceRoot":"","sources":["../../../src/remediate/steps/frictionCloseout.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export interface FinalGateCommandSpec {
6
6
  /** The package this command's unit suite targets (single-flight key), if any. */
7
7
  package_dir?: string;
8
8
  /** Which layer of the floor this belongs to. */
9
- layer: "build" | "check" | "unit";
9
+ layer: "build" | "check" | "lint" | "unit";
10
10
  }
11
11
  /**
12
12
  * Whether `root` is the audit-tools monorepo — the repo the tool-owned final
@@ -192,13 +192,11 @@ export declare function carriesEnvironmentVerdict(attribution: GateRedAttributio
192
192
  */
193
193
  export declare function renderGateAttribution(attribution: GateRedAttribution | undefined): string;
194
194
  /**
195
- * The tool-owned final-gate command list (INV-RS-10) for the audit-tools
196
- * monorepo. Pure and deterministic so tests can assert: it is non-vacuous
197
- * (always > 0 build + check + unit commands) for the audit-tools structure,
198
- * never references `plan.test_command`, every UNIT command is build-free, and no
199
- * package's unit suite appears twice (single-flight — CE-001). Returns `[]` when
200
- * `root` is not the audit-tools monorepo (the audit-tools-specific suite is
201
- * inapplicable there — see `runToolOwnedFinalGate`).
195
+ * Repository-declared verification in build/typecheck/lint/test order. The
196
+ * audit-tools profile retains its build-free unit floor. An explicit test
197
+ * command replaces only the generic test role, never the other checks.
202
198
  */
203
- export declare function toolOwnedFinalGateCommands(root: string): FinalGateCommandSpec[];
199
+ export declare function toolOwnedFinalGateCommands(root: string, testCommand?: string[]): FinalGateCommandSpec[];
200
+ /** Cache identity includes declarations even when the worktree probe cannot see ignored files. */
201
+ export declare function finalGateBinding(root: string, testCommand?: string[]): string;
204
202
  //# sourceMappingURL=gateCommands.d.ts.map