audit-tools 0.42.1 → 0.44.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 (237) 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/laneSubmissions.d.ts +2 -2
  11. package/dist/audit/cli/laneSubmissions.js +2 -2
  12. package/dist/audit/cli/nextStepCommand.d.ts +64 -0
  13. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  14. package/dist/audit/cli/nextStepCommand.js +877 -783
  15. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  16. package/dist/audit/cli/nextStepHelpers.d.ts +12 -36
  17. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  18. package/dist/audit/cli/nextStepHelpers.js +34 -77
  19. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  20. package/dist/audit/cli/steps.d.ts +2 -2
  21. package/dist/audit/extractors/graph.d.ts +28 -2
  22. package/dist/audit/extractors/graph.d.ts.map +1 -1
  23. package/dist/audit/extractors/graph.js +122 -11
  24. package/dist/audit/extractors/graph.js.map +1 -1
  25. package/dist/audit/extractors/graphRoutes.d.ts +8 -0
  26. package/dist/audit/extractors/graphRoutes.d.ts.map +1 -1
  27. package/dist/audit/extractors/graphRoutes.js +71 -4
  28. package/dist/audit/extractors/graphRoutes.js.map +1 -1
  29. package/dist/audit/io/artifacts.d.ts +55 -0
  30. package/dist/audit/io/artifacts.d.ts.map +1 -1
  31. package/dist/audit/io/artifacts.js +189 -12
  32. package/dist/audit/io/artifacts.js.map +1 -1
  33. package/dist/audit/io/toolingManifest.d.ts +11 -0
  34. package/dist/audit/io/toolingManifest.d.ts.map +1 -1
  35. package/dist/audit/io/toolingManifest.js +13 -3
  36. package/dist/audit/io/toolingManifest.js.map +1 -1
  37. package/dist/audit/orchestrator/advance.d.ts +64 -0
  38. package/dist/audit/orchestrator/advance.d.ts.map +1 -1
  39. package/dist/audit/orchestrator/advance.js +191 -57
  40. package/dist/audit/orchestrator/advance.js.map +1 -1
  41. package/dist/audit/orchestrator/charterClarificationExecutor.d.ts.map +1 -1
  42. package/dist/audit/orchestrator/charterClarificationExecutor.js +55 -21
  43. package/dist/audit/orchestrator/charterClarificationExecutor.js.map +1 -1
  44. package/dist/audit/orchestrator/flowCoverage.d.ts.map +1 -1
  45. package/dist/audit/orchestrator/flowCoverage.js +7 -10
  46. package/dist/audit/orchestrator/flowCoverage.js.map +1 -1
  47. package/dist/audit/orchestrator/flowPlanning.d.ts +54 -1
  48. package/dist/audit/orchestrator/flowPlanning.d.ts.map +1 -1
  49. package/dist/audit/orchestrator/flowPlanning.js +77 -18
  50. package/dist/audit/orchestrator/flowPlanning.js.map +1 -1
  51. package/dist/audit/orchestrator/flowRequeue.d.ts.map +1 -1
  52. package/dist/audit/orchestrator/flowRequeue.js +6 -10
  53. package/dist/audit/orchestrator/flowRequeue.js.map +1 -1
  54. package/dist/audit/orchestrator/requeueFold.d.ts.map +1 -1
  55. package/dist/audit/orchestrator/requeueFold.js +18 -5
  56. package/dist/audit/orchestrator/requeueFold.js.map +1 -1
  57. package/dist/audit/orchestrator/staleness.d.ts +24 -1
  58. package/dist/audit/orchestrator/staleness.d.ts.map +1 -1
  59. package/dist/audit/orchestrator/staleness.js +147 -16
  60. package/dist/audit/orchestrator/staleness.js.map +1 -1
  61. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts +26 -0
  62. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts.map +1 -1
  63. package/dist/audit/orchestrator/syntaxResolutionExecutor.js +97 -12
  64. package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
  65. package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
  66. package/dist/audit/orchestrator/taskBuilder.js +111 -21
  67. package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
  68. package/dist/audit/orchestrator/trivialAudit.d.ts +17 -1
  69. package/dist/audit/orchestrator/trivialAudit.d.ts.map +1 -1
  70. package/dist/audit/orchestrator/trivialAudit.js +31 -4
  71. package/dist/audit/orchestrator/trivialAudit.js.map +1 -1
  72. package/dist/audit/types/analyzerCapability.d.ts +6 -6
  73. package/dist/audit/types/charterRegister.d.ts +30 -12
  74. package/dist/audit/types/charterRegister.d.ts.map +1 -1
  75. package/dist/audit/types/charterRegister.js +22 -9
  76. package/dist/audit/types/charterRegister.js.map +1 -1
  77. package/dist/audit/validation/anchorGrounding.d.ts.map +1 -1
  78. package/dist/audit/validation/anchorGrounding.js +17 -0
  79. package/dist/audit/validation/anchorGrounding.js.map +1 -1
  80. package/dist/audit/validation/auditResults.d.ts +17 -0
  81. package/dist/audit/validation/auditResults.d.ts.map +1 -1
  82. package/dist/audit/validation/auditResults.js +50 -17
  83. package/dist/audit/validation/auditResults.js.map +1 -1
  84. package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts +48 -0
  85. package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts.map +1 -1
  86. package/dist/remediate/contractPipeline/cyclicSeamResolution.js +128 -0
  87. package/dist/remediate/contractPipeline/cyclicSeamResolution.js.map +1 -1
  88. package/dist/remediate/contractPipeline/derive.d.ts +8 -5
  89. package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
  90. package/dist/remediate/contractPipeline/derive.js +8 -16
  91. package/dist/remediate/contractPipeline/derive.js.map +1 -1
  92. package/dist/remediate/index.d.ts.map +1 -1
  93. package/dist/remediate/index.js +43 -2
  94. package/dist/remediate/index.js.map +1 -1
  95. package/dist/remediate/intent/intentOrdering.d.ts +13 -5
  96. package/dist/remediate/intent/intentOrdering.d.ts.map +1 -1
  97. package/dist/remediate/intent/intentOrdering.js +56 -25
  98. package/dist/remediate/intent/intentOrdering.js.map +1 -1
  99. package/dist/remediate/phases/close.d.ts +57 -2
  100. package/dist/remediate/phases/close.d.ts.map +1 -1
  101. package/dist/remediate/phases/close.js +260 -36
  102. package/dist/remediate/phases/close.js.map +1 -1
  103. package/dist/remediate/phases/triage.d.ts.map +1 -1
  104. package/dist/remediate/phases/triage.js +14 -2
  105. package/dist/remediate/phases/triage.js.map +1 -1
  106. package/dist/remediate/state/disposition.d.ts +26 -4
  107. package/dist/remediate/state/disposition.d.ts.map +1 -1
  108. package/dist/remediate/state/itemStatus.d.ts +33 -6
  109. package/dist/remediate/state/itemStatus.d.ts.map +1 -1
  110. package/dist/remediate/state/itemStatus.js +154 -39
  111. package/dist/remediate/state/itemStatus.js.map +1 -1
  112. package/dist/remediate/state/types.d.ts +41 -2
  113. package/dist/remediate/state/types.d.ts.map +1 -1
  114. package/dist/remediate/state/types.js.map +1 -1
  115. package/dist/remediate/steps/contractPipeline.d.ts +296 -15
  116. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  117. package/dist/remediate/steps/contractPipeline.js +1783 -1001
  118. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  119. package/dist/remediate/steps/dispatch/hostHandoff.d.ts +137 -2
  120. package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
  121. package/dist/remediate/steps/dispatch/hostHandoff.js +657 -59
  122. package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
  123. package/dist/remediate/steps/finalGate.d.ts +136 -37
  124. package/dist/remediate/steps/finalGate.d.ts.map +1 -1
  125. package/dist/remediate/steps/finalGate.js +120 -86
  126. package/dist/remediate/steps/finalGate.js.map +1 -1
  127. package/dist/remediate/steps/gateCommands.d.ts +8 -0
  128. package/dist/remediate/steps/gateCommands.d.ts.map +1 -1
  129. package/dist/remediate/steps/gateCommands.js +40 -11
  130. package/dist/remediate/steps/gateCommands.js.map +1 -1
  131. package/dist/remediate/steps/nextStep.d.ts +96 -5
  132. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  133. package/dist/remediate/steps/nextStep.js +668 -147
  134. package/dist/remediate/steps/nextStep.js.map +1 -1
  135. package/dist/remediate/steps/types.d.ts +4 -3
  136. package/dist/remediate/steps/types.d.ts.map +1 -1
  137. package/dist/remediate/steps/types.js +10 -2
  138. package/dist/remediate/steps/types.js.map +1 -1
  139. package/dist/remediate/validation/artifacts.d.ts +20 -2
  140. package/dist/remediate/validation/artifacts.d.ts.map +1 -1
  141. package/dist/remediate/validation/artifacts.js +224 -130
  142. package/dist/remediate/validation/artifacts.js.map +1 -1
  143. package/dist/remediate/validation/contractPipelineGates.d.ts +58 -0
  144. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  145. package/dist/remediate/validation/contractPipelineGates.js +143 -27
  146. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  147. package/dist/shared/analyzers/acquisitionEngine.d.ts +72 -25
  148. package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
  149. package/dist/shared/analyzers/acquisitionEngine.js +149 -15
  150. package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
  151. package/dist/shared/analyzers/binaryAcquisition.d.ts +27 -2
  152. package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
  153. package/dist/shared/analyzers/binaryAcquisition.js +149 -43
  154. package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
  155. package/dist/shared/analyzers/candidates.d.ts +9 -8
  156. package/dist/shared/analyzers/candidates.d.ts.map +1 -1
  157. package/dist/shared/analyzers/candidates.js +96 -64
  158. package/dist/shared/analyzers/candidates.js.map +1 -1
  159. package/dist/shared/analyzers/normalizeExternal.d.ts +40 -12
  160. package/dist/shared/analyzers/normalizeExternal.d.ts.map +1 -1
  161. package/dist/shared/analyzers/normalizeExternal.js +74 -18
  162. package/dist/shared/analyzers/normalizeExternal.js.map +1 -1
  163. package/dist/shared/analyzers/rubocop.d.ts +14 -13
  164. package/dist/shared/analyzers/rubocop.d.ts.map +1 -1
  165. package/dist/shared/analyzers/rubocop.js +29 -6
  166. package/dist/shared/analyzers/rubocop.js.map +1 -1
  167. package/dist/shared/analyzers/types.d.ts +196 -13
  168. package/dist/shared/analyzers/types.d.ts.map +1 -1
  169. package/dist/shared/analyzers/types.js +122 -9
  170. package/dist/shared/analyzers/types.js.map +1 -1
  171. package/dist/shared/decompose/charterClarification.d.ts +12 -1
  172. package/dist/shared/decompose/charterClarification.d.ts.map +1 -1
  173. package/dist/shared/decompose/charterClarification.js +11 -4
  174. package/dist/shared/decompose/charterClarification.js.map +1 -1
  175. package/dist/shared/decompose/charterExtraction.d.ts +20 -10
  176. package/dist/shared/decompose/charterExtraction.d.ts.map +1 -1
  177. package/dist/shared/decompose/charterExtraction.js +52 -23
  178. package/dist/shared/decompose/charterExtraction.js.map +1 -1
  179. package/dist/shared/index.d.ts +1 -0
  180. package/dist/shared/index.d.ts.map +1 -1
  181. package/dist/shared/index.js +5 -0
  182. package/dist/shared/index.js.map +1 -1
  183. package/dist/shared/intent/freeFormIntentInterpreter.d.ts +12 -2
  184. package/dist/shared/intent/freeFormIntentInterpreter.d.ts.map +1 -1
  185. package/dist/shared/intent/freeFormIntentInterpreter.js +27 -22
  186. package/dist/shared/intent/freeFormIntentInterpreter.js.map +1 -1
  187. package/dist/shared/intent/pathScope.d.ts +12 -1
  188. package/dist/shared/intent/pathScope.d.ts.map +1 -1
  189. package/dist/shared/intent/pathScope.js +56 -19
  190. package/dist/shared/intent/pathScope.js.map +1 -1
  191. package/dist/shared/intent/sharedIntentData.d.ts +19 -1
  192. package/dist/shared/intent/sharedIntentData.d.ts.map +1 -1
  193. package/dist/shared/intent/sharedIntentData.js +33 -8
  194. package/dist/shared/intent/sharedIntentData.js.map +1 -1
  195. package/dist/shared/io/fileLock.d.ts +12 -0
  196. package/dist/shared/io/fileLock.d.ts.map +1 -1
  197. package/dist/shared/io/fileLock.js +48 -5
  198. package/dist/shared/io/fileLock.js.map +1 -1
  199. package/dist/shared/io/json.d.ts +13 -0
  200. package/dist/shared/io/json.d.ts.map +1 -1
  201. package/dist/shared/io/json.js +19 -1
  202. package/dist/shared/io/json.js.map +1 -1
  203. package/dist/shared/steps/stepEmissionScaffold.d.ts +69 -0
  204. package/dist/shared/steps/stepEmissionScaffold.d.ts.map +1 -0
  205. package/dist/shared/steps/stepEmissionScaffold.js +83 -0
  206. package/dist/shared/steps/stepEmissionScaffold.js.map +1 -0
  207. package/dist/shared/submission/handRecovery.d.ts.map +1 -1
  208. package/dist/shared/submission/handRecovery.js +69 -4
  209. package/dist/shared/submission/handRecovery.js.map +1 -1
  210. package/dist/shared/submission/submissionIdentity.d.ts +10 -1
  211. package/dist/shared/submission/submissionIdentity.d.ts.map +1 -1
  212. package/dist/shared/submission/submissionIdentity.js +12 -3
  213. package/dist/shared/submission/submissionIdentity.js.map +1 -1
  214. package/dist/shared/submission/submissionLedger.d.ts +43 -2
  215. package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
  216. package/dist/shared/submission/submissionLedger.js +50 -7
  217. package/dist/shared/submission/submissionLedger.js.map +1 -1
  218. package/dist/shared/tooling/allowlistedExec.d.ts +9 -0
  219. package/dist/shared/tooling/allowlistedExec.d.ts.map +1 -1
  220. package/dist/shared/tooling/allowlistedExec.js +19 -2
  221. package/dist/shared/tooling/allowlistedExec.js.map +1 -1
  222. package/dist/shared/tooling/commandShape.d.ts +21 -0
  223. package/dist/shared/tooling/commandShape.d.ts.map +1 -0
  224. package/dist/shared/tooling/commandShape.js +120 -0
  225. package/dist/shared/tooling/commandShape.js.map +1 -0
  226. package/dist/shared/types/charter.d.ts +24 -0
  227. package/dist/shared/types/charter.d.ts.map +1 -1
  228. package/dist/shared/types/charter.js +9 -0
  229. package/dist/shared/types/charter.js.map +1 -1
  230. package/dist/shared/types/remediationOutcome.d.ts +282 -9
  231. package/dist/shared/types/remediationOutcome.d.ts.map +1 -1
  232. package/dist/shared/types/remediationOutcome.js +174 -1
  233. package/dist/shared/types/remediationOutcome.js.map +1 -1
  234. package/package.json +2 -1
  235. package/remediate-code.mjs +15 -0
  236. package/wrapper/remediate-code-wrapper-install-hosts.mjs +45 -4
  237. package/wrapper/remediate-code-wrapper-install-renderers.mjs +12 -2
