audit-tools 0.42.0 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/dispatch/merge-results.mjs +229 -140
  2. package/dispatch/validate-result.mjs +98 -40
  3. package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
  4. package/dist/audit/cli/conceptualDispatch.js +35 -3
  5. package/dist/audit/cli/conceptualDispatch.js.map +1 -1
  6. package/dist/audit/cli/dispatch/hostHandoff.d.ts +9 -1
  7. package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
  8. package/dist/audit/cli/dispatch/hostHandoff.js +94 -38
  9. package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
  10. package/dist/audit/cli/nextStepCommand.d.ts +64 -0
  11. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  12. package/dist/audit/cli/nextStepCommand.js +877 -783
  13. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  14. package/dist/audit/cli/nextStepHelpers.d.ts +12 -0
  15. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  16. package/dist/audit/cli/nextStepHelpers.js +34 -1
  17. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  18. package/dist/audit/cli/steps.d.ts +2 -2
  19. package/dist/audit/extractors/graph.d.ts +28 -2
  20. package/dist/audit/extractors/graph.d.ts.map +1 -1
  21. package/dist/audit/extractors/graph.js +122 -11
  22. package/dist/audit/extractors/graph.js.map +1 -1
  23. package/dist/audit/extractors/graphRoutes.d.ts +8 -0
  24. package/dist/audit/extractors/graphRoutes.d.ts.map +1 -1
  25. package/dist/audit/extractors/graphRoutes.js +71 -4
  26. package/dist/audit/extractors/graphRoutes.js.map +1 -1
  27. package/dist/audit/io/artifacts.d.ts +55 -0
  28. package/dist/audit/io/artifacts.d.ts.map +1 -1
  29. package/dist/audit/io/artifacts.js +189 -12
  30. package/dist/audit/io/artifacts.js.map +1 -1
  31. package/dist/audit/io/toolingManifest.d.ts +11 -0
  32. package/dist/audit/io/toolingManifest.d.ts.map +1 -1
  33. package/dist/audit/io/toolingManifest.js +13 -3
  34. package/dist/audit/io/toolingManifest.js.map +1 -1
  35. package/dist/audit/orchestrator/advance.d.ts +64 -0
  36. package/dist/audit/orchestrator/advance.d.ts.map +1 -1
  37. package/dist/audit/orchestrator/advance.js +191 -57
  38. package/dist/audit/orchestrator/advance.js.map +1 -1
  39. package/dist/audit/orchestrator/charterClarificationExecutor.d.ts.map +1 -1
  40. package/dist/audit/orchestrator/charterClarificationExecutor.js +55 -21
  41. package/dist/audit/orchestrator/charterClarificationExecutor.js.map +1 -1
  42. package/dist/audit/orchestrator/flowCoverage.d.ts.map +1 -1
  43. package/dist/audit/orchestrator/flowCoverage.js +7 -10
  44. package/dist/audit/orchestrator/flowCoverage.js.map +1 -1
  45. package/dist/audit/orchestrator/flowPlanning.d.ts +54 -1
  46. package/dist/audit/orchestrator/flowPlanning.d.ts.map +1 -1
  47. package/dist/audit/orchestrator/flowPlanning.js +77 -18
  48. package/dist/audit/orchestrator/flowPlanning.js.map +1 -1
  49. package/dist/audit/orchestrator/flowRequeue.d.ts.map +1 -1
  50. package/dist/audit/orchestrator/flowRequeue.js +6 -10
  51. package/dist/audit/orchestrator/flowRequeue.js.map +1 -1
  52. package/dist/audit/orchestrator/partitionTaskGraph.d.ts.map +1 -1
  53. package/dist/audit/orchestrator/partitionTaskGraph.js +2 -2
  54. package/dist/audit/orchestrator/partitionTaskGraph.js.map +1 -1
  55. package/dist/audit/orchestrator/requeueFold.d.ts.map +1 -1
  56. package/dist/audit/orchestrator/requeueFold.js +18 -5
  57. package/dist/audit/orchestrator/requeueFold.js.map +1 -1
  58. package/dist/audit/orchestrator/staleness.d.ts +24 -1
  59. package/dist/audit/orchestrator/staleness.d.ts.map +1 -1
  60. package/dist/audit/orchestrator/staleness.js +147 -16
  61. package/dist/audit/orchestrator/staleness.js.map +1 -1
  62. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts +26 -0
  63. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts.map +1 -1
  64. package/dist/audit/orchestrator/syntaxResolutionExecutor.js +97 -12
  65. package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
  66. package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
  67. package/dist/audit/orchestrator/taskBuilder.js +111 -21
  68. package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
  69. package/dist/audit/orchestrator/trivialAudit.d.ts +17 -1
  70. package/dist/audit/orchestrator/trivialAudit.d.ts.map +1 -1
  71. package/dist/audit/orchestrator/trivialAudit.js +31 -4
  72. package/dist/audit/orchestrator/trivialAudit.js.map +1 -1
  73. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  74. package/dist/audit/reporting/synthesis.js +2 -3
  75. package/dist/audit/reporting/synthesis.js.map +1 -1
  76. package/dist/audit/reporting/workBlocks.d.ts.map +1 -1
  77. package/dist/audit/reporting/workBlocks.js +4 -38
  78. package/dist/audit/reporting/workBlocks.js.map +1 -1
  79. package/dist/audit/types/analyzerCapability.d.ts +6 -6
  80. package/dist/audit/types/charterRegister.d.ts +30 -12
  81. package/dist/audit/types/charterRegister.d.ts.map +1 -1
  82. package/dist/audit/types/charterRegister.js +22 -9
  83. package/dist/audit/types/charterRegister.js.map +1 -1
  84. package/dist/audit/validation/anchorGrounding.d.ts.map +1 -1
  85. package/dist/audit/validation/anchorGrounding.js +17 -0
  86. package/dist/audit/validation/anchorGrounding.js.map +1 -1
  87. package/dist/audit/validation/auditResults.d.ts +17 -0
  88. package/dist/audit/validation/auditResults.d.ts.map +1 -1
  89. package/dist/audit/validation/auditResults.js +50 -17
  90. package/dist/audit/validation/auditResults.js.map +1 -1
  91. package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts +48 -0
  92. package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts.map +1 -1
  93. package/dist/remediate/contractPipeline/cyclicSeamResolution.js +128 -0
  94. package/dist/remediate/contractPipeline/cyclicSeamResolution.js.map +1 -1
  95. package/dist/remediate/contractPipeline/derive.d.ts +8 -5
  96. package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
  97. package/dist/remediate/contractPipeline/derive.js +8 -16
  98. package/dist/remediate/contractPipeline/derive.js.map +1 -1
  99. package/dist/remediate/index.d.ts.map +1 -1
  100. package/dist/remediate/index.js +43 -2
  101. package/dist/remediate/index.js.map +1 -1
  102. package/dist/remediate/intent/intentOrdering.d.ts +13 -5
  103. package/dist/remediate/intent/intentOrdering.d.ts.map +1 -1
  104. package/dist/remediate/intent/intentOrdering.js +56 -25
  105. package/dist/remediate/intent/intentOrdering.js.map +1 -1
  106. package/dist/remediate/phases/close.d.ts +57 -2
  107. package/dist/remediate/phases/close.d.ts.map +1 -1
  108. package/dist/remediate/phases/close.js +260 -36
  109. package/dist/remediate/phases/close.js.map +1 -1
  110. package/dist/remediate/state/disposition.d.ts +26 -4
  111. package/dist/remediate/state/disposition.d.ts.map +1 -1
  112. package/dist/remediate/state/itemStatus.d.ts +33 -6
  113. package/dist/remediate/state/itemStatus.d.ts.map +1 -1
  114. package/dist/remediate/state/itemStatus.js +154 -39
  115. package/dist/remediate/state/itemStatus.js.map +1 -1
  116. package/dist/remediate/state/types.d.ts +41 -2
  117. package/dist/remediate/state/types.d.ts.map +1 -1
  118. package/dist/remediate/state/types.js.map +1 -1
  119. package/dist/remediate/steps/contractPipeline.d.ts +287 -15
  120. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  121. package/dist/remediate/steps/contractPipeline.js +1664 -987
  122. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  123. package/dist/remediate/steps/contractPipelinePrompts.js +1 -1
  124. package/dist/remediate/steps/contractPipelinePrompts.js.map +1 -1
  125. package/dist/remediate/steps/dispatch/hostHandoff.d.ts +137 -2
  126. package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
  127. package/dist/remediate/steps/dispatch/hostHandoff.js +713 -59
  128. package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
  129. package/dist/remediate/steps/finalGate.d.ts +136 -37
  130. package/dist/remediate/steps/finalGate.d.ts.map +1 -1
  131. package/dist/remediate/steps/finalGate.js +120 -86
  132. package/dist/remediate/steps/finalGate.js.map +1 -1
  133. package/dist/remediate/steps/gateCommands.d.ts +8 -0
  134. package/dist/remediate/steps/gateCommands.d.ts.map +1 -1
  135. package/dist/remediate/steps/gateCommands.js +40 -11
  136. package/dist/remediate/steps/gateCommands.js.map +1 -1
  137. package/dist/remediate/steps/nextStep.d.ts +96 -5
  138. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  139. package/dist/remediate/steps/nextStep.js +668 -147
  140. package/dist/remediate/steps/nextStep.js.map +1 -1
  141. package/dist/remediate/steps/types.d.ts +4 -1
  142. package/dist/remediate/steps/types.d.ts.map +1 -1
  143. package/dist/remediate/steps/types.js +10 -0
  144. package/dist/remediate/steps/types.js.map +1 -1
  145. package/dist/remediate/validation/artifacts.d.ts +20 -0
  146. package/dist/remediate/validation/artifacts.d.ts.map +1 -1
  147. package/dist/remediate/validation/artifacts.js +239 -13
  148. package/dist/remediate/validation/artifacts.js.map +1 -1
  149. package/dist/remediate/validation/contractPipelineGates.d.ts +58 -0
  150. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  151. package/dist/remediate/validation/contractPipelineGates.js +167 -43
  152. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  153. package/dist/shared/analyzers/acquisitionEngine.d.ts +72 -25
  154. package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
  155. package/dist/shared/analyzers/acquisitionEngine.js +149 -15
  156. package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
  157. package/dist/shared/analyzers/binaryAcquisition.d.ts +27 -2
  158. package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
  159. package/dist/shared/analyzers/binaryAcquisition.js +149 -43
  160. package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
  161. package/dist/shared/analyzers/candidates.d.ts +9 -8
  162. package/dist/shared/analyzers/candidates.d.ts.map +1 -1
  163. package/dist/shared/analyzers/candidates.js +96 -64
  164. package/dist/shared/analyzers/candidates.js.map +1 -1
  165. package/dist/shared/analyzers/normalizeExternal.d.ts +40 -12
  166. package/dist/shared/analyzers/normalizeExternal.d.ts.map +1 -1
  167. package/dist/shared/analyzers/normalizeExternal.js +74 -18
  168. package/dist/shared/analyzers/normalizeExternal.js.map +1 -1
  169. package/dist/shared/analyzers/rubocop.d.ts +14 -13
  170. package/dist/shared/analyzers/rubocop.d.ts.map +1 -1
  171. package/dist/shared/analyzers/rubocop.js +29 -6
  172. package/dist/shared/analyzers/rubocop.js.map +1 -1
  173. package/dist/shared/analyzers/types.d.ts +196 -13
  174. package/dist/shared/analyzers/types.d.ts.map +1 -1
  175. package/dist/shared/analyzers/types.js +122 -9
  176. package/dist/shared/analyzers/types.js.map +1 -1
  177. package/dist/shared/decompose/charterClarification.d.ts +12 -1
  178. package/dist/shared/decompose/charterClarification.d.ts.map +1 -1
  179. package/dist/shared/decompose/charterClarification.js +11 -4
  180. package/dist/shared/decompose/charterClarification.js.map +1 -1
  181. package/dist/shared/decompose/charterExtraction.d.ts +20 -10
  182. package/dist/shared/decompose/charterExtraction.d.ts.map +1 -1
  183. package/dist/shared/decompose/charterExtraction.js +52 -23
  184. package/dist/shared/decompose/charterExtraction.js.map +1 -1
  185. package/dist/shared/decompose/contentCoherence.d.ts +43 -2
  186. package/dist/shared/decompose/contentCoherence.d.ts.map +1 -1
  187. package/dist/shared/decompose/contentCoherence.js +109 -5
  188. package/dist/shared/decompose/contentCoherence.js.map +1 -1
  189. package/dist/shared/decompose/modularity.d.ts +17 -0
  190. package/dist/shared/decompose/modularity.d.ts.map +1 -1
  191. package/dist/shared/decompose/modularity.js +78 -3
  192. package/dist/shared/decompose/modularity.js.map +1 -1
  193. package/dist/shared/decompose/workBlockSeams.d.ts +45 -0
  194. package/dist/shared/decompose/workBlockSeams.d.ts.map +1 -0
  195. package/dist/shared/decompose/workBlockSeams.js +82 -0
  196. package/dist/shared/decompose/workBlockSeams.js.map +1 -0
  197. package/dist/shared/index.d.ts +4 -3
  198. package/dist/shared/index.d.ts.map +1 -1
  199. package/dist/shared/index.js +4 -2
  200. package/dist/shared/index.js.map +1 -1
  201. package/dist/shared/intent/freeFormIntentInterpreter.d.ts +12 -2
  202. package/dist/shared/intent/freeFormIntentInterpreter.d.ts.map +1 -1
  203. package/dist/shared/intent/freeFormIntentInterpreter.js +27 -22
  204. package/dist/shared/intent/freeFormIntentInterpreter.js.map +1 -1
  205. package/dist/shared/intent/pathScope.d.ts +12 -1
  206. package/dist/shared/intent/pathScope.d.ts.map +1 -1
  207. package/dist/shared/intent/pathScope.js +56 -19
  208. package/dist/shared/intent/pathScope.js.map +1 -1
  209. package/dist/shared/intent/sharedIntentData.d.ts +19 -1
  210. package/dist/shared/intent/sharedIntentData.d.ts.map +1 -1
  211. package/dist/shared/intent/sharedIntentData.js +33 -8
  212. package/dist/shared/intent/sharedIntentData.js.map +1 -1
  213. package/dist/shared/io/fileLock.d.ts +12 -0
  214. package/dist/shared/io/fileLock.d.ts.map +1 -1
  215. package/dist/shared/io/fileLock.js +48 -5
  216. package/dist/shared/io/fileLock.js.map +1 -1
  217. package/dist/shared/io/json.d.ts +13 -0
  218. package/dist/shared/io/json.d.ts.map +1 -1
  219. package/dist/shared/io/json.js +19 -1
  220. package/dist/shared/io/json.js.map +1 -1
  221. package/dist/shared/reporting/auditDeliverable.d.ts.map +1 -1
  222. package/dist/shared/reporting/auditDeliverable.js +8 -3
  223. package/dist/shared/reporting/auditDeliverable.js.map +1 -1
  224. package/dist/shared/steps/stepEmissionScaffold.d.ts +69 -0
  225. package/dist/shared/steps/stepEmissionScaffold.d.ts.map +1 -0
  226. package/dist/shared/steps/stepEmissionScaffold.js +83 -0
  227. package/dist/shared/steps/stepEmissionScaffold.js.map +1 -0
  228. package/dist/shared/submission/handRecovery.d.ts.map +1 -1
  229. package/dist/shared/submission/handRecovery.js +69 -4
  230. package/dist/shared/submission/handRecovery.js.map +1 -1
  231. package/dist/shared/submission/submissionIdentity.d.ts +10 -1
  232. package/dist/shared/submission/submissionIdentity.d.ts.map +1 -1
  233. package/dist/shared/submission/submissionIdentity.js +12 -3
  234. package/dist/shared/submission/submissionIdentity.js.map +1 -1
  235. package/dist/shared/submission/submissionLedger.d.ts +43 -2
  236. package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
  237. package/dist/shared/submission/submissionLedger.js +50 -7
  238. package/dist/shared/submission/submissionLedger.js.map +1 -1
  239. package/dist/shared/tooling/allowlistedExec.d.ts +9 -0
  240. package/dist/shared/tooling/allowlistedExec.d.ts.map +1 -1
  241. package/dist/shared/tooling/allowlistedExec.js +19 -2
  242. package/dist/shared/tooling/allowlistedExec.js.map +1 -1
  243. package/dist/shared/types/charter.d.ts +24 -0
  244. package/dist/shared/types/charter.d.ts.map +1 -1
  245. package/dist/shared/types/charter.js +9 -0
  246. package/dist/shared/types/charter.js.map +1 -1
  247. package/dist/shared/types/finding.d.ts +105 -53
  248. package/dist/shared/types/finding.d.ts.map +1 -1
  249. package/dist/shared/types/finding.js +38 -11
  250. package/dist/shared/types/finding.js.map +1 -1
  251. package/dist/shared/types/remediationOutcome.d.ts +282 -9
  252. package/dist/shared/types/remediationOutcome.d.ts.map +1 -1
  253. package/dist/shared/types/remediationOutcome.js +174 -1
  254. package/dist/shared/types/remediationOutcome.js.map +1 -1
  255. package/dist/shared/validation/findingsReport.d.ts.map +1 -1
  256. package/dist/shared/validation/findingsReport.js +19 -1
  257. package/dist/shared/validation/findingsReport.js.map +1 -1
  258. package/package.json +2 -1
  259. package/remediate-code.mjs +15 -0
  260. package/wrapper/remediate-code-wrapper-install-hosts.mjs +45 -4
  261. package/wrapper/remediate-code-wrapper-install-renderers.mjs +12 -2
