audit-tools 0.42.0 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/dispatch/merge-results.mjs +229 -140
  2. package/dispatch/validate-result.mjs +98 -40
  3. package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
  4. package/dist/audit/cli/conceptualDispatch.js +35 -3
  5. package/dist/audit/cli/conceptualDispatch.js.map +1 -1
  6. package/dist/audit/cli/dispatch/hostHandoff.d.ts +9 -1
  7. package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
  8. package/dist/audit/cli/dispatch/hostHandoff.js +94 -38
  9. package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
  10. package/dist/audit/cli/nextStepCommand.d.ts +64 -0
  11. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  12. package/dist/audit/cli/nextStepCommand.js +877 -783
  13. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  14. package/dist/audit/cli/nextStepHelpers.d.ts +12 -0
  15. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  16. package/dist/audit/cli/nextStepHelpers.js +34 -1
  17. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  18. package/dist/audit/cli/steps.d.ts +2 -2
  19. package/dist/audit/extractors/graph.d.ts +28 -2
  20. package/dist/audit/extractors/graph.d.ts.map +1 -1
  21. package/dist/audit/extractors/graph.js +122 -11
  22. package/dist/audit/extractors/graph.js.map +1 -1
  23. package/dist/audit/extractors/graphRoutes.d.ts +8 -0
  24. package/dist/audit/extractors/graphRoutes.d.ts.map +1 -1
  25. package/dist/audit/extractors/graphRoutes.js +71 -4
  26. package/dist/audit/extractors/graphRoutes.js.map +1 -1
  27. package/dist/audit/io/artifacts.d.ts +55 -0
  28. package/dist/audit/io/artifacts.d.ts.map +1 -1
  29. package/dist/audit/io/artifacts.js +189 -12
  30. package/dist/audit/io/artifacts.js.map +1 -1
  31. package/dist/audit/io/toolingManifest.d.ts +11 -0
  32. package/dist/audit/io/toolingManifest.d.ts.map +1 -1
  33. package/dist/audit/io/toolingManifest.js +13 -3
  34. package/dist/audit/io/toolingManifest.js.map +1 -1
  35. package/dist/audit/orchestrator/advance.d.ts +64 -0
  36. package/dist/audit/orchestrator/advance.d.ts.map +1 -1
  37. package/dist/audit/orchestrator/advance.js +191 -57
  38. package/dist/audit/orchestrator/advance.js.map +1 -1
  39. package/dist/audit/orchestrator/charterClarificationExecutor.d.ts.map +1 -1
  40. package/dist/audit/orchestrator/charterClarificationExecutor.js +55 -21
  41. package/dist/audit/orchestrator/charterClarificationExecutor.js.map +1 -1
  42. package/dist/audit/orchestrator/flowCoverage.d.ts.map +1 -1
  43. package/dist/audit/orchestrator/flowCoverage.js +7 -10
  44. package/dist/audit/orchestrator/flowCoverage.js.map +1 -1
  45. package/dist/audit/orchestrator/flowPlanning.d.ts +54 -1
  46. package/dist/audit/orchestrator/flowPlanning.d.ts.map +1 -1
  47. package/dist/audit/orchestrator/flowPlanning.js +77 -18
  48. package/dist/audit/orchestrator/flowPlanning.js.map +1 -1
  49. package/dist/audit/orchestrator/flowRequeue.d.ts.map +1 -1
  50. package/dist/audit/orchestrator/flowRequeue.js +6 -10
  51. package/dist/audit/orchestrator/flowRequeue.js.map +1 -1
  52. package/dist/audit/orchestrator/partitionTaskGraph.d.ts.map +1 -1
  53. package/dist/audit/orchestrator/partitionTaskGraph.js +2 -2
  54. package/dist/audit/orchestrator/partitionTaskGraph.js.map +1 -1
  55. package/dist/audit/orchestrator/requeueFold.d.ts.map +1 -1
  56. package/dist/audit/orchestrator/requeueFold.js +18 -5
  57. package/dist/audit/orchestrator/requeueFold.js.map +1 -1
  58. package/dist/audit/orchestrator/staleness.d.ts +24 -1
  59. package/dist/audit/orchestrator/staleness.d.ts.map +1 -1
  60. package/dist/audit/orchestrator/staleness.js +147 -16
  61. package/dist/audit/orchestrator/staleness.js.map +1 -1
  62. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts +26 -0
  63. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts.map +1 -1
  64. package/dist/audit/orchestrator/syntaxResolutionExecutor.js +97 -12
  65. package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
  66. package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
  67. package/dist/audit/orchestrator/taskBuilder.js +111 -21
  68. package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
  69. package/dist/audit/orchestrator/trivialAudit.d.ts +17 -1
  70. package/dist/audit/orchestrator/trivialAudit.d.ts.map +1 -1
  71. package/dist/audit/orchestrator/trivialAudit.js +31 -4
  72. package/dist/audit/orchestrator/trivialAudit.js.map +1 -1
  73. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  74. package/dist/audit/reporting/synthesis.js +2 -3
  75. package/dist/audit/reporting/synthesis.js.map +1 -1
  76. package/dist/audit/reporting/workBlocks.d.ts.map +1 -1
  77. package/dist/audit/reporting/workBlocks.js +4 -38
  78. package/dist/audit/reporting/workBlocks.js.map +1 -1
  79. package/dist/audit/types/analyzerCapability.d.ts +6 -6
  80. package/dist/audit/types/charterRegister.d.ts +30 -12
  81. package/dist/audit/types/charterRegister.d.ts.map +1 -1
  82. package/dist/audit/types/charterRegister.js +22 -9
  83. package/dist/audit/types/charterRegister.js.map +1 -1
  84. package/dist/audit/validation/anchorGrounding.d.ts.map +1 -1
  85. package/dist/audit/validation/anchorGrounding.js +17 -0
  86. package/dist/audit/validation/anchorGrounding.js.map +1 -1
  87. package/dist/audit/validation/auditResults.d.ts +17 -0
  88. package/dist/audit/validation/auditResults.d.ts.map +1 -1
  89. package/dist/audit/validation/auditResults.js +50 -17
  90. package/dist/audit/validation/auditResults.js.map +1 -1
  91. package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts +48 -0
  92. package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts.map +1 -1
  93. package/dist/remediate/contractPipeline/cyclicSeamResolution.js +128 -0
  94. package/dist/remediate/contractPipeline/cyclicSeamResolution.js.map +1 -1
  95. package/dist/remediate/contractPipeline/derive.d.ts +8 -5
  96. package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
  97. package/dist/remediate/contractPipeline/derive.js +8 -16
  98. package/dist/remediate/contractPipeline/derive.js.map +1 -1
  99. package/dist/remediate/index.d.ts.map +1 -1
  100. package/dist/remediate/index.js +43 -2
  101. package/dist/remediate/index.js.map +1 -1
  102. package/dist/remediate/intent/intentOrdering.d.ts +13 -5
  103. package/dist/remediate/intent/intentOrdering.d.ts.map +1 -1
  104. package/dist/remediate/intent/intentOrdering.js +56 -25
  105. package/dist/remediate/intent/intentOrdering.js.map +1 -1
  106. package/dist/remediate/phases/close.d.ts +57 -2
  107. package/dist/remediate/phases/close.d.ts.map +1 -1
  108. package/dist/remediate/phases/close.js +260 -36
  109. package/dist/remediate/phases/close.js.map +1 -1
  110. package/dist/remediate/state/disposition.d.ts +26 -4
  111. package/dist/remediate/state/disposition.d.ts.map +1 -1
  112. package/dist/remediate/state/itemStatus.d.ts +33 -6
  113. package/dist/remediate/state/itemStatus.d.ts.map +1 -1
  114. package/dist/remediate/state/itemStatus.js +154 -39
  115. package/dist/remediate/state/itemStatus.js.map +1 -1
  116. package/dist/remediate/state/types.d.ts +41 -2
  117. package/dist/remediate/state/types.d.ts.map +1 -1
  118. package/dist/remediate/state/types.js.map +1 -1
  119. package/dist/remediate/steps/contractPipeline.d.ts +287 -15
  120. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  121. package/dist/remediate/steps/contractPipeline.js +1664 -987
  122. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  123. package/dist/remediate/steps/contractPipelinePrompts.js +1 -1
  124. package/dist/remediate/steps/contractPipelinePrompts.js.map +1 -1
  125. package/dist/remediate/steps/dispatch/hostHandoff.d.ts +137 -2
  126. package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
  127. package/dist/remediate/steps/dispatch/hostHandoff.js +713 -59
  128. package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
  129. package/dist/remediate/steps/finalGate.d.ts +136 -37
  130. package/dist/remediate/steps/finalGate.d.ts.map +1 -1
  131. package/dist/remediate/steps/finalGate.js +120 -86
  132. package/dist/remediate/steps/finalGate.js.map +1 -1
  133. package/dist/remediate/steps/gateCommands.d.ts +8 -0
  134. package/dist/remediate/steps/gateCommands.d.ts.map +1 -1
  135. package/dist/remediate/steps/gateCommands.js +40 -11
  136. package/dist/remediate/steps/gateCommands.js.map +1 -1
  137. package/dist/remediate/steps/nextStep.d.ts +96 -5
  138. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  139. package/dist/remediate/steps/nextStep.js +668 -147
  140. package/dist/remediate/steps/nextStep.js.map +1 -1
  141. package/dist/remediate/steps/types.d.ts +4 -1
  142. package/dist/remediate/steps/types.d.ts.map +1 -1
  143. package/dist/remediate/steps/types.js +10 -0
  144. package/dist/remediate/steps/types.js.map +1 -1
  145. package/dist/remediate/validation/artifacts.d.ts +20 -0
  146. package/dist/remediate/validation/artifacts.d.ts.map +1 -1
  147. package/dist/remediate/validation/artifacts.js +239 -13
  148. package/dist/remediate/validation/artifacts.js.map +1 -1
  149. package/dist/remediate/validation/contractPipelineGates.d.ts +58 -0
  150. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  151. package/dist/remediate/validation/contractPipelineGates.js +167 -43
  152. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  153. package/dist/shared/analyzers/acquisitionEngine.d.ts +72 -25
  154. package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
  155. package/dist/shared/analyzers/acquisitionEngine.js +149 -15
  156. package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
  157. package/dist/shared/analyzers/binaryAcquisition.d.ts +27 -2
  158. package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
  159. package/dist/shared/analyzers/binaryAcquisition.js +149 -43
  160. package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
  161. package/dist/shared/analyzers/candidates.d.ts +9 -8
  162. package/dist/shared/analyzers/candidates.d.ts.map +1 -1
  163. package/dist/shared/analyzers/candidates.js +96 -64
  164. package/dist/shared/analyzers/candidates.js.map +1 -1
  165. package/dist/shared/analyzers/normalizeExternal.d.ts +40 -12
  166. package/dist/shared/analyzers/normalizeExternal.d.ts.map +1 -1
  167. package/dist/shared/analyzers/normalizeExternal.js +74 -18
  168. package/dist/shared/analyzers/normalizeExternal.js.map +1 -1
  169. package/dist/shared/analyzers/rubocop.d.ts +14 -13
  170. package/dist/shared/analyzers/rubocop.d.ts.map +1 -1
  171. package/dist/shared/analyzers/rubocop.js +29 -6
  172. package/dist/shared/analyzers/rubocop.js.map +1 -1
  173. package/dist/shared/analyzers/types.d.ts +196 -13
  174. package/dist/shared/analyzers/types.d.ts.map +1 -1
  175. package/dist/shared/analyzers/types.js +122 -9
  176. package/dist/shared/analyzers/types.js.map +1 -1
  177. package/dist/shared/decompose/charterClarification.d.ts +12 -1
  178. package/dist/shared/decompose/charterClarification.d.ts.map +1 -1
  179. package/dist/shared/decompose/charterClarification.js +11 -4
  180. package/dist/shared/decompose/charterClarification.js.map +1 -1
  181. package/dist/shared/decompose/charterExtraction.d.ts +20 -10
  182. package/dist/shared/decompose/charterExtraction.d.ts.map +1 -1
  183. package/dist/shared/decompose/charterExtraction.js +52 -23
  184. package/dist/shared/decompose/charterExtraction.js.map +1 -1
  185. package/dist/shared/decompose/contentCoherence.d.ts +43 -2
  186. package/dist/shared/decompose/contentCoherence.d.ts.map +1 -1
  187. package/dist/shared/decompose/contentCoherence.js +109 -5
  188. package/dist/shared/decompose/contentCoherence.js.map +1 -1
  189. package/dist/shared/decompose/modularity.d.ts +17 -0
  190. package/dist/shared/decompose/modularity.d.ts.map +1 -1
  191. package/dist/shared/decompose/modularity.js +78 -3
  192. package/dist/shared/decompose/modularity.js.map +1 -1
  193. package/dist/shared/decompose/workBlockSeams.d.ts +45 -0
  194. package/dist/shared/decompose/workBlockSeams.d.ts.map +1 -0
  195. package/dist/shared/decompose/workBlockSeams.js +82 -0
  196. package/dist/shared/decompose/workBlockSeams.js.map +1 -0
  197. package/dist/shared/index.d.ts +4 -3
  198. package/dist/shared/index.d.ts.map +1 -1
  199. package/dist/shared/index.js +4 -2
  200. package/dist/shared/index.js.map +1 -1
  201. package/dist/shared/intent/freeFormIntentInterpreter.d.ts +12 -2
  202. package/dist/shared/intent/freeFormIntentInterpreter.d.ts.map +1 -1
  203. package/dist/shared/intent/freeFormIntentInterpreter.js +27 -22
  204. package/dist/shared/intent/freeFormIntentInterpreter.js.map +1 -1
  205. package/dist/shared/intent/pathScope.d.ts +12 -1
  206. package/dist/shared/intent/pathScope.d.ts.map +1 -1
  207. package/dist/shared/intent/pathScope.js +56 -19
  208. package/dist/shared/intent/pathScope.js.map +1 -1
  209. package/dist/shared/intent/sharedIntentData.d.ts +19 -1
  210. package/dist/shared/intent/sharedIntentData.d.ts.map +1 -1
  211. package/dist/shared/intent/sharedIntentData.js +33 -8
  212. package/dist/shared/intent/sharedIntentData.js.map +1 -1
  213. package/dist/shared/io/fileLock.d.ts +12 -0
  214. package/dist/shared/io/fileLock.d.ts.map +1 -1
  215. package/dist/shared/io/fileLock.js +48 -5
  216. package/dist/shared/io/fileLock.js.map +1 -1
  217. package/dist/shared/io/json.d.ts +13 -0
  218. package/dist/shared/io/json.d.ts.map +1 -1
  219. package/dist/shared/io/json.js +19 -1
  220. package/dist/shared/io/json.js.map +1 -1
  221. package/dist/shared/reporting/auditDeliverable.d.ts.map +1 -1
  222. package/dist/shared/reporting/auditDeliverable.js +8 -3
  223. package/dist/shared/reporting/auditDeliverable.js.map +1 -1
  224. package/dist/shared/steps/stepEmissionScaffold.d.ts +69 -0
  225. package/dist/shared/steps/stepEmissionScaffold.d.ts.map +1 -0
  226. package/dist/shared/steps/stepEmissionScaffold.js +83 -0
  227. package/dist/shared/steps/stepEmissionScaffold.js.map +1 -0
  228. package/dist/shared/submission/handRecovery.d.ts.map +1 -1
  229. package/dist/shared/submission/handRecovery.js +69 -4
  230. package/dist/shared/submission/handRecovery.js.map +1 -1
  231. package/dist/shared/submission/submissionIdentity.d.ts +10 -1
  232. package/dist/shared/submission/submissionIdentity.d.ts.map +1 -1
  233. package/dist/shared/submission/submissionIdentity.js +12 -3
  234. package/dist/shared/submission/submissionIdentity.js.map +1 -1
  235. package/dist/shared/submission/submissionLedger.d.ts +43 -2
  236. package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
  237. package/dist/shared/submission/submissionLedger.js +50 -7
  238. package/dist/shared/submission/submissionLedger.js.map +1 -1
  239. package/dist/shared/tooling/allowlistedExec.d.ts +9 -0
  240. package/dist/shared/tooling/allowlistedExec.d.ts.map +1 -1
  241. package/dist/shared/tooling/allowlistedExec.js +19 -2
  242. package/dist/shared/tooling/allowlistedExec.js.map +1 -1
  243. package/dist/shared/types/charter.d.ts +24 -0
  244. package/dist/shared/types/charter.d.ts.map +1 -1
  245. package/dist/shared/types/charter.js +9 -0
  246. package/dist/shared/types/charter.js.map +1 -1
  247. package/dist/shared/types/finding.d.ts +105 -53
  248. package/dist/shared/types/finding.d.ts.map +1 -1
  249. package/dist/shared/types/finding.js +38 -11
  250. package/dist/shared/types/finding.js.map +1 -1
  251. package/dist/shared/types/remediationOutcome.d.ts +282 -9
  252. package/dist/shared/types/remediationOutcome.d.ts.map +1 -1
  253. package/dist/shared/types/remediationOutcome.js +174 -1
  254. package/dist/shared/types/remediationOutcome.js.map +1 -1
  255. package/dist/shared/validation/findingsReport.d.ts.map +1 -1
  256. package/dist/shared/validation/findingsReport.js +19 -1
  257. package/dist/shared/validation/findingsReport.js.map +1 -1
  258. package/package.json +2 -1
  259. package/remediate-code.mjs +15 -0
  260. package/wrapper/remediate-code-wrapper-install-hosts.mjs +45 -4
  261. package/wrapper/remediate-code-wrapper-install-renderers.mjs +12 -2