@@ -1,6 +1,10 @@
1
- import { cp, rm, unlink } from "node:fs/promises";
2
- import { dirname, join } from "node:path";
3
- import { AUDIT_REPORT_FILENAME, AUDIT_FINDINGS_FILENAME, archiveFrictionRecords, auditReportPath, auditFindingsPath, promotedAuditReportPath, promotedAuditFindingsPath, readSubmissionLedger, submissionLedgerPath, } from "audit-tools/shared";
1
+ import { cp, readdir, readFile, rm, unlink } from "node:fs/promises";
2
+ import { basename, dirname, join } from "node:path";
3
+ import { AUDIT_REPORT_FILENAME, AUDIT_FINDINGS_FILENAME, archiveFrictionRecords, frictionCaptureDir, auditReportPath, auditFindingsPath, promotedAuditReportPath, promotedAuditFindingsPath, readSubmissionLedger, submissionLedgerPath, } from "audit-tools/shared";
4
+ // Deep for the same reason: `writeFileAtomic` is newly exported from json.ts and
5
+ // the `audit-tools/shared` barrel (outside this module's write scope) does not
6
+ // re-export it.
7
+ import { writeFileAtomic } from "../../shared/io/json.js";
4
8
  import { loadDesignReviewSnapshots, } from "../orchestrator/designReviewSnapshot.js";
