audit-tools 0.48.0 → 0.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/README.md +3 -1
  2. package/dist/audit/clarification/partition.d.ts.map +1 -1
  3. package/dist/audit/clarification/partition.js +2 -1
  4. package/dist/audit/clarification/partition.js.map +1 -1
  5. package/dist/audit/clarification/voiQueue.d.ts.map +1 -1
  6. package/dist/audit/clarification/voiQueue.js +2 -1
  7. package/dist/audit/clarification/voiQueue.js.map +1 -1
  8. package/dist/audit/cli/args.d.ts +27 -0
  9. package/dist/audit/cli/args.d.ts.map +1 -1
  10. package/dist/audit/cli/args.js +32 -2
  11. package/dist/audit/cli/args.js.map +1 -1
  12. package/dist/audit/cli/dispatch/hostHandoff.d.ts +1 -1
  13. package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
  14. package/dist/audit/cli/dispatch/hostHandoff.js +32 -55
  15. package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
  16. package/dist/audit/cli/explainTaskCommand.d.ts.map +1 -1
  17. package/dist/audit/cli/explainTaskCommand.js +2 -1
  18. package/dist/audit/cli/explainTaskCommand.js.map +1 -1
  19. package/dist/audit/cli/laneValidators.d.ts +0 -2
  20. package/dist/audit/cli/laneValidators.d.ts.map +1 -1
  21. package/dist/audit/cli/laneValidators.js +2 -6
  22. package/dist/audit/cli/laneValidators.js.map +1 -1
  23. package/dist/audit/cli/lineIndex.d.ts.map +1 -1
  24. package/dist/audit/cli/lineIndex.js +2 -1
  25. package/dist/audit/cli/lineIndex.js.map +1 -1
  26. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  27. package/dist/audit/cli/nextStepHelpers.js +4 -4
  28. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  29. package/dist/audit/contracts/findingContractPrompt.d.ts.map +1 -1
  30. package/dist/audit/contracts/findingContractPrompt.js +2 -2
  31. package/dist/audit/contracts/findingContractPrompt.js.map +1 -1
  32. package/dist/audit/decompose/buildStructureDecomposition.d.ts.map +1 -1
  33. package/dist/audit/decompose/buildStructureDecomposition.js +5 -8
  34. package/dist/audit/decompose/buildStructureDecomposition.js.map +1 -1
  35. package/dist/audit/decompose/findings.js +2 -2
  36. package/dist/audit/decompose/findings.js.map +1 -1
  37. package/dist/audit/decompose/sources.d.ts.map +1 -1
  38. package/dist/audit/decompose/sources.js +8 -11
  39. package/dist/audit/decompose/sources.js.map +1 -1
  40. package/dist/audit/extractors/analyzers/merge.d.ts.map +1 -1
  41. package/dist/audit/extractors/analyzers/merge.js +4 -3
  42. package/dist/audit/extractors/analyzers/merge.js.map +1 -1
  43. package/dist/audit/extractors/browserExtension.d.ts.map +1 -1
  44. package/dist/audit/extractors/browserExtension.js +2 -4
  45. package/dist/audit/extractors/browserExtension.js.map +1 -1
  46. package/dist/audit/extractors/commentDecomposition.d.ts.map +1 -1
  47. package/dist/audit/extractors/commentDecomposition.js +15 -29
  48. package/dist/audit/extractors/commentDecomposition.js.map +1 -1
  49. package/dist/audit/extractors/dataStateCoupling.d.ts.map +1 -1
  50. package/dist/audit/extractors/dataStateCoupling.js +3 -2
  51. package/dist/audit/extractors/dataStateCoupling.js.map +1 -1
  52. package/dist/audit/extractors/designAssessment.d.ts.map +1 -1
  53. package/dist/audit/extractors/designAssessment.js +6 -5
  54. package/dist/audit/extractors/designAssessment.js.map +1 -1
  55. package/dist/audit/extractors/disposition.d.ts.map +1 -1
  56. package/dist/audit/extractors/disposition.js +1 -4
  57. package/dist/audit/extractors/disposition.js.map +1 -1
  58. package/dist/audit/extractors/docsDigest.d.ts.map +1 -1
  59. package/dist/audit/extractors/docsDigest.js +6 -20
  60. package/dist/audit/extractors/docsDigest.js.map +1 -1
  61. package/dist/audit/extractors/fileInventory.d.ts.map +1 -1
  62. package/dist/audit/extractors/fileInventory.js +2 -1
  63. package/dist/audit/extractors/fileInventory.js.map +1 -1
  64. package/dist/audit/extractors/flows.js +3 -3
  65. package/dist/audit/extractors/flows.js.map +1 -1
  66. package/dist/audit/extractors/fsIntake.d.ts.map +1 -1
  67. package/dist/audit/extractors/fsIntake.js +4 -7
  68. package/dist/audit/extractors/fsIntake.js.map +1 -1
  69. package/dist/audit/extractors/graph.d.ts +1 -1
  70. package/dist/audit/extractors/graph.d.ts.map +1 -1
  71. package/dist/audit/extractors/graph.js +9 -12
  72. package/dist/audit/extractors/graph.js.map +1 -1
  73. package/dist/audit/extractors/graphManifestEdges/jsonc.d.ts +10 -0
  74. package/dist/audit/extractors/graphManifestEdges/jsonc.d.ts.map +1 -1
  75. package/dist/audit/extractors/graphManifestEdges/jsonc.js +12 -50
  76. package/dist/audit/extractors/graphManifestEdges/jsonc.js.map +1 -1
  77. package/dist/audit/extractors/graphPythonImports.js +2 -2
  78. package/dist/audit/extractors/graphPythonImports.js.map +1 -1
  79. package/dist/audit/extractors/graphRoutes.d.ts.map +1 -1
  80. package/dist/audit/extractors/graphRoutes.js +4 -3
  81. package/dist/audit/extractors/graphRoutes.js.map +1 -1
  82. package/dist/audit/extractors/graphSignals.d.ts.map +1 -1
  83. package/dist/audit/extractors/graphSignals.js +3 -2
  84. package/dist/audit/extractors/graphSignals.js.map +1 -1
  85. package/dist/audit/extractors/graphSuites.d.ts.map +1 -1
  86. package/dist/audit/extractors/graphSuites.js +3 -2
  87. package/dist/audit/extractors/graphSuites.js.map +1 -1
  88. package/dist/audit/extractors/readFileText.d.ts +12 -0
  89. package/dist/audit/extractors/readFileText.d.ts.map +1 -0
  90. package/dist/audit/extractors/readFileText.js +23 -0
  91. package/dist/audit/extractors/readFileText.js.map +1 -0
  92. package/dist/audit/extractors/risk.d.ts.map +1 -1
  93. package/dist/audit/extractors/risk.js +3 -2
  94. package/dist/audit/extractors/risk.js.map +1 -1
  95. package/dist/audit/io/artifacts.d.ts +0 -28
  96. package/dist/audit/io/artifacts.d.ts.map +1 -1
  97. package/dist/audit/io/artifacts.js +1 -65
  98. package/dist/audit/io/artifacts.js.map +1 -1
  99. package/dist/audit/io/toolingManifest.d.ts.map +1 -1
  100. package/dist/audit/io/toolingManifest.js +3 -2
  101. package/dist/audit/io/toolingManifest.js.map +1 -1
  102. package/dist/audit/orchestrator/artifactMetadata.d.ts.map +1 -1
  103. package/dist/audit/orchestrator/artifactMetadata.js +2 -2
  104. package/dist/audit/orchestrator/artifactMetadata.js.map +1 -1
  105. package/dist/audit/orchestrator/autoFixExecutor.d.ts.map +1 -1
  106. package/dist/audit/orchestrator/autoFixExecutor.js +2 -1
  107. package/dist/audit/orchestrator/autoFixExecutor.js.map +1 -1
  108. package/dist/audit/orchestrator/charterPackets.d.ts.map +1 -1
  109. package/dist/audit/orchestrator/charterPackets.js +4 -3
  110. package/dist/audit/orchestrator/charterPackets.js.map +1 -1
  111. package/dist/audit/orchestrator/dependencySlices.d.ts.map +1 -1
  112. package/dist/audit/orchestrator/dependencySlices.js +4 -6
  113. package/dist/audit/orchestrator/dependencySlices.js.map +1 -1
  114. package/dist/audit/orchestrator/designReviewProjection.d.ts.map +1 -1
  115. package/dist/audit/orchestrator/designReviewProjection.js +2 -2
  116. package/dist/audit/orchestrator/designReviewProjection.js.map +1 -1
  117. package/dist/audit/orchestrator/designReviewSnapshot.d.ts.map +1 -1
  118. package/dist/audit/orchestrator/designReviewSnapshot.js +2 -5
  119. package/dist/audit/orchestrator/designReviewSnapshot.js.map +1 -1
  120. package/dist/audit/orchestrator/edgeReasoning.d.ts.map +1 -1
  121. package/dist/audit/orchestrator/edgeReasoning.js +3 -3
  122. package/dist/audit/orchestrator/edgeReasoning.js.map +1 -1
  123. package/dist/audit/orchestrator/fileAnchors.d.ts.map +1 -1
  124. package/dist/audit/orchestrator/fileAnchors.js +14 -16
  125. package/dist/audit/orchestrator/fileAnchors.js.map +1 -1
  126. package/dist/audit/orchestrator/flowPlanning.d.ts.map +1 -1
  127. package/dist/audit/orchestrator/flowPlanning.js +3 -2
  128. package/dist/audit/orchestrator/flowPlanning.js.map +1 -1
  129. package/dist/audit/orchestrator/graphEnrichmentExecutor.js +5 -5
  130. package/dist/audit/orchestrator/graphEnrichmentExecutor.js.map +1 -1
  131. package/dist/audit/orchestrator/ingestionExecutors.d.ts.map +1 -1
  132. package/dist/audit/orchestrator/ingestionExecutors.js +2 -1
  133. package/dist/audit/orchestrator/ingestionExecutors.js.map +1 -1
  134. package/dist/audit/orchestrator/partitionTaskGraph.d.ts.map +1 -1
  135. package/dist/audit/orchestrator/partitionTaskGraph.js +1 -3
  136. package/dist/audit/orchestrator/partitionTaskGraph.js.map +1 -1
  137. package/dist/audit/orchestrator/reviewPacketGraphContext.js +3 -3
  138. package/dist/audit/orchestrator/reviewPacketGraphContext.js.map +1 -1
  139. package/dist/audit/orchestrator/reviewPacketGraphEdges.d.ts.map +1 -1
  140. package/dist/audit/orchestrator/reviewPacketGraphEdges.js +4 -4
  141. package/dist/audit/orchestrator/reviewPacketGraphEdges.js.map +1 -1
  142. package/dist/audit/orchestrator/reviewPacketMetrics.d.ts.map +1 -1
  143. package/dist/audit/orchestrator/reviewPacketMetrics.js +4 -3
  144. package/dist/audit/orchestrator/reviewPacketMetrics.js.map +1 -1
  145. package/dist/audit/orchestrator/reviewPackets.d.ts.map +1 -1
  146. package/dist/audit/orchestrator/reviewPackets.js +1 -4
  147. package/dist/audit/orchestrator/reviewPackets.js.map +1 -1
  148. package/dist/audit/orchestrator/runtimeValidationUpdate.d.ts.map +1 -1
  149. package/dist/audit/orchestrator/runtimeValidationUpdate.js +2 -1
  150. package/dist/audit/orchestrator/runtimeValidationUpdate.js.map +1 -1
  151. package/dist/audit/orchestrator/scope.js +4 -4
  152. package/dist/audit/orchestrator/scope.js.map +1 -1
  153. package/dist/audit/orchestrator/selectiveDeepening/index.d.ts.map +1 -1
  154. package/dist/audit/orchestrator/selectiveDeepening/index.js +4 -3
  155. package/dist/audit/orchestrator/selectiveDeepening/index.js.map +1 -1
  156. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.d.ts.map +1 -1
  157. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.js +4 -3
  158. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.js.map +1 -1
  159. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts +0 -1
  160. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts.map +1 -1
  161. package/dist/audit/orchestrator/selectiveDeepening/shared.js +2 -5
  162. package/dist/audit/orchestrator/selectiveDeepening/shared.js.map +1 -1
  163. package/dist/audit/orchestrator/selectiveDeepening/stewardFollowup.js +2 -1
  164. package/dist/audit/orchestrator/selectiveDeepening/stewardFollowup.js.map +1 -1
  165. package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
  166. package/dist/audit/orchestrator/taskBuilder.js +5 -12
  167. package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
  168. package/dist/audit/orchestrator/unitBuilder.d.ts.map +1 -1
  169. package/dist/audit/orchestrator/unitBuilder.js +3 -2
  170. package/dist/audit/orchestrator/unitBuilder.js.map +1 -1
  171. package/dist/audit/orchestrator.d.ts.map +1 -1
  172. package/dist/audit/orchestrator.js +1 -4
  173. package/dist/audit/orchestrator.js.map +1 -1
  174. package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
  175. package/dist/audit/reporting/mergeFindings.js +3 -4
  176. package/dist/audit/reporting/mergeFindings.js.map +1 -1
  177. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  178. package/dist/audit/reporting/synthesis.js +3 -3
  179. package/dist/audit/reporting/synthesis.js.map +1 -1
  180. package/dist/audit/reporting/workBlocks.d.ts.map +1 -1
  181. package/dist/audit/reporting/workBlocks.js +15 -20
  182. package/dist/audit/reporting/workBlocks.js.map +1 -1
  183. package/dist/audit/supervisor/runLedger.d.ts.map +1 -1
  184. package/dist/audit/supervisor/runLedger.js +1 -4
  185. package/dist/audit/supervisor/runLedger.js.map +1 -1
  186. package/dist/audit/systemic/systemicChallengeLoop.js +2 -2
  187. package/dist/audit/systemic/systemicChallengeLoop.js.map +1 -1
  188. package/dist/audit/validation/artifacts.d.ts.map +1 -1
  189. package/dist/audit/validation/artifacts.js +26 -29
  190. package/dist/audit/validation/artifacts.js.map +1 -1
  191. package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts +25 -10
  192. package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts.map +1 -1
  193. package/dist/remediate/contractPipeline/cyclicSeamResolution.js +35 -88
  194. package/dist/remediate/contractPipeline/cyclicSeamResolution.js.map +1 -1
  195. package/dist/remediate/contractPipeline/idRegistry.d.ts +10 -20
  196. package/dist/remediate/contractPipeline/idRegistry.d.ts.map +1 -1
  197. package/dist/remediate/contractPipeline/idRegistry.js +10 -24
  198. package/dist/remediate/contractPipeline/idRegistry.js.map +1 -1
  199. package/dist/remediate/contractPipeline/obligationKinds.d.ts +27 -0
  200. package/dist/remediate/contractPipeline/obligationKinds.d.ts.map +1 -0
  201. package/dist/remediate/contractPipeline/obligationKinds.js +18 -0
  202. package/dist/remediate/contractPipeline/obligationKinds.js.map +1 -0
  203. package/dist/remediate/contractPipeline/phaseCut.d.ts.map +1 -1
  204. package/dist/remediate/contractPipeline/phaseCut.js +2 -1
  205. package/dist/remediate/contractPipeline/phaseCut.js.map +1 -1
  206. package/dist/remediate/contractPipeline/testPlanCarry.d.ts.map +1 -1
  207. package/dist/remediate/contractPipeline/testPlanCarry.js +1 -4
  208. package/dist/remediate/contractPipeline/testPlanCarry.js.map +1 -1
  209. package/dist/remediate/dedup/crossLensDedup.d.ts +2 -3
  210. package/dist/remediate/dedup/crossLensDedup.d.ts.map +1 -1
  211. package/dist/remediate/dedup/crossLensDedup.js +2 -4
  212. package/dist/remediate/dedup/crossLensDedup.js.map +1 -1
  213. package/dist/remediate/index.d.ts +38 -8
  214. package/dist/remediate/index.d.ts.map +1 -1
  215. package/dist/remediate/index.js +75 -27
  216. package/dist/remediate/index.js.map +1 -1
  217. package/dist/remediate/phases/close.d.ts.map +1 -1
  218. package/dist/remediate/phases/close.js +3 -3
  219. package/dist/remediate/phases/close.js.map +1 -1
  220. package/dist/remediate/phases/plan.js +2 -2
  221. package/dist/remediate/phases/plan.js.map +1 -1
  222. package/dist/remediate/riskSignal.d.ts +1 -0
  223. package/dist/remediate/riskSignal.d.ts.map +1 -1
  224. package/dist/remediate/riskSignal.js +3 -7
  225. package/dist/remediate/riskSignal.js.map +1 -1
  226. package/dist/remediate/state/accessMemory.d.ts.map +1 -1
  227. package/dist/remediate/state/accessMemory.js +3 -3
  228. package/dist/remediate/state/accessMemory.js.map +1 -1
  229. package/dist/remediate/steps/contractPipeline.d.ts +6 -62
  230. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  231. package/dist/remediate/steps/contractPipeline.js +20 -89
  232. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  233. package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
  234. package/dist/remediate/steps/dispatch/hostHandoff.js +32 -39
  235. package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
  236. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  237. package/dist/remediate/steps/nextStep.js +14 -5
  238. package/dist/remediate/steps/nextStep.js.map +1 -1
  239. package/dist/remediate/utils/fileIntegrity.d.ts.map +1 -1
  240. package/dist/remediate/utils/fileIntegrity.js +4 -8
  241. package/dist/remediate/utils/fileIntegrity.js.map +1 -1
  242. package/dist/remediate/validation/artifacts.d.ts.map +1 -1
  243. package/dist/remediate/validation/artifacts.js +8 -14
  244. package/dist/remediate/validation/artifacts.js.map +1 -1
  245. package/dist/remediate/validation/contractPipeline.d.ts +1 -1
  246. package/dist/remediate/validation/contractPipeline.d.ts.map +1 -1
  247. package/dist/remediate/validation/contractPipeline.js +8 -46
  248. package/dist/remediate/validation/contractPipeline.js.map +1 -1
  249. package/dist/remediate/validation/contractPipelineGates.d.ts +12 -20
  250. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  251. package/dist/remediate/validation/contractPipelineGates.js +107 -135
  252. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  253. package/dist/shared/accessMemory.d.ts.map +1 -1
  254. package/dist/shared/accessMemory.js +2 -1
  255. package/dist/shared/accessMemory.js.map +1 -1
  256. package/dist/shared/affinityArtifacts.d.ts +0 -1
  257. package/dist/shared/affinityArtifacts.d.ts.map +1 -1
  258. package/dist/shared/affinityArtifacts.js +1 -3
  259. package/dist/shared/affinityArtifacts.js.map +1 -1
  260. package/dist/shared/agentReflections.d.ts.map +1 -1
  261. package/dist/shared/agentReflections.js +2 -1
  262. package/dist/shared/agentReflections.js.map +1 -1
  263. package/dist/shared/analyzerPolicy.d.ts.map +1 -1
  264. package/dist/shared/analyzerPolicy.js +7 -22
  265. package/dist/shared/analyzerPolicy.js.map +1 -1
  266. package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
  267. package/dist/shared/analyzers/binaryAcquisition.js +7 -10
  268. package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
  269. package/dist/shared/analyzers/candidates.d.ts.map +1 -1
  270. package/dist/shared/analyzers/candidates.js +1 -3
  271. package/dist/shared/analyzers/candidates.js.map +1 -1
  272. package/dist/shared/analyzers/normalizeExternal.d.ts.map +1 -1
  273. package/dist/shared/analyzers/normalizeExternal.js +12 -13
  274. package/dist/shared/analyzers/normalizeExternal.js.map +1 -1
  275. package/dist/shared/analyzers/types.d.ts.map +1 -1
  276. package/dist/shared/analyzers/types.js +2 -1
  277. package/dist/shared/analyzers/types.js.map +1 -1
  278. package/dist/shared/artifactFreshness.d.ts.map +1 -1
  279. package/dist/shared/artifactFreshness.js +4 -8
  280. package/dist/shared/artifactFreshness.js.map +1 -1
  281. package/dist/shared/compareCodeUnits.d.ts +9 -0
  282. package/dist/shared/compareCodeUnits.d.ts.map +1 -0
  283. package/dist/shared/compareCodeUnits.js +11 -0
  284. package/dist/shared/compareCodeUnits.js.map +1 -0
  285. package/dist/shared/constitutionalDocPaths.d.ts.map +1 -1
  286. package/dist/shared/constitutionalDocPaths.js +1 -4
  287. package/dist/shared/constitutionalDocPaths.js.map +1 -1
  288. package/dist/shared/contentKey.d.ts.map +1 -1
  289. package/dist/shared/contentKey.js +6 -8
  290. package/dist/shared/contentKey.js.map +1 -1
  291. package/dist/shared/decompose/charterClarification.d.ts.map +1 -1
  292. package/dist/shared/decompose/charterClarification.js +2 -1
  293. package/dist/shared/decompose/charterClarification.js.map +1 -1
  294. package/dist/shared/decompose/charterExtraction.d.ts.map +1 -1
  295. package/dist/shared/decompose/charterExtraction.js +21 -20
  296. package/dist/shared/decompose/charterExtraction.js.map +1 -1
  297. package/dist/shared/decompose/consensus.d.ts.map +1 -1
  298. package/dist/shared/decompose/consensus.js +7 -6
  299. package/dist/shared/decompose/consensus.js.map +1 -1
  300. package/dist/shared/decompose/contentCoherence.d.ts.map +1 -1
  301. package/dist/shared/decompose/contentCoherence.js +4 -10
  302. package/dist/shared/decompose/contentCoherence.js.map +1 -1
  303. package/dist/shared/decompose/modularity.d.ts.map +1 -1
  304. package/dist/shared/decompose/modularity.js +12 -14
  305. package/dist/shared/decompose/modularity.js.map +1 -1
  306. package/dist/shared/decompose/workBlockSeams.js +3 -3
  307. package/dist/shared/decompose/workBlockSeams.js.map +1 -1
  308. package/dist/shared/findings/dedupe.d.ts +4 -11
  309. package/dist/shared/findings/dedupe.d.ts.map +1 -1
  310. package/dist/shared/findings/dedupe.js +198 -164
  311. package/dist/shared/findings/dedupe.js.map +1 -1
  312. package/dist/shared/friction/frictionRecord.d.ts.map +1 -1
  313. package/dist/shared/friction/frictionRecord.js +3 -2
  314. package/dist/shared/friction/frictionRecord.js.map +1 -1
  315. package/dist/shared/friction/triage.d.ts.map +1 -1
  316. package/dist/shared/friction/triage.js +2 -1
  317. package/dist/shared/friction/triage.js.map +1 -1
  318. package/dist/shared/git.d.ts.map +1 -1
  319. package/dist/shared/git.js +5 -4
  320. package/dist/shared/git.js.map +1 -1
  321. package/dist/shared/graph/directedCycles.d.ts +61 -0
  322. package/dist/shared/graph/directedCycles.d.ts.map +1 -0
  323. package/dist/shared/graph/directedCycles.js +190 -0
  324. package/dist/shared/graph/directedCycles.js.map +1 -0
  325. package/dist/shared/index.d.ts +8 -2
  326. package/dist/shared/index.d.ts.map +1 -1
  327. package/dist/shared/index.js +9 -2
  328. package/dist/shared/index.js.map +1 -1
  329. package/dist/shared/io/artifactName.js +2 -2
  330. package/dist/shared/io/artifactName.js.map +1 -1
  331. package/dist/shared/io/frictionCapture.d.ts.map +1 -1
  332. package/dist/shared/io/frictionCapture.js +4 -6
  333. package/dist/shared/io/frictionCapture.js.map +1 -1
  334. package/dist/shared/io/json.d.ts +2 -0
  335. package/dist/shared/io/json.d.ts.map +1 -1
  336. package/dist/shared/io/json.js +2 -1
  337. package/dist/shared/io/json.js.map +1 -1
  338. package/dist/shared/io/repoRoot.d.ts +45 -0
  339. package/dist/shared/io/repoRoot.d.ts.map +1 -1
  340. package/dist/shared/io/repoRoot.js +91 -1
  341. package/dist/shared/io/repoRoot.js.map +1 -1
  342. package/dist/shared/loopCorePaths.d.ts.map +1 -1
  343. package/dist/shared/loopCorePaths.js +1 -4
  344. package/dist/shared/loopCorePaths.js.map +1 -1
  345. package/dist/shared/paths.d.ts +19 -0
  346. package/dist/shared/paths.d.ts.map +1 -0
  347. package/dist/shared/paths.js +23 -0
  348. package/dist/shared/paths.js.map +1 -0
  349. package/dist/shared/reReview/projectionDiff.d.ts +0 -18
  350. package/dist/shared/reReview/projectionDiff.d.ts.map +1 -1
  351. package/dist/shared/reReview/projectionDiff.js +2 -1
  352. package/dist/shared/reReview/projectionDiff.js.map +1 -1
  353. package/dist/shared/sessionConfig.d.ts.map +1 -1
  354. package/dist/shared/sessionConfig.js +9 -24
  355. package/dist/shared/sessionConfig.js.map +1 -1
  356. package/dist/shared/stableStringify.d.ts.map +1 -1
  357. package/dist/shared/stableStringify.js +1 -3
  358. package/dist/shared/stableStringify.js.map +1 -1
  359. package/dist/shared/submission/expectedSubmissions.d.ts +0 -19
  360. package/dist/shared/submission/expectedSubmissions.d.ts.map +1 -1
  361. package/dist/shared/submission/expectedSubmissions.js +23 -6
  362. package/dist/shared/submission/expectedSubmissions.js.map +1 -1
  363. package/dist/shared/submission/hostHandoffCore.d.ts +0 -3
  364. package/dist/shared/submission/hostHandoffCore.d.ts.map +1 -1
  365. package/dist/shared/submission/hostHandoffCore.js +2 -7
  366. package/dist/shared/submission/hostHandoffCore.js.map +1 -1
  367. package/dist/shared/submission/submissionIdentity.d.ts.map +1 -1
  368. package/dist/shared/submission/submissionIdentity.js +7 -8
  369. package/dist/shared/submission/submissionIdentity.js.map +1 -1
  370. package/dist/shared/submission/submissionScan.d.ts +86 -0
  371. package/dist/shared/submission/submissionScan.d.ts.map +1 -0
  372. package/dist/shared/submission/submissionScan.js +93 -0
  373. package/dist/shared/submission/submissionScan.js.map +1 -0
  374. package/dist/shared/types/obligationLedger.d.ts +7 -3
  375. package/dist/shared/types/obligationLedger.d.ts.map +1 -1
  376. package/dist/shared/types/obligationLedger.js +9 -37
  377. package/dist/shared/types/obligationLedger.js.map +1 -1
  378. package/dist/shared/validation/findingsReport.d.ts.map +1 -1
  379. package/dist/shared/validation/findingsReport.js +2 -1
  380. package/dist/shared/validation/findingsReport.js.map +1 -1
  381. package/dist/shared/validation/schemaFailure.d.ts +9 -0
  382. package/dist/shared/validation/schemaFailure.d.ts.map +1 -0
  383. package/dist/shared/validation/schemaFailure.js +15 -0
  384. package/dist/shared/validation/schemaFailure.js.map +1 -0
  385. package/package.json +5 -2
  386. package/skills/audit-code/audit-code.prompt.md +5 -2
  387. package/wrapper/audit-code-wrapper-install-hosts.mjs +8 -3
  388. package/wrapper/audit-code-wrapper-lib.mjs +10 -3
  389. package/wrapper/installer-verb-help.mjs +3 -1
  390. package/wrapper/remediate-code-wrapper-install-hosts.mjs +8 -3
  391. package/wrapper/repo-root.mjs +80 -0