@@ -6,6 +6,7 @@
6
6
  * those components.
7
7
  */
8
8
  import { z } from "zod";
9
+ import { louvain, modularityOf } from "./modularity.js";
9
10
  export const CONTENT_COHERENCE_SCORES = Object.freeze({
10
11
  call_import_reference_adjacency: 70,
11
12
  same_directory: 10,
@@ -15,6 +16,32 @@ export const CONTENT_COHERENCE_SCORES = Object.freeze({
15
16
  shared_unit: 80,
16
17
  });
17
18
  export const CONTENT_COHERENCE_THRESHOLD = 60;
19
+ /**
20
+ * The audit TASK draw. Unmeasured for collapse — its eligibility is deliberately
21
+ * left as-is until it is measured on its own lap (`docs/backlog/open-bugs.md`).
22
+ */
23
+ export const TASK_DRAW_COHERENCE_POLICY = Object.freeze({
24
+ eligibility: "weighted_score_threshold",
25
+ refineAtModularityPeak: false,
26
+ });
27
+ /** The FINDINGS draw (work blocks + the findings deliverable). Owner cut, 2026-08-19. */
28
+ export const FINDINGS_DRAW_COHERENCE_POLICY = Object.freeze({
29
+ eligibility: "shared_file_and_same_lens",
30
+ refineAtModularityPeak: true,
31
+ });
32
+ /**
33
+ * The canonical modularity resolution (γ). NOT a tuned knob and never to become
34
+ * one: γ = 1 is the literature default, at which the trivial whole-component
35
+ * partition scores exactly 0, so "did the split beat keeping the component
36
+ * whole" is answered by the data alone.
37
+ */
38
+ const MODULARITY_RESOLUTION = 1;
39
+ /**
40
+ * Components at or below this size are handed back unrefined. A triviality
41
+ * guard, not a size budget: modularity over one, two, or three nodes describes
42
+ * noise rather than structure, and nothing downstream reads the number.
43
+ */
44
+ const TRIVIAL_COMPONENT_SIZE = 3;
18
45
  export const NormalizedContentCoherenceItemSchema = z
19
46
  .object({
20
47
  id: z.string().min(1),
@@ -167,6 +194,55 @@ function scoreEvidence(evidence) {
167
194
  }
168
195
  return score;
169
196
  }
197
+ function isEligible(direct, score, policy) {
198
+ return policy.eligibility === "shared_file_and_same_lens"
199
+ ? direct.sharedFile && direct.sameLens
200
+ : score >= CONTENT_COHERENCE_THRESHOLD;
201
+ }
202
+ /**
203
+ * Split one eligible-edge component at its modularity PEAK, or hand it back
204
+ * whole. The component's own eligible pairs are the weighted graph (edge weight =
205
+ * the pair's evidence score), Louvain proposes a partition at the canonical γ,
206
+ * and the proposal is accepted only when it scores strictly above keeping the
207
+ * component whole. A component held together by one weak bridge splits there.
208
+ * Nothing in the decision is a constant of any denomination.
209
+ *
210
+ * What survives whole is a UNIFORM-weight clique: with every edge equal, any cut
211
+ * scores below the trivial partition, so it cannot be split. A clique whose
212
+ * weights DIFFER can still split — six findings on one file and one lens but two
213
+ * units weigh 220 within a unit and 140 across it, and that contrast alone beats
214
+ * the whole. That is intended (the halves are genuinely less coupled), and the
215
+ * shared file then surfaces as a seam between them rather than disappearing into
216
+ * one block. "A clique stays whole" without the uniform qualifier is an
217
+ * overclaim; the two cases are pinned separately in
218
+ * `tests/shared/content-coherence.test.ts`.
219
+ */
220
+ function refineAtModularityPeak(members, candidates) {
221
+ if (members.length <= TRIVIAL_COMPONENT_SIZE)
222
+ return [[...members]];
223
+ const graph = {
224
+ nodes: [...members],
225
+ edges: candidates.map((candidate) => ({
226
+ a: candidate.left,
227
+ b: candidate.right,
228
+ weight: candidate.score,
229
+ })),
230
+ };
231
+ const proposed = louvain(graph, MODULARITY_RESOLUTION);
232
+ const whole = new Map(members.map((id) => [id, members[0] ?? id]));
233
+ if (modularityOf(graph, proposed, MODULARITY_RESOLUTION) <=
234
+ modularityOf(graph, whole, MODULARITY_RESOLUTION)) {
235
+ return [[...members]];
236
+ }
237
+ const communities = new Map();
238
+ for (const member of members) {
239
+ const community = proposed.get(member) ?? member;
240
+ const group = communities.get(community) ?? [];
241
+ group.push(member);
242
+ communities.set(community, group);
243
+ }
244
+ return [...communities.values()];
245
+ }
170
246
  function findRoot(parent, id) {
171
247
  const lineage = [];
172
248
  let root = id;
@@ -178,8 +254,16 @@ function findRoot(parent, id) {
178
254
  parent.set(member, root);
179
255
  return root;
180
256
  }
181
- /** Build the complete canonical trace used by both audit and findings draws. */
182
- export function buildContentCoherenceTrace(input) {
257
+ /**
258
+ * Build the complete canonical trace used by both audit and findings draws.
259
+ *
260
+ * `policy` is REQUIRED and has no default: a draw that forgot to declare its
261
+ * eligibility would otherwise silently inherit the other draw's, which is
262
+ * exactly the class of latent failure this project refuses to leave to a
263
+ * caller's memory. Pass {@link TASK_DRAW_COHERENCE_POLICY} or
264
+ * {@link FINDINGS_DRAW_COHERENCE_POLICY}.
265
+ */
266
+ export function buildContentCoherenceTrace(input, policy) {
183
267
  if (!isRecord(input)) {
184
268
  throw new Error("Content-coherence input must be an object.");
185
269
  }
@@ -198,11 +282,17 @@ export function buildContentCoherenceTrace(input) {
198
282
  const left = normalizedItems[leftIndex];
199
283
  const right = normalizedItems[rightIndex];
200
284
  const evidence = directEvidence(left, right);
285
+ // Captured BEFORE relationship evidence is folded in — the conjunctive
286
+ // policy must read only what the items themselves assert.
287
+ const direct = {
288
+ sharedFile: evidence.shared_file,
289
+ sameLens: evidence.shared_semantic_tag_or_same_lens,
290
+ };
201
291
  for (const kind of relationshipEvidence.get(pairKey(left.id, right.id)) ?? []) {
202
292
  evidence[kind] = true;
203
293
  }
204
294
  const score = scoreEvidence(evidence);
205
- if (score < CONTENT_COHERENCE_THRESHOLD)
295
+ if (!isEligible(direct, score, policy))
206
296
  continue;
207
297
  eligibleCandidates.push({ left: left.id, right: right.id, score });
208
298
  }
@@ -232,8 +322,22 @@ export function buildContentCoherenceTrace(input) {
232
322
  members.push(item.id);
233
323
  groups.set(root, members);
234
324
  }
235
- const components = [...groups.values()]
236
- .map((members) => members.sort(compareCodeUnits))
325
+ // Bucket the eligible pairs by the component they ended up inside, so
326
+ // refinement reads each component's own weighted evidence graph once.
327
+ const candidatesByRoot = new Map();
328
+ if (policy.refineAtModularityPeak) {
329
+ for (const candidate of eligibleCandidates) {
330
+ const root = findRoot(parent, candidate.left);
331
+ const bucket = candidatesByRoot.get(root) ?? [];
332
+ bucket.push(candidate);
333
+ candidatesByRoot.set(root, bucket);
334
+ }
335
+ }
336
+ const merged = [...groups.entries()].map(([root, members]) => [root, members.sort(compareCodeUnits)]);
337
+ const components = (policy.refineAtModularityPeak
338
+ ? merged.flatMap(([root, members]) => refineAtModularityPeak(members, candidatesByRoot.get(root) ?? []))
339
+ : merged.map(([, members]) => members))
340
+ .map((members) => [...members].sort(compareCodeUnits))
237
341
  .sort((left, right) => compareCodeUnits(left[0] ?? "", right[0] ?? ""));
238
342
  return {
239
343
  normalized_items: normalizedItems,
@@ -1 +1 @@
1
- {"version":3,"file":"contentCoherence.js","sourceRoot":"","sources":["../../../src/shared/decompose/contentCoherence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contentCoherence.js","sourceRoot":"","sources":["../../../src/shared/decompose/contentCoherence.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,23 @@ export declare const DEFAULT_RESOLUTIONS: readonly number[];
34
34
  * lexicographically smallest member). Deterministic for a given graph + γ.
35
35
  */
36
36
  export declare function louvain(graph: WeightedGraph, resolution: number): Partition;
37
+ /**
38
+ * Score a partition with the resolution-parameterised modularity Q the
39
+ * {@link louvain} local-moving phase optimises:
40
+ *
41
+ * Q = Σ_c [ Σ_in(c)/m − γ·(Σ_tot(c)/2m)² ]
42
+ *
43
+ * where Σ_in(c) is the intra-community edge weight (each undirected pair counted
44
+ * once, self-loops once), Σ_tot(c) the summed degree of its members, and m the
45
+ * graph mass. The convention is self-consistent rather than universal, and that
46
+ * is what it is for: the ONE trivial partition (every node in one community)
47
+ * scores exactly `1 − γ`, so comparing a candidate partition against the whole
48
+ * needs no tuned constant — at the canonical γ = 1 the comparison is against 0.
49
+ *
50
+ * Deterministic: communities are accumulated in lexical id order, so the same
51
+ * graph and partition always yield the same float.
52
+ */
53
+ export declare function modularityOf(graph: WeightedGraph, partition: Partition, resolution: number): number;
37
54
  /**
38
55
  * Cluster the same graph at every resolution in the ladder, coarse→fine, and
39
56
  * return the partitions in ladder order. The multi-resolution family is the
@@ -1 +1 @@
1
- {"version":3,"file":"modularity.d.ts","sourceRoot":"","sources":["../../../src/shared/decompose/modularity.ts"],"names":[],"mappings":"AAkBA;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAiD5C;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAyB,CAAC;AA0Q3E;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAgC3E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,EACpB,WAAW,GAAE,SAAS,MAAM,EAAwB,GACnD,SAAS,EAAE,CAEb"}
1
+ {"version":3,"file":"modularity.d.ts","sourceRoot":"","sources":["../../../src/shared/decompose/modularity.ts"],"names":[],"mappings":"AAmCA;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAiD5C;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAyB,CAAC;AAkR3E;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAgC3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GACjB,MAAM,CA0CR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,EACpB,WAAW,GAAE,SAAS,MAAM,EAAwB,GACnD,SAAS,EAAE,CAEb"}
@@ -8,6 +8,23 @@
8
8
  // persists across resolutions is trusted. This module owns only the clustering;
9
9
  // the stability scoring across the resulting partitions lives in consensus.ts.
10
10
  //
11
+ // ARITHMETIC ENVELOPE — what this module accepts, stated honestly. Weights must
12
+ // be finite and positive, and the GRAPH MASS (Σ degrees) must stay inside the
13
+ // exact-integer range; a graph past that is refused rather than silently
14
+ // approximated, because community membership must not depend on input order
15
+ // changing the rounding of very large repeated sums. Two narrower limits were
16
+ // removed after they refused ordinary inputs: the community-degree guard now
17
+ // scales its tolerance to the graph mass instead of a fixed 1e-12 (fractional
18
+ // weights around 1e5 drift past a fixed epsilon by float arithmetic alone), and
19
+ // the modularity penalty divides by 2m before multiplying by Σtot so the bounded
20
+ // VALUE is checked rather than an unbounded intermediate. NOT fixed: the degree
21
+ // guard binds at every AGGREGATED level, where super-node degrees are larger
22
+ // than any original node's, so the mass at which a graph is refused depends on
23
+ // how many Louvain levels it produces — which is data-dependent, and at γ > 1
24
+ // (more, smaller communities → more levels) not monotone in the input size.
25
+ // Nothing in this repo runs above γ = 1; a metric sweep that does should
26
+ // re-measure rather than assume the envelope scales smoothly.
27
+ //
11
28
  // PURE + DETERMINISTIC: no IO, no Math.random, no Date. Ties are broken by
12
29
  // lexical node/community id so the same graph always yields the same partition.
13
30
  // Language-neutral by construction — it consumes only string node ids and numeric
@@ -131,6 +148,14 @@ function buildAdjacency(graph) {
131
148
  */
132
149
  function localMoving(graph, resolution) {
133
150
  const twoM = checkedMultiply(graph.totalWeight, 2, "Graph mass");
151
+ // A community's degree is repeatedly added to and subtracted from as nodes
152
+ // move, and floating-point residue from that scales with the MAGNITUDE of the
153
+ // sums, not with a fixed absolute epsilon. A fixed -1e-12 therefore refused
154
+ // ordinary fractional-weight graphs ("Community degree … became negative") as
155
+ // soon as weights reached ~1e5 over ~100 nodes. Scale the tolerance to the
156
+ // graph's own mass; a genuinely negative degree is a whole weight below zero
157
+ // and stays far outside it.
158
+ const negativeDegreeTolerance = Math.max(1e-9, twoM * 1e-12);
134
159
  const communityOf = new Map();
135
160
  // Σtot(C): total degree of nodes currently in community C.
136
161
  const communityDegree = new Map();
@@ -157,7 +182,7 @@ function localMoving(graph, resolution) {
157
182
  // Remove node from its community.
158
183
  const remainingDegree = (communityDegree.get(current) ?? 0) - nodeDegree;
159
184
  assertSignedBounded(remainingDegree, `Community degree for ${current}`);
160
- if (remainingDegree < -1e-12) {
185
+ if (remainingDegree < -negativeDegreeTolerance) {
161
186
  throw new RangeError(`Community degree for ${current} became negative.`);
162
187
  }
163
188
  communityDegree.set(current, Math.max(0, remainingDegree));
@@ -180,8 +205,12 @@ function localMoving(graph, resolution) {
180
205
  const kiIn = weightToCommunity.get(comm) ?? 0;
181
206
  const sigmaTot = communityDegree.get(comm) ?? 0;
182
207
  const scaledDegree = checkedMultiply(resolution, nodeDegree, `Modularity resolution-degree product for ${node}`);
183
- const numerator = checkedMultiply(scaledDegree, sigmaTot, `Modularity mass product for ${node}`);
184
- const penalty = numerator / twoM;
208
+ // DIVIDE BEFORE MULTIPLYING. The value γ·k_i·Σtot/2m is bounded by γ·k_i
209
+ // because Σtot 2m, but the intermediate product γ·k_i·Σtot is not:
210
+ // rescaling integral weights by 1e6 — the obvious way to make fractional
211
+ // metrics exact — pushed it past MAX_SAFE_INTEGER and refused a graph
212
+ // whose real arithmetic was nowhere near the limit. Bound the RESULT.
213
+ const penalty = (scaledDegree / twoM) * sigmaTot;
185
214
  assertSignedBounded(penalty, `Modularity penalty for ${node}`);
186
215
  const gain = kiIn - penalty;
187
216
  assertSignedBounded(gain, `Modularity gain for ${node}`);
@@ -296,6 +325,52 @@ export function louvain(graph, resolution) {
296
325
  }
297
326
  return canonicalizeCommunities(result);
298
327
  }
328
+ /**
329
+ * Score a partition with the resolution-parameterised modularity Q the
330
+ * {@link louvain} local-moving phase optimises:
331
+ *
332
+ * Q = Σ_c [ Σ_in(c)/m − γ·(Σ_tot(c)/2m)² ]
333
+ *
334
+ * where Σ_in(c) is the intra-community edge weight (each undirected pair counted
335
+ * once, self-loops once), Σ_tot(c) the summed degree of its members, and m the
336
+ * graph mass. The convention is self-consistent rather than universal, and that
337
+ * is what it is for: the ONE trivial partition (every node in one community)
338
+ * scores exactly `1 − γ`, so comparing a candidate partition against the whole
339
+ * needs no tuned constant — at the canonical γ = 1 the comparison is against 0.
340
+ *
341
+ * Deterministic: communities are accumulated in lexical id order, so the same
342
+ * graph and partition always yield the same float.
343
+ */
344
+ export function modularityOf(graph, partition, resolution) {
345
+ assertPositiveBounded(resolution, "Modularity resolution");
346
+ const base = buildAdjacency(graph);
347
+ if (base.totalWeight === 0)
348
+ return 0;
349
+ const twoM = checkedMultiply(base.totalWeight, 2, "Graph mass");
350
+ const internal = new Map();
351
+ const total = new Map();
352
+ for (const node of base.nodes) {
353
+ const community = partition.get(node) ?? node;
354
+ total.set(community, checkedAdd(total.get(community) ?? 0, base.degree.get(node) ?? 0, `Community degree for ${community}`));
355
+ const row = base.adjacency.get(node) ?? new Map();
356
+ for (const [neighbor, weight] of row) {
357
+ // Visit each undirected pair once; a self-loop (neighbor === node) is not
358
+ // skipped, so it contributes its weight exactly once.
359
+ if (compareNodeIds(neighbor, node) < 0)
360
+ continue;
361
+ if ((partition.get(neighbor) ?? neighbor) !== community)
362
+ continue;
363
+ internal.set(community, checkedAdd(internal.get(community) ?? 0, weight, `Community internal weight for ${community}`));
364
+ }
365
+ }
366
+ let quality = 0;
367
+ for (const community of [...total.keys()].sort(compareNodeIds)) {
368
+ const share = (total.get(community) ?? 0) / twoM;
369
+ quality += (internal.get(community) ?? 0) / base.totalWeight - resolution * share * share;
370
+ assertSignedBounded(quality, `Modularity accumulation for ${community}`);
371
+ }
372
+ return quality;
373
+ }
299
374
  /**
300
375
  * Cluster the same graph at every resolution in the ladder, coarse→fine, and
301
376
  * return the partitions in ladder order. The multi-resolution family is the
@@ -1 +1 @@
1
- {"version":3,"file":"modularity.js","sourceRoot":"","sources":["../../../src/shared/decompose/modularity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modularity.js","sourceRoot":"","sources":["../../../src/shared/decompose/modularity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Work-block seam derivation — the ONE place a contested write path becomes a
3
+ * seam, for every findings-draw producer.
4
+ *
5
+ * This lives beside `contentCoherence.ts` rather than inside one producer
6
+ * because there are TWO findings draws: `buildWorkBlockPartition`
7
+ * (`src/audit/reporting/workBlocks.ts`, the synthesis path) and
8
+ * `buildAuditFindingsDeliverable` (`../reporting/auditDeliverable.ts`, the
9
+ * leftover/re-consumable path). The second used to hard-code
10
+ * `work_block_seams: []`, which was vacuously true only while any two findings
11
+ * on one file merged into one block. Under `shared_file AND same_lens` they do
12
+ * not, so a hard-coded empty list drops a real write conflict — and the
13
+ * remediation phase cut then dispatches the contesting blocks in parallel with
14
+ * nothing gating them. One derivation, both producers.
15
+ */
16
+ import type { WorkBlock, WorkBlockSeam } from "../types/finding.js";
17
+ /**
18
+ * Content-derived seam id: a function of the contested FILE alone, so the id
19
+ * survives re-partitioning, block renumbering, and any reordering of the input
20
+ * findings. A positional `seam-N` could not — and `prepares_seam_ids` in the
21
+ * remediation contract pipeline references these across runs.
22
+ */
23
+ export declare function workBlockSeamId(file: string): string;
24
+ /**
25
+ * The seam's human sentence, derived from its own fields. Exported because the
26
+ * approved-subset projection narrows `block_ids` to the surviving blocks and
27
+ * must restate the count rather than persist a sentence that contradicts the
28
+ * list beside it.
29
+ */
30
+ export declare function workBlockSeamRationale(file: string, blockCount: number, kind: WorkBlockSeam["kind"]): string;
31
+ /**
32
+ * One seam per CONTESTED FILE, listing every block that owns it.
33
+ *
34
+ * A file two or more blocks both claim IS the predicted write conflict, and the
35
+ * conflict is a property of that path — not of each unordered block PAIR, which
36
+ * is why the pairwise form emitted O(blocks²) records saying the same thing (on
37
+ * the 2026-08-18 run: 181,251 pairwise records vs 839 per-file ones). A
38
+ * unit-only overlap is not a write conflict and produces no seam: it said
39
+ * "these components share unit context" and required nothing.
40
+ *
41
+ * Every emitted seam therefore requires preparation by construction — which the
42
+ * schema states as `z.literal(true)` rather than leaving to the producer.
43
+ */
44
+ export declare function deriveWorkBlockSeams(blocks: readonly WorkBlock[]): WorkBlockSeam[];
45
+ //# sourceMappingURL=workBlockSeams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workBlockSeams.d.ts","sourceRoot":"","sources":["../../../src/shared/decompose/workBlockSeams.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAC1B,MAAM,CAIR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,SAAS,EAAE,GAC3B,aAAa,EAAE,CAgCjB"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Work-block seam derivation — the ONE place a contested write path becomes a
3
+ * seam, for every findings-draw producer.
4
+ *
5
+ * This lives beside `contentCoherence.ts` rather than inside one producer
6
+ * because there are TWO findings draws: `buildWorkBlockPartition`
7
+ * (`src/audit/reporting/workBlocks.ts`, the synthesis path) and
8
+ * `buildAuditFindingsDeliverable` (`../reporting/auditDeliverable.ts`, the
9
+ * leftover/re-consumable path). The second used to hard-code
10
+ * `work_block_seams: []`, which was vacuously true only while any two findings
11
+ * on one file merged into one block. Under `shared_file AND same_lens` they do
12
+ * not, so a hard-coded empty list drops a real write conflict — and the
13
+ * remediation phase cut then dispatches the contesting blocks in parallel with
14
+ * nothing gating them. One derivation, both producers.
15
+ */
16
+ import { createHash } from "node:crypto";
17
+ import { compareCodeUnits } from "../affinityArtifacts.js";
18
+ /**
19
+ * Content-derived seam id: a function of the contested FILE alone, so the id
20
+ * survives re-partitioning, block renumbering, and any reordering of the input
21
+ * findings. A positional `seam-N` could not — and `prepares_seam_ids` in the
22
+ * remediation contract pipeline references these across runs.
23
+ */
24
+ export function workBlockSeamId(file) {
25
+ return `seam-${createHash("sha256").update(file, "utf8").digest("hex").slice(0, 12)}`;
26
+ }
27
+ /**
28
+ * The seam's human sentence, derived from its own fields. Exported because the
29
+ * approved-subset projection narrows `block_ids` to the surviving blocks and
30
+ * must restate the count rather than persist a sentence that contradicts the
31
+ * list beside it.
32
+ */
33
+ export function workBlockSeamRationale(file, blockCount, kind) {
34
+ return kind === "systemic_coordination"
35
+ ? `A coordination component contests the predicted write path ${file} with ${blockCount - 1} other component(s).`
36
+ : `${blockCount} components cite the same predicted write path ${file}.`;
37
+ }
38
+ /**
39
+ * One seam per CONTESTED FILE, listing every block that owns it.
40
+ *
41
+ * A file two or more blocks both claim IS the predicted write conflict, and the
42
+ * conflict is a property of that path — not of each unordered block PAIR, which
43
+ * is why the pairwise form emitted O(blocks²) records saying the same thing (on
44
+ * the 2026-08-18 run: 181,251 pairwise records vs 839 per-file ones). A
45
+ * unit-only overlap is not a write conflict and produces no seam: it said
46
+ * "these components share unit context" and required nothing.
47
+ *
48
+ * Every emitted seam therefore requires preparation by construction — which the
49
+ * schema states as `z.literal(true)` rather than leaving to the producer.
50
+ */
51
+ export function deriveWorkBlockSeams(blocks) {
52
+ const blocksByFile = new Map();
53
+ for (const block of blocks) {
54
+ for (const path of block.owned_files) {
55
+ const contenders = blocksByFile.get(path) ?? new Set();
56
+ contenders.add(block.id);
57
+ blocksByFile.set(path, contenders);
58
+ }
59
+ }
60
+ const coordinationBlocks = new Set(blocks
61
+ .filter((block) => block.role === "coordination")
62
+ .map((block) => block.id));
63
+ const seams = [];
64
+ for (const file of [...blocksByFile.keys()].sort(compareCodeUnits)) {
65
+ const blockIds = [...(blocksByFile.get(file) ?? [])].sort(compareCodeUnits);
66
+ if (blockIds.length < 2)
67
+ continue;
68
+ const kind = blockIds.some((id) => coordinationBlocks.has(id))
69
+ ? "systemic_coordination"
70
+ : "predicted_write_conflict";
71
+ seams.push({
72
+ id: workBlockSeamId(file),
73
+ file,
74
+ block_ids: blockIds,
75
+ kind,
76
+ requires_preparation: true,
77
+ rationale: workBlockSeamRationale(file, blockIds.length, kind),
78
+ });
79
+ }
80
+ return seams;
81
+ }
82
+ //# sourceMappingURL=workBlockSeams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workBlockSeams.js","sourceRoot":"","sources":["../../../src/shared/decompose/workBlockSeams.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,QAAQ,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACxF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,UAAkB,EAClB,IAA2B;IAE3B,OAAO,IAAI,KAAK,uBAAuB;QACrC,CAAC,CAAC,8DAA8D,IAAI,SAAS,UAAU,GAAG,CAAC,sBAAsB;QACjH,CAAC,CAAC,GAAG,UAAU,kDAAkD,IAAI,GAAG,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA4B;IAE5B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;YAC/D,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzB,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,MAAM;SACH,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC;SAChD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAC5B,CAAC;IAEF,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,0BAA0B,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;YACzB,IAAI;YACJ,SAAS,EAAE,QAAQ;YACnB,IAAI;YACJ,oBAAoB,EAAE,IAAI;YAC1B,SAAS,EAAE,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;SAC/D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -29,7 +29,7 @@ export type { CharterKind, CharterConfidence, CharterProvenance, Charter, GoalNo
29
29
  export { CharterKindSchema, CharterConfidenceSchema, CharterProvenanceSchema, CharterSchema, GoalNodeSchema, GoalEdgeSchema, GoalGraphSchema, CeilingSchema, CharterDeltaSchema, TeleologyNodeSchema, TriangulatedTelosSchema, ChannelDisagreementSchema, ClarificationValueSchema, CharterClarificationAnswerSchema, CharterClarificationRequestSchema, } from "./types/charter.js";
30
30
  export { applyTrueCharterGate, charterReviewDisposition, gateCharterDelta, riskGateClarification, } from "./validation/charterGate.js";
31
31
  export type { WeightedGraph, Partition } from "./decompose/modularity.js";
32
- export { DEFAULT_RESOLUTIONS, louvain, resolutionSweep, } from "./decompose/modularity.js";
32
+ export { DEFAULT_RESOLUTIONS, louvain, modularityOf, resolutionSweep, } from "./decompose/modularity.js";
33
33
  export type { DecompositionSource, DecomposedNode, DecomposeResult, DecomposeOptions, } from "./decompose/consensus.js";
34
34
  export { decompose, clustersFromPartitions } from "./decompose/consensus.js";
35
35
  export type { CharterSubmission, CharterDeltaSubmission, CharterSubsystem, AssembledCharters, AssembledDeltas, } from "./decompose/charterExtraction.js";
@@ -67,8 +67,9 @@ export { AGENT_FEEDBACK_FILENAME, parseReflectionsNdjson, aggregateReflections,
67
67
  export { BYTES_PER_TOKEN, ESTIMATED_TOKENS_PER_LINE, ESTIMATED_PROMPT_OVERHEAD_TOKENS, ESTIMATED_ITEM_OVERHEAD_TOKENS, estimateTokensFromBytes, } from "./tokens.js";
68
68
  export { countBy } from "./countBy.js";
69
69
  export { chunkByBudget } from "./chunkByBudget.js";
70
- export type { ContentCoherenceEvidence, ContentCoherenceItem, ContentCoherenceRelationshipKind, ContentCoherenceRelationship, ContentCoherenceInput, NormalizedContentCoherenceItem, ContentCoherenceTrace, } from "./decompose/contentCoherence.js";
71
- export { CONTENT_COHERENCE_SCORES, CONTENT_COHERENCE_THRESHOLD, NormalizedContentCoherenceItemSchema, ContentCoherenceTraceSchema, buildContentCoherenceTrace, } from "./decompose/contentCoherence.js";
70
+ export type { ContentCoherenceEligibility, ContentCoherenceEvidence, ContentCoherenceItem, ContentCoherencePolicy, ContentCoherenceRelationshipKind, ContentCoherenceRelationship, ContentCoherenceInput, NormalizedContentCoherenceItem, ContentCoherenceTrace, } from "./decompose/contentCoherence.js";
71
+ export { CONTENT_COHERENCE_SCORES, CONTENT_COHERENCE_THRESHOLD, FINDINGS_DRAW_COHERENCE_POLICY, TASK_DRAW_COHERENCE_POLICY, NormalizedContentCoherenceItemSchema, ContentCoherenceTraceSchema, buildContentCoherenceTrace, } from "./decompose/contentCoherence.js";
72
+ export { deriveWorkBlockSeams, workBlockSeamId, workBlockSeamRationale, } from "./decompose/workBlockSeams.js";
72
73
  export { mapWithConcurrency } from "./concurrency.js";
73
74
  export { mintUniqueId } from "./ids.js";
74
75
  export type { FindingIdentityFields } from "./findingIdentitySignature.js";