@@ -1 +1 @@
1
- {"version":3,"file":"flowPlanning.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/flowPlanning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAY/D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAWD,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,oBAAoB,EACnC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACvC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GACpB,eAAe,EAAE,CA4DnB"}
1
+ {"version":3,"file":"flowPlanning.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/flowPlanning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AA8B/D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,EAAE,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,eAAe,GAAG,eAAe,EAAE,GAAG,iBAAiB,CAAC;AAkBpE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,oBAAoB,EACnC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EACvD,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B,eAAe,CAiEjB"}
@@ -1,26 +1,81 @@
1
- const FLOW_REVIEW_LENSES = [
2
- "security",
3
- "reliability",
4
- "correctness",
5
- "data_integrity",
6
- "operability",
7
- "performance",
8
- "observability",
9
- ];
1
+ import { LENS_REGISTRY, isLens } from "../types.js";
2
+ /**
3
+ * The FLOW-LENS POLICY — one source, three call sites.
4
+ *
5
+ * A flow's declared `concerns` are free strings; the policy says which of them
6
+ * are lenses a flow may be PLANNED against (here), marked REQUIRED for coverage
7
+ * against (`buildFlowCoverage`), and REQUEUED against (`buildFlowRequeueTasks`).
8
+ * All three must answer identically or a flow can be required under a lens
9
+ * planning refuses to schedule.
10
+ *
11
+ * They did not, and the divergence was the defect: this module hand-copied a
12
+ * seven-entry lens array (security, reliability, correctness, data_integrity,
13
+ * operability, performance, observability) while coverage and requeue both
14
+ * admitted every canonical lens through `isLens`. A flow whose only concern was
15
+ * maintainability, architecture, tests, or config_deployment therefore got zero
16
+ * planning blocks while coverage still marked that lens required — the flow
17
+ * could never reach status `complete` via the planning path and was only
18
+ * rescued by the requeue fallback, which over-produces one task per
19
+ * (flow, lens, path) instead of the single claimed block planning would emit.
20
+ *
21
+ * The policy is now drawn, by all three, from the ONE lens registry in
22
+ * `src/audit/types.ts`: membership is `isLens` (derived from `ALL_LENSES`) and
23
+ * ordering is `order_weight` (`LENS_REGISTRY`). Adding a lens to that registry
24
+ * reaches flow planning with no edit here.
25
+ */
26
+ const FLOW_LENS_ORDER = new Map(LENS_REGISTRY.map((definition) => [definition.id, definition.order_weight]));
27
+ /**
28
+ * Select the reviewable lenses from a flow's declared concerns — the single
29
+ * membership draw shared by planning, coverage, and requeue. A concern that is
30
+ * not a canonical lens is SKIPPED rather than thrown on, consistent with the
31
+ * filter-based guards elsewhere in the orchestrator: one stray non-canonical
32
+ * concern must not abort a whole flow's planning or requeue.
33
+ */
34
+ export function selectFlowLenses(concerns) {
35
+ return concerns.filter((concern) => isLens(concern));
36
+ }
37
+ /**
38
+ * Task-ordering priority for a claimed flow block — lower sorts earlier.
39
+ * Derived from {@link LENS_REGISTRY}'s `order_weight` so no second hand-copied
40
+ * lens list backs the ordering. A non-canonical lens (which the membership draw
41
+ * above already excludes) sorts last.
42
+ */
43
+ export function flowLensPriority(lens) {
44
+ return FLOW_LENS_ORDER.get(lens) ?? Number.MAX_SAFE_INTEGER;
45
+ }
10
46
  function lensPathKey(lens, path) {
11
47
  return `${lens}:${path}`;
12
48
  }