5
9
  import { loadGraphEdgeCache, writeGraphEdgeCache, } from "../orchestrator/graphEdgeCache.js";
6
10
  import { AGENT_FEEDBACK_FILENAME, discardOnSchemaVersionMismatch, isFileMissingError, parseReflectionsNdjson, readOptionalJsonFile, readOptionalNdjsonFile, readOptionalTextFile, throwOnSchemaVersionMismatch, writeJsonFile, writeNdjsonFile, writeTextFile, } from "audit-tools/shared";
@@ -152,9 +156,18 @@ export async function loadArtifactBundle(root) {
152
156
  // The submission ledger rides the same read-only NDJSON seam: absent (a run
153
157
  // where nothing was ever submitted through a gate) reads as nothing to say.
154
158
  const ledger = await readSubmissionLedger(root);
159
+ // BOTH halves, read off the value BEFORE anything transforms it. Gating on
160
+ // `ledger.length > 0` alone meant a ledger whose every line was torn — events
161
+ // empty, dropped non-empty — set no field at all, so the drop signal died on
162
+ // precisely the worst case: the run whose record is least trustworthy looked
163
+ // identical to the run that never drifted.
164
+ const droppedLines = ledger.dropped;
155
165
  if (ledger.length > 0) {
156
166
  bundle.submission_ledger = ledger;
157
167
  }
168
+ if (droppedLines.length > 0) {
169
+ bundle.submission_ledger_dropped = droppedLines;
170
+ }
158
171
  return bundle;
159
172
  }