@@ -1 +1 @@
1
- {"version":3,"file":"stableStringify.d.ts","sourceRoot":"","sources":["../../src/shared/stableStringify.ts"],"names":[],"mappings":"AAgBA,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CActD"}
1
+ {"version":3,"file":"stableStringify.d.ts","sourceRoot":"","sources":["../../src/shared/stableStringify.ts"],"names":[],"mappings":"AAcA,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CActD"}
@@ -10,9 +10,7 @@
10
10
  * which re-exports this) and the content-key seam (`src/shared/contentKey.ts`)
11
11
  * route through this function.
12
12
  */
13
- function compareCodeUnits(left, right) {
14
- return left < right ? -1 : left > right ? 1 : 0;
15
- }
13
+ import { compareCodeUnits } from "./compareCodeUnits.js";
16
14
  export function stableStringify(value) {
17
15
  if (value === undefined) {
18
16
  return "null";
@@ -1 +1 @@
1
- {"version":3,"file":"stableStringify.js","sourceRoot":"","sources":["../../src/shared/stableStringify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAa;IACnD,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7E,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;SAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;SACxC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1G,CAAC"}
1
+ {"version":3,"file":"stableStringify.js","sourceRoot":"","sources":["../../src/shared/stableStringify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7E,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;SAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;SACxC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1G,CAAC"}
@@ -1,22 +1,3 @@
1
- /**
2
- * The expected-submission set: what a step emission OWES, stated by name.
3
- *
4
- * A fan-out emission used to be implicit — it wrote N lane prompts and, on the
5
- * next turn, simply looked to see which result files happened to be there. An
6
- * absent lane was a `continue`, so a lane that was never delivered was
7
- * indistinguishable from a lane that was merely slow, and the run reported
8
- * neither the shortfall nor its cause. Recording the set at emit turns that
9
- * into "expected 3, accepted 2, lane `revealed` is missing".
10
- *
11
- * The set is a COHERENCE grouping, never a fit claim: a member is a
12
- * content-coherent lane, and the diff counts lanes. Nothing here describes a
13
- * backend, a window, or a partition sized to one — that is the host's business
14
- * and this package does not own it.
15
- *
16
- * Storage-neutral by construction (one core, two draws): the core says what the
17
- * set IS; the audit draw persists it as a file beside the submissions, the
18
- * remediate draw carries its equivalent inside `RemediationState`.
19
- */
20
1
  import type { SubmissionIssue, SubmissionReadOutcome } from "./submissionClassifier.js";
21
2
  import type { SubmissionRoots } from "./submissionIdentity.js";
22
3
  export declare const EXPECTED_SET_CONTRACT_VERSION: "submission-expected-set/v1alpha1";
@@ -1 +1 @@
1
- {"version":3,"file":"expectedSubmissions.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/expectedSubmissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,6BAA6B,EACxC,kCAA2C,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,6BAA6B,CAAC;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACjD;AAED,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,oCAAoC;AACpC,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC/D;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CACjC,CAAC;AAEN,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACvD;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACnD,GAAG,qBAAqB,CAuBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,qBAAqB,GAAG,SAAS,EACvC,UAAU,EAAE,qBAAqB,GAChC;IAAE,QAAQ,CAAC,GAAG,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAkB/E;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,qBAAqB,EAC1B,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,qBAAqB,CAOvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,qBAAqB,EAC1B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACnD,eAAe,CAkBjB"}
1
+ {"version":3,"file":"expectedSubmissions.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/expectedSubmissions.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,6BAA6B,EACxC,kCAA2C,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,6BAA6B,CAAC;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACjD;AAED,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,oCAAoC;AACpC,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC/D;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CACjC,CAAC;AAEN,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACvD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACnD,GAAG,qBAAqB,CAuBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,qBAAqB,GAAG,SAAS,EACvC,UAAU,EAAE,qBAAqB,GAChC;IAAE,QAAQ,CAAC,GAAG,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAkB/E;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,qBAAqB,EAC1B,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,qBAAqB,CAOvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,qBAAqB,EAC1B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACnD,eAAe,CAkBjB"}
@@ -1,9 +1,26 @@
1
+ /**
2
+ * The expected-submission set: what a step emission OWES, stated by name.
3
+ *
4
+ * A fan-out emission used to be implicit — it wrote N lane prompts and, on the
5
+ * next turn, simply looked to see which result files happened to be there. An
6
+ * absent lane was a `continue`, so a lane that was never delivered was
7
+ * indistinguishable from a lane that was merely slow, and the run reported
8
+ * neither the shortfall nor its cause. Recording the set at emit turns that
9
+ * into "expected 3, accepted 2, lane `revealed` is missing".
10
+ *
11
+ * The set is a COHERENCE grouping, never a fit claim: a member is a
12
+ * content-coherent lane, and the diff counts lanes. Nothing here describes a
13
+ * backend, a window, or a partition sized to one — that is the host's business
14
+ * and this package does not own it.
15
+ *
16
+ * Storage-neutral by construction (one core, two draws): the core says what the
17
+ * set IS; the audit draw persists it as a file beside the submissions, the
18
+ * remediate draw carries its equivalent inside `RemediationState`.
19
+ */
20
+ import { compareCodeUnits } from "../compareCodeUnits.js";
1
21
  import { classifyRead } from "./submissionClassifier.js";
2
22
  import { submissionPathFor } from "./submissionIdentity.js";
3
23
  export const EXPECTED_SET_CONTRACT_VERSION = "submission-expected-set/v1alpha1";
4
- function compareIds(left, right) {
5
- return left < right ? -1 : left > right ? 1 : 0;
6
- }
7
24
  /**
8
25
  * Build the set one emission owes. Entries are ordered by `submission_id` — a
9
26
  * content-derived key, never emission or filesystem order, so re-recording an
@@ -36,7 +53,7 @@ export function buildExpectedSubmissionSet(params) {
36
53
  return {
37
54
  contract_version: EXPECTED_SET_CONTRACT_VERSION,
38
55
  run_id: params.runId,
39
- entries: entries.sort((left, right) => compareIds(left.submission_id, right.submission_id)),
56
+ entries: entries.sort((left, right) => compareCodeUnits(left.submission_id, right.submission_id)),
40
57
  };
41
58
  }
42
59
  /**
@@ -61,9 +78,9 @@ export function mergeExpectedSets(base, additional) {
61
78
  set: {
62
79
  contract_version: EXPECTED_SET_CONTRACT_VERSION,
63
80
  run_id: additional.run_id,
64
- entries: [...merged.values()].sort((left, right) => compareIds(left.submission_id, right.submission_id)),
81
+ entries: [...merged.values()].sort((left, right) => compareCodeUnits(left.submission_id, right.submission_id)),
65
82
  },
66
- addedIds: addedIds.sort(compareIds),
83
+ addedIds: addedIds.sort(compareCodeUnits),
67
84
  };
68
85
  }
69
86
  /** Drop members that are no longer owed (they were accepted and applied). */
@@ -1 +1 @@
1
- {"version":3,"file":"expectedSubmissions.js","sourceRoot":"","sources":["../../../src/shared/submission/expectedSubmissions.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,CAAC,MAAM,6BAA6B,GACxC,kCAA2C,CAAC;AAkD9C,SAAS,UAAU,CAAC,IAAY,EAAE,KAAa;IAC7C,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAI1C;IACC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IAC1E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,sCAAsC,UAAU,CAAC,MAAM,wBAAwB;YAC7E,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB;YACjF,gFAAgF;YAChF,qFAAqF,CACxF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1C,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,eAAe,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;KACpE,CAAC,CAAC,CAAC;IACJ,OAAO;QACL,gBAAgB,EAAE,6BAA6B;QAC/C,MAAM,EAAE,MAAM,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACpC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CACpD;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAuC,EACvC,UAAiC;IAEjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,OAAO,IAAI,EAAE;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO;QACL,GAAG,EAAE;YACH,gBAAgB,EAAE,6BAA6B;YAC/C,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACjD,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CACpD;SACF;QACD,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,0BAA0B,CACxC,GAA0B,EAC1B,aAAgC;IAEhC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACvC,OAAO;QACL,gBAAgB,EAAE,6BAA6B;QAC/C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,GAA0B,EAC1B,QAAoD;IAEpD,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,SAAkB,EAAE,CAAC;QAClF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE;YAClC,YAAY,EAAE,KAAK,CAAC,aAAa;YACjC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,cAAc,EAAE,KAAK,CAAC,eAAe;SACtC,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,QAAQ,IAAI,CAAC,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;YACzE,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"expectedSubmissions.js","sourceRoot":"","sources":["../../../src/shared/submission/expectedSubmissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,CAAC,MAAM,6BAA6B,GACxC,kCAA2C,CAAC;AAkD9C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAI1C;IACC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IAC1E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,sCAAsC,UAAU,CAAC,MAAM,wBAAwB;YAC7E,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB;YACjF,gFAAgF;YAChF,qFAAqF,CACxF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1C,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,eAAe,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;KACpE,CAAC,CAAC,CAAC;IACJ,OAAO;QACL,gBAAgB,EAAE,6BAA6B;QAC/C,MAAM,EAAE,MAAM,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACpC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAC1D;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAuC,EACvC,UAAiC;IAEjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,OAAO,IAAI,EAAE;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO;QACL,GAAG,EAAE;YACH,gBAAgB,EAAE,6BAA6B;YAC/C,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACjD,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAC1D;SACF;QACD,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,0BAA0B,CACxC,GAA0B,EAC1B,aAAgC;IAEhC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACvC,OAAO;QACL,gBAAgB,EAAE,6BAA6B;QAC/C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,GAA0B,EAC1B,QAAoD;IAEpD,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,SAAkB,EAAE,CAAC;QAClF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE;YAClC,YAAY,EAAE,KAAK,CAAC,aAAa;YACjC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,cAAc,EAAE,KAAK,CAAC,eAAe;SACtC,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,QAAQ,IAAI,CAAC,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;YACzE,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC7D,CAAC"}
@@ -1,6 +1,3 @@
1
- /** Code-unit lexical order — the shared comparator for every id sort here. */
2
- export declare function compareCodeUnits(left: string, right: string): number;
3
- export declare function isRecord(value: unknown): value is Record<string, unknown>;
4
1
  /** Exact key set, order-insensitive: a persisted envelope admits no extra keys. */
5
2
  export declare function hasExactKeys(value: Record<string, unknown>, expected: readonly string[]): boolean;
6
3
  export declare function isSha256(value: unknown): value is string;
@@ -1 +1 @@
1
- {"version":3,"file":"hostHandoffCore.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/hostHandoffCore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hostHandoffCore.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/hostHandoffCore.ts"],"names":[],"mappings":"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"}
@@ -15,17 +15,12 @@
15
15
  // Sibling modules imported DIRECTLY, never through ../index.js: the barrel
16
16
  // re-exports this module, so importing the barrel here would close a cycle
17
17
  // (index → hostHandoffCore → index) that check:depgraph refuses.
18
+ import { compareCodeUnits } from "../compareCodeUnits.js";
18
19
  import { hashContent } from "../hash.js";
19
20
  import { stableStringify } from "../stableStringify.js";
21
+ import { isRecord } from "../validation/basic.js";
20
22
  import { assertSubmissionRunId, resolveContainedPath, submissionPathFor, } from "./submissionIdentity.js";
21
23
  import { join, resolve } from "node:path";
22
- /** Code-unit lexical order — the shared comparator for every id sort here. */
23
- export function compareCodeUnits(left, right) {
24
- return left < right ? -1 : left > right ? 1 : 0;
25
- }
26
- export function isRecord(value) {
27
- return typeof value === "object" && value !== null && !Array.isArray(value);
28
- }
29
24
  /** Exact key set, order-insensitive: a persisted envelope admits no extra keys. */
30
25
  export function hasExactKeys(value, expected) {
31
26
  const actual = Object.keys(value).sort(compareCodeUnits);
@@ -1 +1 @@
1
- {"version":3,"file":"hostHandoffCore.js","sourceRoot":"","sources":["../../../src/shared/submission/hostHandoffCore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hostHandoffCore.js","sourceRoot":"","sources":["../../../src/shared/submission/hostHandoffCore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"submissionIdentity.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/submissionIdentity.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAOD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAMjE;AAUD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,CAWR;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,MAAM,CAOR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAW,GAAG,IAAI,CAQ3E"}
1
+ {"version":3,"file":"submissionIdentity.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/submissionIdentity.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAOD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAMjE;AAUD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,CASR;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,MAAM,CAOR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAW,GAAG,IAAI,CAQ3E"}
@@ -11,7 +11,8 @@
11
11
  * it. It replaces the two hand-rolled `resultPathFor` copies that carried the
12
12
  * same rule in two places.
13
13
  */
14
- import { isAbsolute, relative, resolve } from "node:path";
14
+ import { relative, resolve } from "node:path";
15
+ import { resolveWithinRoot } from "../io/pathContainment.js";
15
16
  import { hashContent } from "../hash.js";
16
17
  import { stableStringify } from "../stableStringify.js";
17
18
  /** Non-path-safe characters collapse so the id stays readable in a ledger. */
@@ -66,15 +67,13 @@ export function submissionPathFor(paths, submissionId) {
66
67
  */
67
68
  export function resolveContainedPath(base, candidate, label) {
68
69
  const absoluteBase = resolve(base);
69
- const absoluteCandidate = isAbsolute(candidate)
70
- ? resolve(candidate)
71
- : resolve(absoluteBase, candidate);
72
- const rel = relative(absoluteBase, absoluteCandidate);
73
- const firstSegment = rel.split(/[\\/]/u)[0];
74
- if (isAbsolute(rel) || firstSegment === "..") {
70
+ // Predicate from the ONE containment guard; only the error message (pinned
71
+ // by the submission-path tests) stays caller-specific.
72
+ const resolved = resolveWithinRoot(absoluteBase, candidate);
73
+ if (resolved === null) {
75
74
  throw new Error(`${label} must remain beneath ${absoluteBase}`);
76
75
  }
77
- return absoluteCandidate;
76
+ return resolved;
78
77
  }
79
78
  /** Repository-relative, forward-slashed form of a contained absolute path. */
80
79
  export function repoRelativePath(root, absolutePath, label) {
@@ -1 +1 @@
1
- {"version":3,"file":"submissionIdentity.js","sourceRoot":"","sources":["../../../src/shared/submission/submissionIdentity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submissionIdentity.js","sourceRoot":"","sources":["../../../src/shared/submission/submissionIdentity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The ONE per-item host-submission scan both ingests draw from.
3
+ *
4
+ * Every submitted work item crosses the same four-step gate before any draw's
5
+ * domain work begins: resolve the bound path inside the boundary, read the
6
+ * bytes, classify a missing / unparseable / contract-invalid document, and
7
+ * refuse a `result_id` the caller has already seen. Both twins hand-rolled that
8
+ * sequence — audit in `readSubmittedResult` plus an inline duplicate check,
9
+ * remediate inline in its ingest loop — and the two copies had already drifted
10
+ * on CONTAINMENT: remediate re-checked the resolved path under the artifacts
11
+ * dir, audit checked the root only. This module resolves that in the stricter
12
+ * direction for BOTH draws.
13
+ *
14
+ * What it deliberately does NOT own — because these are the places the draws
15
+ * genuinely differ, not places they drifted:
16
+ *
17
+ * - the MESSAGE TEXT of each refusal (a per-draw renderer supplies it; the two
18
+ * vocabularies are test-pinned and address different readers);
19
+ * - the DOMAIN PARSER (a callback; each draw's parser stays standalone, so the
20
+ * hand-recovery lane can wrap `parseResult` directly and stay parity-pinned);
21
+ * - identity enforcement, which lives INSIDE those parsers — hoisting it would
22
+ * change refusal precedence for a doubly-bad document;
23
+ * - loop iteration, aggregation order, seen-set seeding, and the TIMING of the
24
+ * duplicate consume. Audit seeds from its persisted accepted ledger and
25
+ * consumes only after conversion, validation and grounding; remediate uses a
26
+ * fresh per-call set and consumes at parse. This scan only CHECKS.
27
+ */
28
+ import { type SubmissionIssue } from "./submissionClassifier.js";
29
+ /**
30
+ * The domain parser's answer, normalized. `detail` is handed straight to the
31
+ * draw's `contractInvalid` renderer — the scan never composes refusal prose of
32
+ * its own.
33
+ */
34
+ export type SubmissionParse<TParsed> = {
35
+ readonly ok: true;
36
+ readonly parsed: TParsed;
37
+ } | {
38
+ readonly ok: false;
39
+ readonly detail: string;
40
+ };
41
+ /**
42
+ * The per-draw refusal vocabulary. Text is a DRAW concern: the audit ingest
43
+ * addresses a host repairing a bound result file, remediate addresses one
44
+ * repairing a pending work item, and several strings are pinned by tests.
45
+ */
46
+ export interface SubmissionScanMessages {
47
+ /** Nothing exists at the bound path. */
48
+ readonly missing: () => string;
49
+ /** Bytes exist but are not JSON; `detail` is the parse/IO reason. */
50
+ readonly malformed: (detail: string) => string;
51
+ /** JSON that the domain parser refused; `detail` is its stated reason. */
52
+ readonly contractInvalid: (detail: string) => string;
53
+ /** The parsed result re-uses an identity the caller has already seen. */
54
+ readonly duplicate: (resultId: string) => string;
55
+ }
56
+ /** Either the parsed submission, or the ONE issue that names why not. */
57
+ export type SubmissionScanOutcome<TParsed> = {
58
+ readonly ok: true;
59
+ readonly parsed: TParsed;
60
+ } | {
61
+ readonly ok: false;
62
+ readonly issue: SubmissionIssue;
63
+ };
64
+ /**
65
+ * Scan one bound submission. Throws only where the twins already threw: a bound
66
+ * path that escapes the repository root or the artifacts dir is a boundary
67
+ * violation, not a classified submission failure.
68
+ */
69
+ export declare function scanBoundSubmission<TParsed>(params: {
70
+ /** Absolute repository root the bound path is expressed relative to. */
71
+ readonly root: string;
72
+ /** Absolute artifacts dir the submission must also stay beneath. */
73
+ readonly artifactsDir: string;
74
+ /** Names the item in the containment refusal and in both issue locators. */
75
+ readonly workItemId: string;
76
+ /** Repository-relative bound path, as the persisted contract declares it. */
77
+ readonly resultPath: string;
78
+ /** The draw's standalone contract gate. */
79
+ readonly parse: (value: unknown) => SubmissionParse<TParsed>;
80
+ /** The submitted identity the duplicate check is asked about. */
81
+ readonly resultId: (parsed: TParsed) => string;
82
+ /** Caller-owned predicate; seeding and consume timing stay per-draw. */
83
+ readonly seen: (resultId: string) => boolean;
84
+ readonly messages: SubmissionScanMessages;
85
+ }): Promise<SubmissionScanOutcome<TParsed>>;
86
+ //# sourceMappingURL=submissionScan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submissionScan.d.ts","sourceRoot":"","sources":["../../../src/shared/submission/submissionScan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AAGnC;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,OAAO,IAC/B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC;IAC/B,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,0EAA0E;IAC1E,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAED,yEAAyE;AACzE,MAAM,MAAM,qBAAqB,CAAC,OAAO,IACrC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC;AAE5D;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE;IACzD,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7D,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;IAC/C,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;CAC3C,GAAG,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CA2D1C"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * The ONE per-item host-submission scan both ingests draw from.
3
+ *
4
+ * Every submitted work item crosses the same four-step gate before any draw's
5
+ * domain work begins: resolve the bound path inside the boundary, read the
6
+ * bytes, classify a missing / unparseable / contract-invalid document, and
7
+ * refuse a `result_id` the caller has already seen. Both twins hand-rolled that
8
+ * sequence — audit in `readSubmittedResult` plus an inline duplicate check,
9
+ * remediate inline in its ingest loop — and the two copies had already drifted
10
+ * on CONTAINMENT: remediate re-checked the resolved path under the artifacts
11
+ * dir, audit checked the root only. This module resolves that in the stricter
12
+ * direction for BOTH draws.
13
+ *
14
+ * What it deliberately does NOT own — because these are the places the draws
15
+ * genuinely differ, not places they drifted:
16
+ *
17
+ * - the MESSAGE TEXT of each refusal (a per-draw renderer supplies it; the two
18
+ * vocabularies are test-pinned and address different readers);
19
+ * - the DOMAIN PARSER (a callback; each draw's parser stays standalone, so the
20
+ * hand-recovery lane can wrap `parseResult` directly and stay parity-pinned);
21
+ * - identity enforcement, which lives INSIDE those parsers — hoisting it would
22
+ * change refusal precedence for a doubly-bad document;
23
+ * - loop iteration, aggregation order, seen-set seeding, and the TIMING of the
24
+ * duplicate consume. Audit seeds from its persisted accepted ledger and
25
+ * consumes only after conversion, validation and grounding; remediate uses a
26
+ * fresh per-call set and consumes at parse. This scan only CHECKS.
27
+ */
28
+ // Sibling modules imported DIRECTLY, never through ../index.js: the barrel
29
+ // re-exports this module, so importing the barrel here would close a cycle
30
+ // (index → submissionScan → index) that check:depgraph refuses.
31
+ import { readSubmissionDocument, } from "./submissionClassifier.js";
32
+ import { resolveContainedPath } from "./submissionIdentity.js";
33
+ /**
34
+ * Scan one bound submission. Throws only where the twins already threw: a bound
35
+ * path that escapes the repository root or the artifacts dir is a boundary
36
+ * violation, not a classified submission failure.
37
+ */
38
+ export async function scanBoundSubmission(params) {
39
+ const locators = {
40
+ work_item_id: params.workItemId,
41
+ result_path: params.resultPath,
42
+ };
43
+ const label = `result path for ${params.workItemId}`;
44
+ const absolutePath = resolveContainedPath(params.root, params.resultPath, label);
45
+ // Both boundaries, both draws: a submission lives under the artifacts dir,
46
+ // and root containment alone would admit any other tracked file in the repo.
47
+ resolveContainedPath(params.artifactsDir, absolutePath, label);
48
+ const read = await readSubmissionDocument(absolutePath);
49
+ if (read.kind === "missing") {
50
+ return {
51
+ ok: false,
52
+ issue: {
53
+ code: "submission_missing",
54
+ message: params.messages.missing(),
55
+ ...locators,
56
+ },
57
+ };
58
+ }
59
+ if (read.kind === "malformed") {
60
+ return {
61
+ ok: false,
62
+ issue: {
63
+ code: "submission_malformed",
64
+ message: params.messages.malformed(read.detail),
65
+ ...locators,
66
+ },
67
+ };
68
+ }
69
+ const parsed = params.parse(read.value);
70
+ if (!parsed.ok) {
71
+ return {
72
+ ok: false,
73
+ issue: {
74
+ code: "submission_contract_invalid",
75
+ message: params.messages.contractInvalid(parsed.detail),
76
+ ...locators,
77
+ },
78
+ };
79
+ }
80
+ const resultId = params.resultId(parsed.parsed);
81
+ if (params.seen(resultId)) {
82
+ return {
83
+ ok: false,
84
+ issue: {
85
+ code: "duplicate_submission_id",
86
+ message: params.messages.duplicate(resultId),
87
+ ...locators,
88
+ },
89
+ };
90
+ }
91
+ return { ok: true, parsed: parsed.parsed };
92
+ }
93
+ //# sourceMappingURL=submissionScan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submissionScan.js","sourceRoot":"","sources":["../../../src/shared/submission/submissionScan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,2EAA2E;AAC3E,2EAA2E;AAC3E,gEAAgE;AAChE,OAAO,EACL,sBAAsB,GAEvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAgC/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAU,MAgBlD;IACC,MAAM,QAAQ,GAAG;QACf,YAAY,EAAE,MAAM,CAAC,UAAU;QAC/B,WAAW,EAAE,MAAM,CAAC,UAAU;KACtB,CAAC;IACX,MAAM,KAAK,GAAG,mBAAmB,MAAM,CAAC,UAAU,EAAE,CAAC;IACrD,MAAM,YAAY,GAAG,oBAAoB,CACvC,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,UAAU,EACjB,KAAK,CACN,CAAC;IACF,2EAA2E;IAC3E,6EAA6E;IAC7E,oBAAoB,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAG,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAClC,GAAG,QAAQ;aACZ;SACF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,GAAG,QAAQ;aACZ;SACF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,6BAA6B;gBACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;gBACvD,GAAG,QAAQ;aACZ;SACF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC5C,GAAG,QAAQ;aACZ;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7C,CAAC"}
@@ -8,9 +8,13 @@
8
8
  */
9
9
  import type { ObligationEntry, ObligationLedger } from "./contractPipeline.js";
10
10
  /**
11
- * Detect cycles in an obligation dependency graph using DFS with three-color
12
- * marking (white/gray/black). Returns the IDs of obligations forming the first
13
- * cycle detected, or null when the graph is acyclic.
11
+ * Detect cycles in an obligation dependency graph. Returns the IDs of
12
+ * obligations forming the first cycle detected as a witness path with its start
13
+ * repeated at the end (`["A","B","A"]`), or null when the graph is acyclic.
14
+ *
15
+ * A thin draw over the shared directed-cycle core: an obligation that depends
16
+ * on ITSELF is a cycle here (self-loops included), and dependencies naming an
17
+ * id outside the ledger are external references the core ignores.
14
18
  *
15
19
  * INV-shared-core-07: called at construction time so a cycle is caught early
16
20
  * rather than causing an infinite loop or confusing error at scheduling time.
@@ -1 +1 @@
1
- {"version":3,"file":"obligationLedger.d.ts","sourceRoot":"","sources":["../../../src/shared/types/obligationLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAK/B;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,SAAS,eAAe,EAAE,GACtC,MAAM,EAAE,GAAG,IAAI,CAmCjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,gBAAgB,CAgBlB"}
1
+ {"version":3,"file":"obligationLedger.d.ts","sourceRoot":"","sources":["../../../src/shared/types/obligationLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAM/B;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,SAAS,eAAe,EAAE,GACtC,MAAM,EAAE,GAAG,IAAI,CAEjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,gBAAgB,CAgBlB"}
@@ -7,49 +7,21 @@
7
7
  * if a dependency cycle is present.
8
8
  */
9
9
  import { CONTRACT_PIPELINE_OBLIGATION_LEDGER_VERSION, } from "./contractPipeline.js";
10
+ import { findFirstCycleWitness } from "../graph/directedCycles.js";
10
11
  /**
11
- * Detect cycles in an obligation dependency graph using DFS with three-color
12
- * marking (white/gray/black). Returns the IDs of obligations forming the first
13
- * cycle detected, or null when the graph is acyclic.
12
+ * Detect cycles in an obligation dependency graph. Returns the IDs of
13
+ * obligations forming the first cycle detected as a witness path with its start
14
+ * repeated at the end (`["A","B","A"]`), or null when the graph is acyclic.
15
+ *
16
+ * A thin draw over the shared directed-cycle core: an obligation that depends
17
+ * on ITSELF is a cycle here (self-loops included), and dependencies naming an
18
+ * id outside the ledger are external references the core ignores.
14
19
  *
15
20
  * INV-shared-core-07: called at construction time so a cycle is caught early
16
21
  * rather than causing an infinite loop or confusing error at scheduling time.
17
22
  */
18
23
  export function detectObligationCycle(obligations) {
19
- const idSet = new Set(obligations.map((o) => o.id));
20
- const depMap = new Map();
21
- for (const o of obligations) {
22
- depMap.set(o.id, o.depends_on.filter((dep) => idSet.has(dep)));
23
- }
24
- // Three-color DFS: 0 = unvisited, 1 = in-stack (gray), 2 = done (black).
25
- const color = new Map();
26
- const path = [];
27
- function dfs(id) {
28
- const c = color.get(id) ?? 0;
29
- if (c === 2)
30
- return null; // already done
31
- if (c === 1) {
32
- // Cycle detected: return the cycle slice.
33
- const cycleStart = path.indexOf(id);
34
- return path.slice(cycleStart).concat(id);
35
- }
36
- color.set(id, 1);
37
- path.push(id);
38
- for (const dep of depMap.get(id) ?? []) {
39
- const cycle = dfs(dep);
40
- if (cycle)
41
- return cycle;
42
- }
43
- path.pop();
44
- color.set(id, 2);
45
- return null;
46
- }
47
- for (const o of obligations) {
48
- const cycle = dfs(o.id);
49
- if (cycle)
50
- return cycle;
51
- }
52
- return null;
24
+ return findFirstCycleWitness(obligations, { includeSelfLoops: true });
53
25
  }
54
26
  /**
55
27
  * Build a validated ObligationLedger.
@@ -1 +1 @@
1
- {"version":3,"file":"obligationLedger.js","sourceRoot":"","sources":["../../../src/shared/types/obligationLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EACL,2CAA2C,GAC5C,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAuC;IAEvC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,yEAAyE;IACzE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,SAAS,GAAG,CAAC,EAAU;QACrB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,eAAe;QACzC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,0CAA0C;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAqC;IAErC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,wFAAwF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC5G,CAAC;IACJ,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,2CAA2C;QAC7D,OAAO;QACP,WAAW;QACX,UAAU,EAAE,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"obligationLedger.js","sourceRoot":"","sources":["../../../src/shared/types/obligationLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EACL,2CAA2C,GAC5C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAuC;IAEvC,OAAO,qBAAqB,CAAC,WAAW,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAQD;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAqC;IAErC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,wFAAwF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC5G,CAAC;IACJ,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,2CAA2C;QAC7D,OAAO;QACP,WAAW;QACX,UAAU,EAAE,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"findingsReport.d.ts","sourceRoot":"","sources":["../../../src/shared/validation/findingsReport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAG9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,eAAO,MAAM,+BAA+B,EAC1C,qCAA8C,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAAC;IAC3C,MAAM,EAAE,UAAU,GAAG,sBAAsB,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE,qBAAqB,CAAC;IACtC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CAC1D;AAwWD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,IAAI,SAAK,GACR,eAAe,EAAE,CAEnB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAUlF;AAqBD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,SAAS,OAAO,EAAE,GACnC,mBAAmB,CAoKrB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,mBAAmB,CAE9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMnE"}
1
+ {"version":3,"file":"findingsReport.d.ts","sourceRoot":"","sources":["../../../src/shared/validation/findingsReport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAI9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,eAAO,MAAM,+BAA+B,EAC1C,qCAA8C,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAAC;IAC3C,MAAM,EAAE,UAAU,GAAG,sBAAsB,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE,qBAAqB,CAAC;IACtC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CAC1D;AAwWD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,IAAI,SAAK,GACR,eAAe,EAAE,CAEnB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAUlF;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,SAAS,OAAO,EAAE,GACnC,mBAAmB,CAoKrB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,mBAAmB,CAE9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMnE"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { AuditFindingsReportSchema, } from "../types/finding.js";
6
6
  import { workBlockSeamRationale } from "../decompose/workBlockSeams.js";
7
+ import { compareCodeUnits } from "../compareCodeUnits.js";
7
8
  import { severityRank } from "../types/lens.js";
8
9
  import { isRecord, pushValidationIssue } from "./basic.js";
9
10
  export const AUDIT_FINDINGS_CONTRACT_VERSION = "audit-tools/audit-findings/v1alpha1";
@@ -251,7 +252,7 @@ function projectedBreakdown(original, values) {
251
252
  return projected;
252
253
  }
253
254
  function stableUnique(values) {
254
- return [...new Set(values)].sort((left, right) => left < right ? -1 : left > right ? 1 : 0);
255
+ return [...new Set(values)].sort(compareCodeUnits);
255
256
  }
256
257
  /**
257
258
  * Project a validated audit report onto an approved finding subset without