13
- function flowLensPriority(lens) {
14
- const index = FLOW_REVIEW_LENSES.indexOf(lens);
15
- return index >= 0 ? index : FLOW_REVIEW_LENSES.length;
49
+ function attachClaimContract(blocks, pending, assigned) {
50
+ return Object.defineProperties(blocks, {
51
+ blocks: { value: blocks, enumerable: false },
52
+ pending: { value: pending, enumerable: false },
53
+ assigned: { value: assigned, enumerable: false },
54
+ });
16
55
  }
56
+ /**
57
+ * Claim the highest-priority critical-flow review blocks out of the pending
58
+ * work set.
59
+ *
60
+ * PRECONDITION (seam audit-coverage-path-keyspace → here, caller to callee):
61
+ * every path in `criticalFlows`, in `pendingByLens`, and in the `lens:path`
62
+ * keys of `assigned` is already normalized into ONE key space by the caller.
63
+ * This module does no normalizing of its own — an unnormalized path simply
64
+ * fails to intersect and the flow is silently under-claimed. The sole caller,
65
+ * `buildChunkedAuditTasks`, now SATISFIES that precondition by normalizing every
66
+ * repo path once at its own boundary, rather than assuming it upstream.
67
+ *
68
+ * NO WRITE-BACK: the post-claim state is reported ONLY on the returned
69
+ * {@link FlowClaimContract}. The parameters are `Readonly` collections so
70
+ * reintroducing an in-place mutation is a compile error, not a convention —
71
+ * the by-reference channel this used to ALSO write through was a second,
72
+ * invisible return value that a caller had to know to look for.
73
+ */
17
74
  export function claimFlowReviewBlocks(criticalFlows, pendingByLens, assigned) {
18
75
  const candidates = [];
19
76
  for (const flow of criticalFlows.flows) {
20
77
  const flowPaths = [...new Set(flow.paths)].sort((a, b) => a.localeCompare(b));
21
- const desiredLenses = flow.concerns
22
- .filter((concern) => FLOW_REVIEW_LENSES.includes(concern))
23
- .sort((a, b) => flowLensPriority(a) - flowLensPriority(b));
78
+ const desiredLenses = selectFlowLenses(flow.concerns).sort((a, b) => flowLensPriority(a) - flowLensPriority(b));
24
79
  for (const lens of desiredLenses) {
25
80
  const pendingPaths = pendingByLens.get(lens);
26
81
  if (!pendingPaths || pendingPaths.size === 0) {
@@ -46,20 +101,24 @@ export function claimFlowReviewBlocks(criticalFlows, pendingByLens, assigned) {
46
101
  return lensDelta;
47
102
  return a.flow_id.localeCompare(b.flow_id);
48
103
  });
104
+ // Post-claim state, derived from the arguments into fresh collections.
105
+ const claimedKeys = new Set(assigned);
106
+ const remainingPending = new Map([...pendingByLens].map(([lens, paths]) => [lens, new Set(paths)]));
49
107
  const blocks = [];
50
108
  for (const candidate of candidates) {
51
- const unclaimedPaths = candidate.file_paths.filter((path) => !assigned.has(lensPathKey(candidate.lens, path)));
109
+ const unclaimedPaths = candidate.file_paths.filter((path) => !claimedKeys.has(lensPathKey(candidate.lens, path)));
52
110
  if (unclaimedPaths.length === 0) {
53
111
  continue;
54
112
  }
55
113
  for (const path of unclaimedPaths) {
56
- assigned.add(lensPathKey(candidate.lens, path));
114
+ claimedKeys.add(lensPathKey(candidate.lens, path));
115
+ remainingPending.get(candidate.lens)?.delete(path);
57
116
  }
58
117
  blocks.push({
59
118
  ...candidate,
60
119
  file_paths: unclaimedPaths,
61
120
  });
62
121
  }
63
- return blocks;
122
+ return attachClaimContract(blocks, remainingPending, claimedKeys);
64
123
  }
65
124
  //# sourceMappingURL=flowPlanning.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowPlanning.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/flowPlanning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flowPlanning.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/flowPlanning.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"flowRequeue.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/flowRequeue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AA4B/D,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,oBAAoB,EACnC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,uBAAuB,CAAC,EAAE,uBAAuB,EAAE,GAClD,SAAS,EAAE,CAuEb"}
1
+ {"version":3,"file":"flowRequeue.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/flowRequeue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AA6B/D,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,oBAAoB,EACnC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,uBAAuB,CAAC,EAAE,uBAAuB,EAAE,GAClD,SAAS,EAAE,CAkEb"}
@@ -1,4 +1,4 @@
1
- import { isLens } from "../types.js";
1
+ import { selectFlowLenses } from "./flowPlanning.js";
2
2
  import { getExternalSignalPaths } from "./requeueUtils.js";
3
3
  function taskPriority(hasExternalSignal, lens) {
4
4
  if (hasExternalSignal &&
@@ -25,9 +25,11 @@ export function buildFlowRequeueTasks(criticalFlows, flowCoverage, coverageMatri
25
25
  if (!flow) {
26
26
  continue;
27
27
  }
28
- const requiredLenses = Array.isArray(record.required_lenses)
29
- ? record.required_lenses.filter((lens) => typeof lens === "string")
30
- : [];
28
+ // Requeue follows the SAME flow-lens policy planning claims against and
29
+ // coverage marks required against `selectFlowLenses`, drawn from the one
30
+ // lens registry. A non-canonical lens recorded in flow coverage is skipped
31
+ // (not thrown on): one stray value must not abort the whole requeue.
32
+ const requiredLenses = selectFlowLenses(Array.isArray(record.required_lenses) ? record.required_lenses : []);
31
33
  const completedLenses = new Set(Array.isArray(record.completed_lenses)
32
34
  ? record.completed_lenses.filter((lens) => typeof lens === "string")
33
35
  : []);
@@ -36,12 +38,6 @@ export function buildFlowRequeueTasks(criticalFlows, flowCoverage, coverageMatri
36
38
  ? flow.paths.filter((path) => typeof path === "string")
37
39
  : [];
38
40
  for (const lensName of missingLenses) {
39
- // Skip (rather than throw on) an unsupported lens value, consistent with
40
- // the filter-based lens guards elsewhere in the orchestrator: a stray
41
- // non-canonical lens in flow coverage should not abort the whole requeue.
42
- if (!isLens(lensName)) {
43
- continue;
44
- }
45
41
  for (const path of flowPaths) {
46
42
  if (!fileStillNeedsLens(coverageByPath, path, lensName)) {
47
43
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"flowRequeue.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/flowRequeue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flowRequeue.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/flowRequeue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"partitionTaskGraph.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/partitionTaskGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAEhC,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,qBAAqB,CAAC;IACvC,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AA4BD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,iBAAiB,EACxB,GAAG,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC9B,sBAAsB,CA+BxB"}
1
+ {"version":3,"file":"partitionTaskGraph.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/partitionTaskGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAEhC,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,qBAAqB,CAAC;IACvC,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AA4BD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,iBAAiB,EACxB,GAAG,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC9B,sBAAsB,CAkCxB"}
@@ -1,4 +1,4 @@
1
- import { buildContentCoherenceTrace, } from "../../shared/decompose/contentCoherence.js";
1
+ import { TASK_DRAW_COHERENCE_POLICY, buildContentCoherenceTrace, } from "../../shared/decompose/contentCoherence.js";
2
2
  import { TaskAffinityGraphSchema, } from "./taskAffinityGraph.js";
3
3
  function compareCodeUnits(left, right) {
4
4
  return left < right ? -1 : left > right ? 1 : 0;
@@ -37,7 +37,7 @@ export function buildTaskCoherencePartition(input, ..._ignored) {
37
37
  tags: node.lens.length > 0 ? [node.lens] : [],
38
38
  })),
39
39
  relationships: relationshipsFromGraph(graph),
40
- });
40
+ }, TASK_DRAW_COHERENCE_POLICY);
41
41
  const nodeById = new Map(graph.nodes.map((node) => [node.task_id, node]));
42
42
  const packets = coherenceTrace.components.map((taskIds, index) => {
43
43
  const nodes = taskIds.map((taskId) => nodeById.get(taskId));
@@ -1 +1 @@
1
- {"version":3,"file":"partitionTaskGraph.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/partitionTaskGraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"partitionTaskGraph.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/partitionTaskGraph.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"requeueFold.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/requeueFold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,SAAS,SAAS,EAAE,EAClC,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAClC,SAAS,EAAE,CAkBb;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C,GAAG,SAAS,EAAE,CAgBd"}
1
+ {"version":3,"file":"requeueFold.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/requeueFold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,SAAS,SAAS,EAAE,EAClC,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAClC,SAAS,EAAE,CAkBb;AA4BD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C,GAAG,SAAS,EAAE,CAUd"}
@@ -29,6 +29,23 @@ export function selectUncoveredRequeueTasks(requeueTasks, auditTasks, effectiveL
29
29
  return !fullyCovered;
30
30
  });
31
31
  }
32
+ /**
33
+ * The requeue fold's `file_line_counts` enrichment (INV-PLAN-PERSIST-COMPLETE
34
+ * half 2) — a MEASURED-ONLY projection of the line index over a task's paths.
35
+ *
36
+ * `file_line_counts` is a `Record<string, number>`, schema-constrained downstream
37
+ * to `z.number().int().min(0)`. A path is therefore either present with a real
38
+ * count or ABSENT: an absent index key, a `null`, and the unmeasured sentinel
39
+ * (`UNMEASURED_LINE_COUNT`, NaN — which JSON-serializes as `null`) all drop the
40
+ * key rather than emit a value the contract cannot hold. This filter is the only
41
+ * thing standing between the diagnostic index's "unmeasured" concept and a
42
+ * persisted numeric contract, so it is stated once, here, as its own unit.
43
+ */
44
+ function measuredLineCounts(filePaths, lineIndex) {
45
+ return Object.fromEntries(filePaths
46
+ .filter((path) => lineIndex[path] != null && !isUnmeasuredLineCount(lineIndex[path]))
47
+ .map((path) => [path, lineIndex[path]]));
48
+ }
32
49
  /**
33
50
  * Select the genuinely-uncovered requeue tasks and enrich the survivors with
34
51
  * line-count hints — the whole fold, so neither draw re-derives half of it.
@@ -40,11 +57,7 @@ export function foldPendingRequeueTasks(params) {
40
57
  const { lineIndex } = params;
41
58
  return selectUncoveredRequeueTasks(params.requeueTasks, params.auditTasks, params.effectiveLenses).map((task) => ({
42
59
  ...task,
43
- file_line_counts: Object.fromEntries(task.file_paths
44
- // Exclude the unmeasured sentinel (NaN) alongside absent keys: NaN would
45
- // JSON-serialize as null and violate the numeric file_line_counts contract.
46
- .filter((path) => lineIndex[path] != null && !isUnmeasuredLineCount(lineIndex[path]))
47
- .map((path) => [path, lineIndex[path]])),
60
+ file_line_counts: measuredLineCounts(task.file_paths, lineIndex),
48
61
  }));
49
62
  }
50
63
  //# sourceMappingURL=requeueFold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requeueFold.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/requeueFold.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,YAAkC,EAClC,UAAgC,EAChC,eAAmC;IAEnC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QACvE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,aAAa,GACjB,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAClE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,aAAa,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1E,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,YAAY,GAChB,OAAO,KAAK,SAAS;YACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,YAAY,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAKvC;IACC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,OAAO,2BAA2B,CAChC,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,eAAe,CACvB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,GAAG,IAAI;QACP,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAClC,IAAI,CAAC,UAAU;YACb,yEAAyE;YACzE,4EAA4E;aAC3E,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aACpF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1C;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"requeueFold.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/requeueFold.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,YAAkC,EAClC,UAAgC,EAChC,eAAmC;IAEnC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QACvE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,aAAa,GACjB,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAClE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,aAAa,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1E,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,YAAY,GAChB,OAAO,KAAK,SAAS;YACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,YAAY,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,kBAAkB,CACzB,SAA4B,EAC5B,SAAiC;IAEjC,OAAO,MAAM,CAAC,WAAW,CACvB,SAAS;SACN,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CACrE;SACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAKvC;IACC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,OAAO,2BAA2B,CAChC,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,eAAe,CACvB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,GAAG,IAAI;QACP,gBAAgB,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;KACjE,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -1,4 +1,27 @@
1
1
  import type { ArtifactBundle } from "../io/artifacts.js";
2
+ /**
3
+ * The staleness pass's result: the stale set, carrying the DEFERRED set beside
4
+ * it (INV-SSP-DEFERRED-SET-REPORTED).
5
+ *
6
+ * `deferred` names every present downstream whose staleness this call declined
7
+ * to decide because the edge from a stale-and-pending upstream is
8
+ * slice-projected — the compare only becomes meaningful once that upstream has
9
+ * actually re-derived and restamped its metadata (see the transitive-closure
10
+ * comment below). A deferral is NOT "not stale": it is "not decided yet", and a
11
+ * caller that treats a single result as the full truth while `deferred` is
12
+ * non-empty is under-reporting. Reporting it is what makes that visible instead
13
+ * of silent — the consolidated staleness record NAMES the deferred artifacts.
14
+ *
15
+ * It is a `Set<string>` SUBCLASS on purpose: every consumer that only wants the
16
+ * stale set (`deriveAuditState`, the drain boundary) keeps its `Set<string>`
17
+ * type and behaviour unchanged, so the deferred channel can never be dropped by
18
+ * a caller "forgetting" a second return value.
19
+ */
20
+ export declare class StaleArtifactSet extends Set<string> {
21
+ /** Downstreams held behind a slice projection this call — always disjoint from the stale set. */
22
+ readonly deferred: ReadonlySet<string>;
23
+ constructor(stale?: Iterable<string>, deferred?: Iterable<string>);
24
+ }
2
25
  /** Options controlling the staleness pass's observability side effect. */
3
26
  export interface StalenessOptions {
4
27
  /**
@@ -24,5 +47,5 @@ export declare function emitStalenessRecord(stale: Set<string>, reason?: string)
24
47
  * consolidated record with the migration `reason`, matching the inline record.
25
48
  */
26
49
  export declare function isMetadataMigrationStaleness(bundle: ArtifactBundle): boolean;
27
- export declare function computeStaleArtifacts(bundle: ArtifactBundle, options?: StalenessOptions): Set<string>;
50
+ export declare function computeStaleArtifacts(bundle: ArtifactBundle, options?: StalenessOptions): StaleArtifactSet;
28
51
  //# sourceMappingURL=staleness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"staleness.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/staleness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA6BzD,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAgBD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAaN;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAG5E;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,gBAAqB,GAC7B,GAAG,CAAC,MAAM,CAAC,CA0Jb"}
1
+ {"version":3,"file":"staleness.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/staleness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA6BzD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,gBAAiB,SAAQ,GAAG,CAAC,MAAM,CAAC;IAC/C,iGAAiG;IACjG,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;gBAE3B,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAM,EAAE,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAM;CAM1E;AAgED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAgBD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAoBN;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAG5E;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,gBAAqB,GAC7B,gBAAgB,CAwMlB"}
@@ -13,6 +13,82 @@ function computeContentHash(artifactName, bundle) {
13
13
  // The canonical "X depends on Y" table (ARC-cebe3421) — same single source of
14
14
  // truth computeArtifactMetadata records against.
15
15
  const ARTIFACT_DEPENDENCIES_MAP = ARTIFACT_DEPENDS_ON_MAP;
16
+ /**
17
+ * The staleness pass's result: the stale set, carrying the DEFERRED set beside
18
+ * it (INV-SSP-DEFERRED-SET-REPORTED).
19
+ *
20
+ * `deferred` names every present downstream whose staleness this call declined
21
+ * to decide because the edge from a stale-and-pending upstream is
22
+ * slice-projected — the compare only becomes meaningful once that upstream has
23
+ * actually re-derived and restamped its metadata (see the transitive-closure
24
+ * comment below). A deferral is NOT "not stale": it is "not decided yet", and a
25
+ * caller that treats a single result as the full truth while `deferred` is
26
+ * non-empty is under-reporting. Reporting it is what makes that visible instead
27
+ * of silent — the consolidated staleness record NAMES the deferred artifacts.
28
+ *
29
+ * It is a `Set<string>` SUBCLASS on purpose: every consumer that only wants the
30
+ * stale set (`deriveAuditState`, the drain boundary) keeps its `Set<string>`
31
+ * type and behaviour unchanged, so the deferred channel can never be dropped by
32
+ * a caller "forgetting" a second return value.
33
+ */
34
+ export class StaleArtifactSet extends Set {
35
+ /** Downstreams held behind a slice projection this call — always disjoint from the stale set. */
36
+ deferred;
37
+ constructor(stale = [], deferred = []) {
38
+ super(stale);
39
+ // A downstream that ended up stale by some OTHER path was decided, not
40
+ // deferred — the two sets are disjoint by construction.
41
+ this.deferred = new Set([...deferred].filter((name) => !this.has(name)));
42
+ }
43
+ }
44
+ /**
45
+ * Classify one artifact's readability against its recorded metadata entry.
46
+ * An artifact the manifest does not track has nothing to compare against, so it
47
+ * reads as `intact` (the downstream-of-absent fail-safe below is what covers
48
+ * that case).
49
+ *
50
+ * `partial` is reported only for an artifact with declared upstreams: the
51
+ * exemption is literally the `.length === 0` gate on `ARTIFACT_DEPENDS_ON_MAP`
52
+ * below — a MAP-DECLARED LEAF, which is NOT a synonym for an input (several
53
+ * leaves are pipeline-produced). For a true host-append input the exemption is
54
+ * FORCED: an appended input stales only its DOWNSTREAM, pinned by
55
+ * agent-feedback-reflections.test.ts. For a leaf whose own producing obligation
56
+ * gates on its staleness (state.ts's `syntax_resolved`, `confirm_intent`) it is
57
+ * a recorded CHOICE, not a necessity — this pass simply never asserts `partial`
58
+ * for it. Either way a truncated leaf body is caught only through its
59
+ * dependents' hash compare, or at its producer's next restamp.
60
+ */
61
+ function classifyArtifactPresence(bundle, metadata, artifactName) {
62
+ if (!present(bundle, artifactName))
63
+ return "absent";
64
+ const entry = metadata.artifacts[artifactName];
65
+ if (!entry)
66
+ return "intact";
67
+ if ((ARTIFACT_DEPENDENCIES_MAP[artifactName] ?? []).length === 0) {
68
+ return "intact";
69
+ }
70
+ // An UNHASHABLE body is `partial` too, and the classification must happen
71
+ // here rather than escaping: `hashArtifactValue`'s canonicalizer throws on a
72
+ // malformed `audit_tasks.json` / `task_affinity_graph.json`
73
+ // (shared/affinityArtifacts.ts — a dangling edge, a duplicate id, a missing
74
+ // field), and this pass reaches every tracked artifact unconditionally, so a
75
+ // truncated affinity body would otherwise take down the whole staleness
76
+ // computation — the shape-mismatch throw the migration fail-safe below
77
+ // forbids. A body that cannot be hashed is definitionally not what the
78
+ // manifest describes, which is exactly `partial`, and it converges the same
79
+ // way: the next `computeArtifactMetadata` restamps (or fails loudly in the
80
+ // producer, where a malformed body IS an error).
81
+ let currentHash;
82
+ try {
83
+ currentHash = computeContentHash(artifactName, bundle);
84
+ }
85
+ catch {
86
+ return "partial";
87
+ }
88
+ if (currentHash === undefined)
89
+ return "absent";
90
+ return entry.content_hash === currentHash ? "intact" : "partial";
91
+ }
16
92
  /**
17
93
  * Emit the single canonical staleness stderr record for a computed stale set.
18
94
  * Kept separate from `computeStaleArtifacts` so the pure staleness computation
@@ -35,15 +111,21 @@ export function resetStalenessDedup() {
35
111
  lastEmittedStalenessKey = null;
36
112
  }
37
113
  export function emitStalenessRecord(stale, reason) {
38
- if (stale.size === 0)
114
+ // INV-SSP-DEFERRED-SET-REPORTED: a stale set computed by this module carries
115
+ // its deferred downstreams; a bare `Set` (a caller reporting a hand-built set)
116
+ // simply has none. The record NAMES them — omitting a deferred downstream is
117
+ // exactly the silent under-report this reporting exists to make impossible.
118
+ const deferred = stale instanceof StaleArtifactSet ? [...stale.deferred].sort() : [];
119
+ if (stale.size === 0 && deferred.length === 0)
39
120
  return;
40
- const key = JSON.stringify([[...stale].sort(), reason ?? null]);
121
+ const key = JSON.stringify([[...stale].sort(), deferred, reason ?? null]);
41
122
  if (key === lastEmittedStalenessKey)
42
123
  return;
43
124
  lastEmittedStalenessKey = key;
44
125
  process.stderr.write(JSON.stringify({
45
126
  kind: "staleness",
46
127
  stale_artifacts: [...stale].sort(),
128
+ ...(deferred.length > 0 ? { deferred_artifacts: deferred } : {}),
47
129
  ...(reason ? { reason } : {}),
48
130
  ts: new Date().toISOString(),
49
131
  }) + "\n");
@@ -61,6 +143,10 @@ export function isMetadataMigrationStaleness(bundle) {
61
143
  export function computeStaleArtifacts(bundle, options = {}) {
62
144
  const emit = options.emit ?? true;
63
145
  const stale = new Set();
146
+ // Downstreams the transitive-closure walk declined to decide because a slice
147
+ // projection guards the edge from a stale-and-pending upstream — reported to
148
+ // the caller and named in the emitted record (INV-SSP-DEFERRED-SET-REPORTED).
149
+ const deferred = new Set();
64
150
  const metadata = bundle.artifact_metadata;
65
151
  // Metadata-migration fail-safe (CE-007): an old-shape (pre-F1) manifest —
66
152
  // present but absent/older `metadata_schema_version`, or that would not decode
@@ -75,9 +161,13 @@ export function computeStaleArtifacts(bundle, options = {}) {
75
161
  if (present(bundle, artifactName))
76
162
  stale.add(artifactName);
77
163
  }
78
- if (emit)
79
- emitStalenessRecord(stale, "metadata_schema_version_migration");
80
- return stale;
164
+ // Everything present is already stale — nothing is held back, so the
165
+ // degrade reports an EMPTY deferred set (never an absent one).
166
+ const migrationStale = new StaleArtifactSet(stale);
167
+ if (emit) {
168
+ emitStalenessRecord(migrationStale, "metadata_schema_version_migration");
169
+ }
170
+ return migrationStale;
81
171
  }
82
172
  if (metadata) {
83
173
  for (const [artifactName, entry] of Object.entries(metadata.artifacts)) {
@@ -142,18 +232,49 @@ export function computeStaleArtifacts(bundle, options = {}) {
142
232
  }
143
233
  }
144
234
  if (metadata) {
145
- for (const [upstream, downstreamList] of Object.entries(ARTIFACT_DEPENDENTS_MAP)) {
146
- if (!downstreamList)
235
+ // Presence pass over every artifact this manifest tracks (plus every DAG
236
+ // upstream), classifying each into the THREE states an ArtifactBundle can
237
+ // actually hold — `absent`, `partial`, `intact` — rather than the
238
+ // present/absent pair alone.
239
+ //
240
+ // `partial` is the one that used to be invisible: an artifact PRESENT in the
241
+ // bundle whose body no longer hashes to the `content_hash` recorded for it
242
+ // (a truncated / partially-written / externally-mutated copy). Present/absent
243
+ // logic misclassifies it as fully-fresh-and-present — its own obligation
244
+ // never re-fires, so a downstream re-derives against a body nobody re-derived
245
+ // and then RECORDS that corrupt input as its new baseline. It is stale: the
246
+ // manifest no longer describes what is there. Fail-safe direction, and it
247
+ // converges — the next `computeArtifactMetadata` restamps the entry.
248
+ //
249
+ // `absent` keeps the original downstream-of-absent fail-safe: a present
250
+ // downstream with NO metadata entry of its own has nothing to compare, so a
251
+ // vanished upstream must stale it directly.
252
+ const trackedArtifacts = new Set([
253
+ ...Object.keys(metadata.artifacts),
254
+ ...Object.keys(ARTIFACT_DEPENDENTS_MAP),
255
+ ]);
256
+ for (const artifactName of [...trackedArtifacts].sort()) {
257
+ if (artifactName === "artifact_metadata.json")
147
258
  continue;
148
- if (upstream === "tooling_manifest.json" && !present(bundle, upstream)) {
259
+ const presence = classifyArtifactPresence(bundle, metadata, artifactName);
260
+ if (presence === "partial") {
261
+ stale.add(artifactName);
149
262
  continue;
150
263
  }
151
- if (!present(bundle, upstream)) {
152
- for (const downstream of downstreamList) {
153
- const hasMetadataEntry = Boolean(metadata.artifacts[downstream]);
154
- if (present(bundle, downstream) && !hasMetadataEntry) {
155
- stale.add(downstream);
156
- }
264
+ if (presence === "intact")
265
+ continue;
266
+ // tooling_manifest.json is an OPTIONAL probe: its absence is the normal
267
+ // case, never an upstream that vanished.
268
+ // ORDERING: the `partial` branch above runs FIRST, so this exemption only
269
+ // ever sees `absent` — a tooling_manifest classified `partial` would be
270
+ // staled before reaching here, inert today only because it declares no
271
+ // upstreams and so short-circuits as `intact` at the leaf gate.
272
+ if (artifactName === "tooling_manifest.json")
273
+ continue;
274
+ for (const downstream of ARTIFACT_DEPENDENTS_MAP[artifactName] ?? []) {
275
+ const hasMetadataEntry = Boolean(metadata.artifacts[downstream]);
276
+ if (present(bundle, downstream) && !hasMetadataEntry) {
277
+ stale.add(downstream);
157
278
  }
158
279
  }
159
280
  }
@@ -180,9 +301,18 @@ export function computeStaleArtifacts(bundle, options = {}) {
180
301
  // downstream's, and staleness re-derives each drain iteration, so a
181
302
  // slice moved by the upstream's re-derivation still fires the per-edge
182
303
  // compare before the downstream's obligation is reached.
304
+ //
305
+ // That deferral is a DECISION POSTPONED, not a verdict of "fresh", so it
306
+ // is REPORTED rather than silent: the downstream is recorded as deferred
307
+ // and rides out on the result (INV-SSP-DEFERRED-SET-REPORTED). This
308
+ // module states the ordering it is safe under; it does not police it —
309
+ // the PRIORITY-ordering guarantee is the CALLER's precondition, owned and
310
+ // tested there. What this module owes the caller is that a held-back
311
+ // downstream is never mistaken for a decided-clean one.
183
312
  const entry = metadata?.artifacts[downstream];
184
313
  if (entry?.dependency_slices?.[upstream] !== undefined &&
185
314
  hasDependencySliceProjection(downstream, upstream)) {
315
+ deferred.add(downstream);
186
316
  continue;
187
317
  }
188
318
  stale.add(downstream);
@@ -190,8 +320,9 @@ export function computeStaleArtifacts(bundle, options = {}) {
190
320
  }
191
321
  }
192
322
  }
323
+ const result = new StaleArtifactSet(stale, deferred);
193
324
  if (emit)
194
- emitStalenessRecord(stale);
195
- return stale;
325
+ emitStalenessRecord(result);
326
+ return result;
196
327
  }
197
328
  //# sourceMappingURL=staleness.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"staleness.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/staleness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"staleness.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/staleness.ts"],"names":[],"mappings":"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"}