160
173
  export async function writeCoreArtifacts(root, bundle, options = {}) {
@@ -192,7 +205,104 @@ export async function writeCoreArtifacts(root, bundle, options = {}) {
192
205
  await writeGraphEdgeCache(root, bundle.graph_edge_cache);
193
206
  }
194
207
  }
208
+ /**
209
+ * The ONE bar for "this archive is verified", used by BOTH the promotion archive
210
+ * and the canonical write path.
211
+ *
212
+ * Read the copy back and BYTE-COMPARE it. "The copy call did not throw" is a
213
+ * weaker bar, and it was the one guarding the DESTRUCTIVE path: a copy that
214
+ * reported success but landed a truncated or empty file cleared the way for a
215
+ * recursive delete of the only other copy. One helper, so the two paths cannot
216
+ * drift to different standards again.
217
+ *
218
+ * Returns null when verified, or a reason string naming the mismatch.
219
+ */
220
+ async function verifyArchivedBytes(archivePath, expected) {
221
+ let actual;
222
+ try {
223
+ actual = await readFile(archivePath);
224
+ }
225
+ catch (error) {
226
+ return archivePath + " could not be read back (" +
227
+ (error instanceof Error ? error.message : String(error)) + ")";
228
+ }
229
+ return Buffer.compare(actual, expected) === 0
230
+ ? null
231
+ : archivePath + " did not read back byte-identical to its source";
232
+ }
233
+ /**
234
+ * Copy one file into the archive and VERIFY the bytes landed. Throws exactly
235
+ * what the copy threw (so an absent source stays distinguishable through
236
+ * `isFileMissingError`); returns a reason string when the copy "succeeded" but
237
+ * the bytes do not match.
238
+ */
239
+ async function archiveVerified(copyFn, from, to) {
240
+ const sourceBytes = await readFile(from);
241
+ await copyFn(from, to, { force: true });
242
+ return verifyArchivedBytes(to, sourceBytes);
243
+ }
244
+ /**
245
+ * artifact:canonical-audit-deliverable-write-path -- the ONE write path to the
246
+ * canonical `.audit-tools/audit-findings.json` + `audit-report.md` pair.
247
+ *
248
+ * ARCHIVE, THEN VERIFY, THEN REPLACE. An existing pair is copied into the
249
+ * history directory and the copy is READ BACK and compared before either
250
+ * destination is overwritten. A copy that is merely attempted-and-warned is not
251
+ * an archive: it leaves the caller believing a prior deliverable was preserved
252
+ * when it may not have been -- the same swallow-the-failure shape
253
+ * DAT-4802dc9e-2 / -3 closed on the promotion side.
254
+ *
255
+ * Refuses rather than replaces: if the archive cannot be verified, the existing
256
+ * pair stays exactly as it was and this throws. Keeping a stale deliverable is
257
+ * recoverable; overwriting an unarchived one is not.
258
+ *
259
+ * CONSUMER DEFERRAL: `remediate-nextstep-and-final-gate` must route its own
260
+ * leftover deliverable through this path and emit to a remediation-owned
261
+ * location instead of writing this pair directly. That edit is CP-NODE-15's,
262
+ * not this node's -- the same mechanical hand-off shape CP-NODE-5 used when it
263
+ * deferred its ledger-read consumers here.
264
+ */
265
+ export async function writeCanonicalAuditDeliverables(params) {
266
+ const findingsPath = promotedAuditFindingsPath(params.artifactsDir);
267
+ const reportPath = promotedAuditReportPath(params.artifactsDir);
268
+ const historyDir = join(dirname(reportPath), "audit-history", new Date().toISOString().replace(/[:.]/gu, "-"));
269
+ const archived = [];
270
+ for (const existing of [findingsPath, reportPath]) {
271
+ let priorBytes;
272
+ try {
273
+ priorBytes = await readFile(existing);
274
+ }
275
+ catch (error) {
276
+ // Nothing there is the ordinary first-write case and archives nothing.
277
+ if (isFileMissingError(error))
278
+ continue;
279
+ throw error;
280
+ }
281
+ const archivePath = join(historyDir, basename(existing));
282
+ await writeFileAtomic(archivePath, priorBytes);
283
+ // VERIFIED, not attempted: read the archive back and compare the bytes. A
284
+ // write that reported success but landed nothing would otherwise clear the
285
+ // way for the replace below.
286
+ const mismatch = await verifyArchivedBytes(archivePath, priorBytes);
287
+ if (mismatch) {
288
+ throw new Error(`audit-code: refusing to replace ${existing} - ${mismatch}, so the existing ` +
289
+ "deliverable is not safely preserved.");
290
+ }
291
+ archived.push(archivePath);
292
+ }
293
+ // TWO ATOMIC WRITES, NOT ONE ATOMIC PAIR. Each destination is replaced
294
+ // atomically, but a crash BETWEEN them leaves the findings JSON and the report
295
+ // markdown skewed - a new machine contract beside a stale human render. That is
296
+ // recoverable: the pre-write pair sits in the verified archive above, so both
297
+ // sides of the skew are reconstructable. A genuinely atomic pair would need a
298
+ // directory-level swap, which this path deliberately does not attempt.
299
+ await writeFileAtomic(findingsPath, `${JSON.stringify(params.findings, null, 2)}
300
+ `);
301
+ await writeFileAtomic(reportPath, params.report);
302
+ return { archived };
303
+ }
195
304
  export async function promoteFinalAuditReport(params, options = {}) {
305
+ const lost = [];
196
306
  const source = auditReportPath(params.artifactsDir);
197
307
  const destination = promotedAuditReportPath(params.artifactsDir);
198
308
  const copy = options.copy ?? cp;
@@ -210,24 +320,66 @@ export async function promoteFinalAuditReport(params, options = {}) {
210
320
  // Promote the canonical machine contract alongside the human report. Missing
211
321
  // (e.g. legacy bundle) or unreadable: best-effort, never blocks completion.
212
322
  try {
213
- await copy(auditFindingsPath(params.artifactsDir), promotedAuditFindingsPath(params.artifactsDir), { force: true });
323
+ const mismatch = await archiveVerified(copy, auditFindingsPath(params.artifactsDir), promotedAuditFindingsPath(params.artifactsDir));
324
+ if (mismatch)
325
+ lost.push(AUDIT_FINDINGS_FILENAME + " (" + mismatch + ")");
214
326
  }
215
327
  catch (error) {
216
- // audit-findings.json is optional output; absence must not fail promotion.
217
- // Log so operators can distinguish a partial promotion from a clean one.
328
+ // The warning is unchanged an absent findings file (the legacy-bundle
329
+ // case) still announces a partial promotion. What changed is the DELETE
330
+ // GATE: an absent file has nothing to lose, but any OTHER failure means the
331
+ // machine contract is about to be destroyed by the rm below with no copy
332
+ // anywhere, and warning-and-proceeding turned that into silent data loss
333
+ // reported as { promoted: true, cleaned: true }.
218
334
  warn(`audit-code: could not promote ${AUDIT_FINDINGS_FILENAME} to ${promotedAuditFindingsPath(params.artifactsDir)}: ` +
219
335
  (error instanceof Error ? error.message : String(error)));
336
+ // An ABSENT findings file (the legacy-bundle case) has nothing to lose. Any
337
+ // other failure means the machine contract is about to be destroyed by the
338
+ // rm below with no copy anywhere — DAT-4802dc9e-2 / -3 — so it is recorded
339
+ // as loss and gates the delete.
340
+ if (!isFileMissingError(error)) {
341
+ lost.push(`${AUDIT_FINDINGS_FILENAME} (${error instanceof Error ? error.message : String(error)})`);
342
+ }
343
+ }
344
+ // agent-feedback.jsonl is worker-owned, append-only, and lives inside
345
+ // artifactsDir — so the rm below destroys it. It had no archive step at all
346
+ // while the friction records and the ledger beside it both had one
347
+ // (DAT-4802dc9e).
348
+ try {
349
+ const mismatch = await archiveVerified(copy, join(params.artifactsDir, AGENT_FEEDBACK_FILENAME), join(dirname(destination), `audit-${AGENT_FEEDBACK_FILENAME}`));
350
+ if (mismatch)
351
+ lost.push(AGENT_FEEDBACK_FILENAME + " (" + mismatch + ")");
352
+ }
353
+ catch (error) {
354
+ if (!isFileMissingError(error)) {
355
+ lost.push(`${AGENT_FEEDBACK_FILENAME} (${error instanceof Error ? error.message : String(error)})`);
356
+ }
220
357
  }
221
358
  // Archive the friction close-out record with the promoted deliverables BEFORE
222
359
  // the rm below destroys it — the walk completed (the close gate enforced it),
223
360
  // but no consumer has read the record yet. Best-effort, like the findings copy.
224
- await archiveFrictionRecords({
361
+ // The RETURN is consumed, not discarded. `archiveFrictionRecords` warns per
362
+ // failed file and simply omits it from the archived list, so dropping the
363
+ // return meant a friction record that failed to copy was destroyed by the rm
364
+ // below with nothing gating it - the same class as the findings and ledger
365
+ // archives beside it. Comparing the archived count against what is on disk
366
+ // surfaces a per-file failure without reaching into that module's internals.
367
+ const frictionNames = await readdir(frictionCaptureDir(params.artifactsDir))
368
+ .then((names) => names.filter((name) => name.endsWith(".json")))
369
+ .catch(() => []);
370
+ const archivedFriction = await archiveFrictionRecords({
225
371
  artifactsDir: params.artifactsDir,
226
372
  destDir: dirname(destination),
227
373
  prefix: "audit-friction",
228
374
  copyFile: copy,
229
375
  warn: (message) => warn(`audit-code: ${message}`),
230
376
  });
377
+ if (archivedFriction.length < frictionNames.length) {
378
+ lost.push(String(frictionNames.length - archivedFriction.length) +
379
+ " friction record(s) (archived " +
380
+ String(archivedFriction.length) + " of " +
381
+ String(frictionNames.length) + ")");
382
+ }
231
383
  // The submission ledger rides the same seam. It is the only durable statement
232
384
  // that a run drifted and was repaired — a rejection, a re-emit, a hand
233
385
  // recovery — so letting the tree rm take it would mean the distinction
@@ -235,8 +387,17 @@ export async function promoteFinalAuditReport(params, options = {}) {
235
387
  // Best-effort: a run that never drifted has no ledger to archive.
236
388
  const ledgerSource = submissionLedgerPath(params.artifactsDir);
237
389
  const ledgerDestination = join(dirname(destination), "audit-submission-ledger.jsonl");
390
+ // Read the drops BEFORE the copy and off the reader's own return value: the
391
+ // `dropped` property is non-enumerable, so it would not survive being passed
392
+ // through anything that clones or serializes. The ARCHIVE itself stays a byte
393
+ // copy — never a re-serialization of the parsed events — so the archived file
394
+ // keeps the torn lines the reader could not use. Surfacing the drops is how the
395
+ // RESULT stops claiming a cleaner record than the bytes contain.
396
+ const ledgerDropped = (await readSubmissionLedger(params.artifactsDir)).dropped;
238
397
  try {
239
- await copy(ledgerSource, ledgerDestination, { force: true });
398
+ const mismatch = await archiveVerified(copy, ledgerSource, ledgerDestination);
399
+ if (mismatch)
400
+ lost.push("the submission ledger (" + mismatch + ")");
240
401
  }
241
402
  catch (error) {
242
403
  // A missing ledger is the ordinary case (nothing was ever submitted through
@@ -245,19 +406,35 @@ export async function promoteFinalAuditReport(params, options = {}) {
245
406
  // announced, exactly as the friction-archive seam announces its own copy
246
407
  // failures. Still best-effort: bookkeeping must not fail a completed audit.
247
408
  if (!isFileMissingError(error)) {
248
- warn(`audit-code: could not archive the submission ledger to ${ledgerDestination}: ` +
249
- (error instanceof Error ? error.message : String(error)));
409
+ // GATES THE DELETE, like every other member of the archive set. Warning
410
+ // and falling through meant the one durable statement that this run
411
+ // drifted and was repaired got destroyed by the rm below - the exact loss
412
+ // the ledger exists to prevent, with only a console line left behind.
413
+ lost.push("the submission ledger (" +
414
+ (error instanceof Error ? error.message : String(error)) + ")");
250
415
  }
251
416
  }
417
+ const dropped = ledgerDropped.length > 0 ? { ledger_dropped: ledgerDropped } : {};
418
+ // THE DELETE IS CONDITIONED ON VERIFIED COPIES (INV 1). Anything that failed
419
+ // to archive still exists only inside artifactsDir, so removing it destroys
420
+ // the sole copy. Keeping the directory is always recoverable; the delete is
421
+ // not — REL-4802dc9e.
422
+ if (lost.length > 0) {
423
+ const warning = `audit-code: promoted final report to ${destination}, but could NOT archive ` +
424
+ `${lost.join("; ")} — leaving ${params.artifactsDir} in place rather than ` +
425
+ "destroying the only copy. Recover those files, then remove the directory by hand.";
426
+ warn(warning);
427
+ return { promoted: true, cleaned: false, warning, unarchived: lost, ...dropped };
428
+ }
252
429
  try {
253
430
  await remove(params.artifactsDir, { recursive: true, force: true });
254
- return { promoted: true, cleaned: true };
431
+ return { promoted: true, cleaned: true, ...dropped };
255
432
  }
256
433
  catch (error) {
257
434
  const warning = `audit-code: promoted final report to ${destination}, but could not remove ${params.artifactsDir}: ` +
258
435
  (error instanceof Error ? error.message : String(error));
259
436
  warn(warning);
260
- return { promoted: true, cleaned: false, warning };
437
+ return { promoted: true, cleaned: false, warning, ...dropped };
261
438
  }
262
439
  }
263
440
  //# sourceMappingURL=artifacts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/audit/io/artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/audit/io/artifacts.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,15 @@
1
1
  import type { ToolingManifest } from "../types/toolingManifest.js";
2
2
  export declare const TOOLING_INPUTS: readonly ["audit-code.mjs", "wrapper/audit-code-wrapper-lib.mjs", "package.json", "dist", "schemas", "skills/audit-code"];
3
+ /**
4
+ * Read `version` from the package.json under `packageRoot`, or `null` when the
5
+ * file is absent, unreadable, malformed, or carries a non-string version — a
6
+ * missing tooling version must never abort manifest construction.
7
+ *
8
+ * Exported and root-parameterized so its failure branch is reachable from a
9
+ * test against a temp directory: the regression it guards (a parse failure that
10
+ * reports to stderr and degrades to `null`) is only actually guarded by a test
11
+ * that runs THIS function, not a copy of it.
12
+ */
13
+ export declare function readPackageVersion(packageRoot: string): Promise<string | null>;
3
14
  export declare function buildToolingManifest(): Promise<ToolingManifest>;
4
15
  //# sourceMappingURL=toolingManifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolingManifest.d.ts","sourceRoot":"","sources":["../../../src/audit/io/toolingManifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAWnE,eAAO,MAAM,cAAc,2HAOjB,CAAC;AA+CX,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,eAAe,CAAC,CA0BrE"}
1
+ {"version":3,"file":"toolingManifest.d.ts","sourceRoot":"","sources":["../../../src/audit/io/toolingManifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAWnE,eAAO,MAAM,cAAc,2HAOjB,CAAC;AA4BX;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBxB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,eAAe,CAAC,CA0BrE"}
@@ -37,8 +37,18 @@ async function collectFiles(path) {
37
37
  }
38
38
  return files;
39
39
  }
40
- async function readPackageVersion() {
41
- const packageJsonPath = join(PACKAGE_ROOT, "package.json");
40
+ /**
41
+ * Read `version` from the package.json under `packageRoot`, or `null` when the
42
+ * file is absent, unreadable, malformed, or carries a non-string version — a
43
+ * missing tooling version must never abort manifest construction.
44
+ *
45
+ * Exported and root-parameterized so its failure branch is reachable from a
46
+ * test against a temp directory: the regression it guards (a parse failure that
47
+ * reports to stderr and degrades to `null`) is only actually guarded by a test
48
+ * that runs THIS function, not a copy of it.
49
+ */
50
+ export async function readPackageVersion(packageRoot) {
51
+ const packageJsonPath = join(packageRoot, "package.json");
42
52
  if (!(await pathExists(packageJsonPath))) {
43
53
  return null;
44
54
  }
@@ -71,7 +81,7 @@ export async function buildToolingManifest() {
71
81
  return {
72
82
  generated_at: new Date().toISOString(),
73
83
  package_root: PACKAGE_ROOT,
74
- package_version: await readPackageVersion(),
84
+ package_version: await readPackageVersion(PACKAGE_ROOT),
75
85
  implementation_hash: hash.digest("hex"),
76
86
  inputs: existingInputs,
77
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"toolingManifest.js","sourceRoot":"","sources":["../../../src/audit/io/toolingManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,kEAAkE;AAClE,mCAAmC;AACnC,MAAM,YAAY,GAAG,OAAO,CAC1B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,gBAAgB;IAChB,oCAAoC;IACpC,cAAc;IACd,MAAM;IACN,SAAS;IACT,mBAAmB;CACX,CAAC;AAEX,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAErE,CAAC;QACF,OAAO,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yDAAyD,eAAe,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CACxI,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,YAAY,EAAE,YAAY;QAC1B,eAAe,EAAE,MAAM,kBAAkB,EAAE;QAC3C,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,MAAM,EAAE,cAAc;KACvB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"toolingManifest.js","sourceRoot":"","sources":["../../../src/audit/io/toolingManifest.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,49 @@
1
1
  import type { ArtifactBundle } from "../io/artifacts.js";
2
+ import type { AuditState } from "../types/auditState.js";
2
3
  import type { AdvanceAuditOptions, AdvanceAuditResult } from "./advanceTypes.js";
3
4
  export type { AdvanceAuditOptions, AdvanceAuditResult } from "./advanceTypes.js";
5
+ /**
6
+ * Hard ceiling on the internal drain loop. The regen frontier is finite (each
7
+ * deterministic step satisfies at least one obligation and no deterministic
8
+ * executor re-opens an upstream one), so the loop terminates naturally when the
9
+ * next step is a host-delegation boundary / complete / no-runner. This bound is
10
+ * a belt-and-braces guard against an unforeseen re-opening cycle — larger than
11
+ * the deterministic obligation frontier can ever be, so it never trips on a
12
+ * healthy run. Chain-length/index-agnostic: it caps iterations, not a fixed
13
+ * executor index.
14
+ *
15
+ * Kept as a LOCAL cap enforced from inside the drain obligations' `execute`
16
+ * (see `runDrainStep` below) rather than threaded through the shared engine's
17
+ * `advance(..., { maxTransitions })` — that option THROWS once exceeded, while
18
+ * this cap has always been a graceful "stop and hand back the last good
19
+ * result" backstop (the caller simply resumes the drain on its next
20
+ * `next-step` call). Mirrors the CLI fold's (`nextStepHelpers.ts`) established
21
+ * precedent of keeping cycle/step-count bookkeeping in the local `Ctx` rather
22
+ * than in the engine's own transition counter.
23
+ */
24
+ export declare const MAX_DRAIN_STEPS = 64;
25
+ /**
26
+ * The engine bound, DERIVED from the graceful cap rather than written as a
27
+ * literal at the call site. Raising `MAX_DRAIN_STEPS` therefore can never
28
+ * silently convert the graceful stop into an engine throw — there is no second
29
+ * number to remember to re-derive.
30
+ */
31
+ export declare function engineMaxTransitions(cap?: number): number;
32
+ export interface PriorityOrderingViolation {
33
+ /** The slice-projected downstream artifact. */
34
+ downstream: string;
35
+ /** The upstream artifact whose edge into it is slice-projected. */
36
+ upstream: string;
37
+ reason: string;
38
+ }
39
+ /**
40
+ * Check the ordering guarantee above against a priority order. Empty ⇒ the
41
+ * guarantee holds. Defaults to the live `PRIORITY`; a caller may pass a
42
+ * candidate order (which is how the guarantee is red-green validated: an order
43
+ * that puts a downstream's obligation ahead of its slice-projected upstream's
44
+ * must come back non-empty).
45
+ */
46
+ export declare function findPriorityOrderingViolations(priority?: readonly string[]): PriorityOrderingViolation[];
4
47
  /**
5
48
  * The identity of the executor that ACTUALLY threw, carried ON the error.
6
49
  *
@@ -37,6 +80,27 @@ export interface AdvanceHeartbeat {
37
80
  stop: () => void;
38
81
  }
39
82
  export declare function startAdvanceHeartbeat(intervalMs?: number): AdvanceHeartbeat;
83
+ /**
84
+ * `derive` for one PRIORITY id: the same holistic `deriveAuditState` scan
85
+ * `decideNextStep` runs, narrowed to this id's own missing/stale/satisfied
86
+ * state. A pruned/absent obligation (e.g. `friction_capture_current`, which
87
+ * `deriveAuditState` never emits — see `executorRunners.ts`) is satisfied, so
88
+ * the scan can never select it — preserving today's "unreachable" behavior.
89
+ *
90
+ * MEMOIZED per bundle object identity: `findNextObligation` calls every def's
91
+ * `derive` on the SAME bundle each scan (one scan per fold iteration), and
92
+ * `deriveAuditState` runs the full `computeStaleArtifacts` content-hash pass —
93
+ * without the cache each scan would recompute it |PRIORITY| times (~8-9x the
94
+ * hand loop's per-iteration derivation count). The cache is a per-`advanceAudit`
95
+ * -call `WeakMap` created in `advanceAudit` (never module-level, so a caller
96
+ * that mutates a bundle in place between calls can never observe a stale
97
+ * entry); bundle identity changes exactly at each `transition`
98
+ * (`runSingleAdvanceStep` builds a fresh `finalizedBundle`), so the memo
99
+ * yields exactly one derivation per scanned bundle. Pure memoization — WHAT is
100
+ * derived is unchanged, and `deriveAuditState` itself is deterministic in the
101
+ * bundle (no time/randomness inputs).
102
+ */
103
+ export declare function deriveObligationState(id: string, cache: WeakMap<ArtifactBundle, AuditState>): (bundle: ArtifactBundle) => "missing" | "stale" | "satisfied";
40
104
  /**
41
105
  * Advance the audit by ONE bounded step, then SAFELY DRAIN the deterministic
42
106
  * regen frontier within the SAME call: run the first bounded step, then keep
@@ -1 +1 @@
1
- {"version":3,"file":"advance.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/advance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAwBzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEjF,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AA+BjF;;;;;;;;;;;GAWG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mFAAmF;IACnF,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOzE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,eAAe,GAAG,SAAS,CAS7B;AAwCD,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAgB,qBAAqB,CACnC,UAAU,GAAE,MAA8B,GACzC,gBAAgB,CAsBlB;AAgWD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAY7B"}
1
+ {"version":3,"file":"advance.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/advance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAwBzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEjF,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEjF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;AAWlC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAwB,GAAG,MAAM,CAE1E;AAwCD,MAAM,WAAW,yBAAyB;IACxC,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,GAAE,SAAS,MAAM,EAAa,GACrC,yBAAyB,EAAE,CA4C7B;AAqFD;;;;;;;;;;;GAWG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mFAAmF;IACnF,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOzE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,eAAe,GAAG,SAAS,CAS7B;AAwCD,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAgB,qBAAqB,CACnC,UAAU,GAAE,MAA8B,GACzC,gBAAgB,CAsBlB;AAiOD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,GACzC,CAAC,MAAM,EAAE,cAAc,KAAK,SAAS,GAAG,OAAO,GAAG,WAAW,CAoB/D;AAiFD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAY7B"}