audit-tools 0.50.21 → 0.51.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 (157) hide show
  1. package/dist/audit/cli/auditStep.d.ts +1 -1
  2. package/dist/audit/cli/charterExtractionPrompt.d.ts.map +1 -1
  3. package/dist/audit/cli/charterExtractionPrompt.js +14 -1
  4. package/dist/audit/cli/charterExtractionPrompt.js.map +1 -1
  5. package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
  6. package/dist/audit/cli/conceptualDispatch.js +30 -5
  7. package/dist/audit/cli/conceptualDispatch.js.map +1 -1
  8. package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
  9. package/dist/audit/cli/dispatch/hostHandoff.js +10 -0
  10. package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
  11. package/dist/audit/cli/fanoutLanes.d.ts +7 -0
  12. package/dist/audit/cli/fanoutLanes.d.ts.map +1 -1
  13. package/dist/audit/cli/fanoutLanes.js +9 -1
  14. package/dist/audit/cli/fanoutLanes.js.map +1 -1
  15. package/dist/audit/cli/laneSubmissions.d.ts +38 -27
  16. package/dist/audit/cli/laneSubmissions.d.ts.map +1 -1
  17. package/dist/audit/cli/laneSubmissions.js +129 -2
  18. package/dist/audit/cli/laneSubmissions.js.map +1 -1
  19. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  20. package/dist/audit/cli/nextStepCommand.js +27 -7
  21. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  22. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  23. package/dist/audit/cli/nextStepHelpers.js +34 -4
  24. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  25. package/dist/audit/cli/sampleRunCommand.d.ts +2 -1
  26. package/dist/audit/cli/sampleRunCommand.d.ts.map +1 -1
  27. package/dist/audit/contracts/workerSchemas.d.ts +4 -4
  28. package/dist/audit/contracts/workerSchemas.d.ts.map +1 -1
  29. package/dist/audit/contracts/workerSchemas.js +12 -6
  30. package/dist/audit/contracts/workerSchemas.js.map +1 -1
  31. package/dist/audit/contracts/wrapperResponse.d.ts +7 -7
  32. package/dist/audit/contracts/wrapperResponse.d.ts.map +1 -1
  33. package/dist/audit/contracts/wrapperResponse.js +9 -1
  34. package/dist/audit/contracts/wrapperResponse.js.map +1 -1
  35. package/dist/audit/extractors/commentDecomposition.d.ts +28 -0
  36. package/dist/audit/extractors/commentDecomposition.d.ts.map +1 -1
  37. package/dist/audit/extractors/commentDecomposition.js +117 -0
  38. package/dist/audit/extractors/commentDecomposition.js.map +1 -1
  39. package/dist/audit/orchestrator/charterDeltaExecutor.d.ts.map +1 -1
  40. package/dist/audit/orchestrator/charterDeltaExecutor.js +14 -0
  41. package/dist/audit/orchestrator/charterDeltaExecutor.js.map +1 -1
  42. package/dist/audit/orchestrator/charterExtractionExecutor.d.ts +16 -6
  43. package/dist/audit/orchestrator/charterExtractionExecutor.d.ts.map +1 -1
  44. package/dist/audit/orchestrator/charterExtractionExecutor.js +127 -9
  45. package/dist/audit/orchestrator/charterExtractionExecutor.js.map +1 -1
  46. package/dist/audit/orchestrator/charterPacketArchive.d.ts +51 -0
  47. package/dist/audit/orchestrator/charterPacketArchive.d.ts.map +1 -0
  48. package/dist/audit/orchestrator/charterPacketArchive.js +173 -0
  49. package/dist/audit/orchestrator/charterPacketArchive.js.map +1 -0
  50. package/dist/audit/orchestrator/charterPackets.d.ts +31 -13
  51. package/dist/audit/orchestrator/charterPackets.d.ts.map +1 -1
  52. package/dist/audit/orchestrator/charterPackets.js +433 -79
  53. package/dist/audit/orchestrator/charterPackets.js.map +1 -1
  54. package/dist/audit/orchestrator/designReviewPrompt.d.ts +20 -4
  55. package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
  56. package/dist/audit/orchestrator/designReviewPrompt.js +89 -12
  57. package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
  58. package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
  59. package/dist/audit/orchestrator/executorRunners.js +17 -1
  60. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  61. package/dist/audit/orchestrator/graphEnrichmentExecutor.d.ts.map +1 -1
  62. package/dist/audit/orchestrator/graphEnrichmentExecutor.js +8 -1
  63. package/dist/audit/orchestrator/graphEnrichmentExecutor.js.map +1 -1
  64. package/dist/audit/orchestrator/state.d.ts.map +1 -1
  65. package/dist/audit/orchestrator/state.js +21 -14
  66. package/dist/audit/orchestrator/state.js.map +1 -1
  67. package/dist/audit/orchestrator/synthesisExecutors.d.ts +8 -0
  68. package/dist/audit/orchestrator/synthesisExecutors.d.ts.map +1 -1
  69. package/dist/audit/orchestrator/synthesisExecutors.js +10 -0
  70. package/dist/audit/orchestrator/synthesisExecutors.js.map +1 -1
  71. package/dist/audit/reporting/synthesis.d.ts +42 -2
  72. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  73. package/dist/audit/reporting/synthesis.js +265 -12
  74. package/dist/audit/reporting/synthesis.js.map +1 -1
  75. package/dist/audit/supervisor/operatorHandoff.d.ts.map +1 -1
  76. package/dist/audit/supervisor/operatorHandoff.js +14 -6
  77. package/dist/audit/supervisor/operatorHandoff.js.map +1 -1
  78. package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts.map +1 -1
  79. package/dist/audit/systemic/secondOrderAdversaryPrompt.js +7 -0
  80. package/dist/audit/systemic/secondOrderAdversaryPrompt.js.map +1 -1
  81. package/dist/audit/types/analyzerCapability.d.ts +35 -11
  82. package/dist/audit/types/analyzerCapability.d.ts.map +1 -1
  83. package/dist/audit/types/analyzerCapability.js +83 -5
  84. package/dist/audit/types/analyzerCapability.js.map +1 -1
  85. package/dist/audit/types/auditState.d.ts +8 -8
  86. package/dist/audit/types/charterRegister.d.ts +33 -3
  87. package/dist/audit/types/charterRegister.d.ts.map +1 -1
  88. package/dist/audit/types/charterRegister.js +11 -1
  89. package/dist/audit/types/charterRegister.js.map +1 -1
  90. package/dist/audit/types/conceptualAdjudication.d.ts +383 -4
  91. package/dist/audit/types/conceptualAdjudication.d.ts.map +1 -1
  92. package/dist/audit/types/conceptualAdjudication.js +109 -5
  93. package/dist/audit/types/conceptualAdjudication.js.map +1 -1
  94. package/dist/audit/types/designAssessment.d.ts +1 -1
  95. package/dist/audit/types/designAssessment.d.ts.map +1 -1
  96. package/dist/audit/types.d.ts +7 -2
  97. package/dist/audit/types.d.ts.map +1 -1
  98. package/dist/remediate/intent/intentOrdering.d.ts.map +1 -1
  99. package/dist/remediate/intent/intentOrdering.js +29 -1
  100. package/dist/remediate/intent/intentOrdering.js.map +1 -1
  101. package/dist/remediate/phases/grounding.d.ts +12 -4
  102. package/dist/remediate/phases/grounding.d.ts.map +1 -1
  103. package/dist/remediate/phases/grounding.js +23 -60
  104. package/dist/remediate/phases/grounding.js.map +1 -1
  105. package/dist/remediate/state/types.d.ts +5 -0
  106. package/dist/remediate/state/types.d.ts.map +1 -1
  107. package/dist/shared/analyzers/types.d.ts +17 -6
  108. package/dist/shared/analyzers/types.d.ts.map +1 -1
  109. package/dist/shared/analyzers/types.js +6 -15
  110. package/dist/shared/analyzers/types.js.map +1 -1
  111. package/dist/shared/decompose/systemicChallenge.d.ts +5 -0
  112. package/dist/shared/decompose/systemicChallenge.d.ts.map +1 -1
  113. package/dist/shared/engine/obligationEngine.d.ts +23 -6
  114. package/dist/shared/engine/obligationEngine.d.ts.map +1 -1
  115. package/dist/shared/engine/obligationEngine.js +38 -3
  116. package/dist/shared/engine/obligationEngine.js.map +1 -1
  117. package/dist/shared/findings/dedupe.d.ts +10 -0
  118. package/dist/shared/findings/dedupe.d.ts.map +1 -1
  119. package/dist/shared/findings/dedupe.js +15 -0
  120. package/dist/shared/findings/dedupe.js.map +1 -1
  121. package/dist/shared/index.d.ts +14 -6
  122. package/dist/shared/index.d.ts.map +1 -1
  123. package/dist/shared/index.js +12 -5
  124. package/dist/shared/index.js.map +1 -1
  125. package/dist/shared/measurement/measuredOutcome.d.ts +61 -0
  126. package/dist/shared/measurement/measuredOutcome.d.ts.map +1 -0
  127. package/dist/shared/measurement/measuredOutcome.js +109 -0
  128. package/dist/shared/measurement/measuredOutcome.js.map +1 -0
  129. package/dist/shared/reporting/findingDisplay.d.ts +14 -2
  130. package/dist/shared/reporting/findingDisplay.d.ts.map +1 -1
  131. package/dist/shared/reporting/findingDisplay.js +29 -2
  132. package/dist/shared/reporting/findingDisplay.js.map +1 -1
  133. package/dist/shared/reporting/lensCoverage.d.ts +70 -0
  134. package/dist/shared/reporting/lensCoverage.d.ts.map +1 -0
  135. package/dist/shared/reporting/lensCoverage.js +108 -0
  136. package/dist/shared/reporting/lensCoverage.js.map +1 -0
  137. package/dist/shared/submission/submissionLedger.d.ts +24 -1
  138. package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
  139. package/dist/shared/submission/submissionLedger.js +61 -0
  140. package/dist/shared/submission/submissionLedger.js.map +1 -1
  141. package/dist/shared/types/charterPacket.d.ts +155 -0
  142. package/dist/shared/types/charterPacket.d.ts.map +1 -0
  143. package/dist/shared/types/charterPacket.js +9 -0
  144. package/dist/shared/types/charterPacket.js.map +1 -0
  145. package/dist/shared/types/finding.d.ts +275 -40
  146. package/dist/shared/types/finding.d.ts.map +1 -1
  147. package/dist/shared/types/finding.js +87 -0
  148. package/dist/shared/types/finding.js.map +1 -1
  149. package/dist/shared/validation/citationGrounding.d.ts +115 -0
  150. package/dist/shared/validation/citationGrounding.d.ts.map +1 -0
  151. package/dist/shared/validation/citationGrounding.js +347 -0
  152. package/dist/shared/validation/citationGrounding.js.map +1 -0
  153. package/dist/shared/validation/findingsReport.d.ts.map +1 -1
  154. package/dist/shared/validation/findingsReport.js +62 -0
  155. package/dist/shared/validation/findingsReport.js.map +1 -1
  156. package/package.json +1 -1
  157. package/schemas/audit-code-v1alpha1.schema.json +2 -1
@@ -16,13 +16,9 @@
16
16
  // packets and the staleness edge can never drift apart.
17
17
  import { readFile } from "node:fs/promises";
18
18
  import { join } from "node:path";
19
- import { compareCodeUnits } from "audit-tools/shared";
19
+ import { CHARTER_PACKET_MANIFEST_SCHEMA_VERSION, EVIDENCE_CLASSES, compareCodeUnits, } from "audit-tools/shared";
20
20
  import { isDocIntentFile } from "../decompose/buildStructureDecomposition.js";
21
- import { extractCommentText, stripCommentText, } from "../extractors/commentDecomposition.js";
22
- /** Per-file and per-packet content budgets (budget-context rule: bounded, never whole-repo). */
23
- const PER_FILE_CHARS = 6_000;
24
- const PACKET_TOTAL_CHARS = 150_000;
25
- const MAX_READ_BYTES = 512 * 1024;
21
+ import { extractCommentLines, strippedSourceLines, } from "../extractors/commentDecomposition.js";
26
22
  /**
27
23
  * The charter layer's read-set over the repo: consensus MEMBER files (every
28
24
  * channel is a projection of member content — comments for stated, organization
@@ -69,56 +65,212 @@ export function memberDependencyEdgeLines(bundle) {
69
65
  return edges.sort((a, b) => compareCodeUnits(a, b));
70
66
  }
71
67
  /**
72
- * Top-level declaration lines of a comment-stripped source: non-blank lines at
73
- * indent zero that do not merely close a scope. A deliberate language-neutral
74
- * HEURISTIC (a lead, not a parse): in brace- and indent-family languages alike,
75
- * a file's organization — imports, exports, signatures, class/type heads — sits
76
- * at column 0 while implementation bodies sit indented. Good enough to show the
77
- * structural channel what the file declares without leaking how it works.
68
+ * Top-level declaration lines of a masked source: non-blank lines at indent zero
69
+ * that do not merely close a scope. A deliberate language-neutral HEURISTIC (a
70
+ * lead, not a parse): in brace- and indent-family languages alike, a file's
71
+ * organization — imports, exports, signatures, class/type heads — sits at column
72
+ * 0 while implementation bodies sit indented. Good enough to show the structural
73
+ * channel what the file declares without leaking how it works.
74
+ *
75
+ * It takes NUMBERED lines and returns numbered lines, so a declaration keeps the
76
+ * line it actually occupies in its own file. Feeding it `stripCommentText` output
77
+ * would number every declaration against a collapsed view — a confidently wrong
78
+ * citation, which is worse than none.
78
79
  */
79
- export function topLevelDeclarationLines(strippedSource) {
80
- const lines = [];
81
- for (const line of strippedSource.split("\n")) {
82
- if (line.length === 0)
80
+ export function topLevelDeclarationLines(lines) {
81
+ const kept = [];
82
+ for (const entry of lines) {
83
+ if (entry.text.length === 0)
83
84
  continue;
84
- if (/^\s/.test(line))
85
+ if (/^\s/.test(entry.text))
85
86
  continue;
86
- if (/^[}\])`>,;]+\s*$/.test(line))
87
+ if (/^[}\])`>,;]+\s*$/.test(entry.text))
87
88
  continue;
88
- lines.push(line.length > 200 ? `${line.slice(0, 200)}…` : line);
89
+ kept.push({
90
+ line: entry.line,
91
+ text: entry.text.length > 200 ? `${entry.text.slice(0, 200)}…` : entry.text,
92
+ });
89
93
  }
90
- return lines;
94
+ return kept;
91
95
  }
92
- /** Render a packet draft to markdown, enforcing the total budget. */
93
- function renderPacket(kind, draft) {
94
- const lines = [
95
- `# Charter evidence packet \`${kind}\` channel`,
96
- "",
97
- "This packet is your ONLY input. It was materialized by the tool to contain",
98
- "exactly this channel's evidence; do not read repository files directly.",
99
- "",
100
- ];
101
- let budget = PACKET_TOTAL_CHARS;
102
- const omitted = [...draft.omitted];
103
- for (const section of draft.sections) {
104
- const cost = section.heading.length + section.body.length + 8;
105
- if (cost > budget) {
106
- omitted.push(section.heading);
107
- continue;
96
+ // ── Packet budget ────────────────────────────────────────────────────────────
97
+ //
98
+ // PACKET_TOTAL_CHARS is the hard ceiling and stays exactly what it was: bounded,
99
+ // never whole-repo. What changed is that it is no longer spent by whoever is
100
+ // rendered FIRST.
101
+ //
102
+ // The old builder walked one greedy budget over sections in doc-then-comment
103
+ // order and, on overflow, kept the heading only. On a 335-file repo the 95
104
+ // doc-intent files cost 459,907 chars against a 150,000 budget — 3.07x over
105
+ // before the comment loop was even reached — so 0 of 72 comment sections
106
+ // survived. That is an ordering artifact, not a size problem: reversing the order
107
+ // would starve docs instead. So the budget is now split by CLASS QUOTA and filled
108
+ // by a two-pass water-fill, which is what makes a coverage figure mean anything.
109
+ const PER_FILE_CHARS = 6_000;
110
+ const PACKET_TOTAL_CHARS = 150_000;
111
+ /**
112
+ * An excerpt below this is a stub, not evidence — too small to characterize a
113
+ * file's purpose. A candidate TRUNCATED below it is omitted by name instead, and
114
+ * its allocation returns to the pool. A file whose whole content is smaller than
115
+ * this is COMPLETE, not a stub, and is delivered.
116
+ */
117
+ const MIN_EXCERPT_CHARS = 400;
118
+ const MAX_READ_BYTES = 512 * 1024;
119
+ /**
120
+ * Metadata is charged against the ceiling BEFORE the content quotas are derived,
121
+ * so the manifest and the per-line prefixes are paid for rather than silently
122
+ * pushing the packet over its own bound.
123
+ *
124
+ * The real overhead, measured rather than guessed: one pretty-printed manifest
125
+ * excerpt row runs ~150-200 chars (id, path, class, runs, counts, prefix width),
126
+ * so 176 candidates — the motivating repo's 95 docs + 81 members — cost ~30 KB,
127
+ * about 20% of the ceiling. The per-line `NNN| ` prefix is 5-8 chars against a
128
+ * mean source line of 38.7 chars measured over this repo's own `src/**\/*.ts`
129
+ * (101,830 lines / 3,944,266 chars), i.e. 13-21%, not the 12% a 7-char estimate
130
+ * suggested. Prefix cost is not estimated here at all — it is charged exactly,
131
+ * because allocation measures the RENDERED body, prefixes included.
132
+ */
133
+ const MANIFEST_ROW_CHARS = 180;
134
+ /** Preamble, manifest envelope, headings and the omitted-list chrome. */
135
+ const PACKET_CHROME_CHARS = 1_600;
136
+ /** The uniform prefix width for an excerpt: widest line number, plus `"| "`. */
137
+ function prefixWidthFor(lines) {
138
+ const widest = lines.reduce((max, entry) => Math.max(max, entry.line), 0);
139
+ return String(widest).length + 2;
140
+ }
141
+ function renderExcerptBody(lines) {
142
+ const pad = prefixWidthFor(lines) - 2;
143
+ return lines
144
+ .map((entry) => `${String(entry.line).padStart(pad)}| ${entry.text}`)
145
+ .join("\n");
146
+ }
147
+ function headingFor(excerptId, candidate, runs) {
148
+ const label = CLASS_LABELS[candidate.evidence_class];
149
+ const spans = runs
150
+ .map((run) => (run.start === run.end ? `${run.start}` : `${run.start}-${run.end}`))
151
+ .join(", ");
152
+ return `[${excerptId}] ${label}: ${candidate.source_path} — lines ${spans}`;
153
+ }
154
+ const CLASS_LABELS = {
155
+ comment: "Comments extracted from",
156
+ declaration: "Top-level declarations (heuristic lead)",
157
+ doc: "Doc",
158
+ stripped_source: "Comment-stripped source",
159
+ };
160
+ /** Contiguous runs of TRUE line numbers over an ascending line list. */
161
+ function lineRunsOf(lines) {
162
+ const runs = [];
163
+ for (const entry of lines) {
164
+ const last = runs[runs.length - 1];
165
+ if (last && entry.line === last.end + 1)
166
+ last.end = entry.line;
167
+ else
168
+ runs.push({ start: entry.line, end: entry.line });
169
+ }
170
+ return runs;
171
+ }
172
+ /** The rendered cost of delivering these lines (prefixes included) plus a heading. */
173
+ function costOf(lines) {
174
+ if (lines.length === 0)
175
+ return 0;
176
+ return renderExcerptBody(lines).length + HEADING_OVERHEAD_CHARS;
177
+ }
178
+ const HEADING_OVERHEAD_CHARS = 90;
179
+ /** Take as many leading lines as fit in `cap`, measured on the RENDERED body. */
180
+ function fitLines(lines, cap) {
181
+ const whole = costOf(lines);
182
+ if (whole <= cap)
183
+ return { lines: [...lines], truncated: false, cost: whole };
184
+ const kept = [];
185
+ for (const entry of lines) {
186
+ const next = [...kept, entry];
187
+ if (costOf(next) > cap)
188
+ break;
189
+ kept.push(entry);
190
+ }
191
+ return { lines: kept, truncated: true, cost: costOf(kept) };
192
+ }
193
+ /**
194
+ * Fill one evidence class's quota by a two-pass water-fill, in PATH order.
195
+ *
196
+ * Pass 1 gives every candidate `min(need, floor(B/N))`, so no candidate can
197
+ * consume the class before another is considered — the property the greedy loop
198
+ * lacked. Pass 2 spills the class's unspent remainder to candidates that still
199
+ * have need, in path order, up to `PER_FILE_CHARS`. A candidate left TRUNCATED
200
+ * below `MIN_EXCERPT_CHARS` is a stub: it is omitted by name (`total_budget`),
201
+ * its allocation returns to the pool, and the fill is recomputed — iterating to a
202
+ * fixpoint, which terminates because the active set strictly shrinks.
203
+ *
204
+ * Deterministic in (candidates, budget): no filesystem order, no completion
205
+ * order, no randomness.
206
+ */
207
+ function allocateClass(candidates, budget) {
208
+ const omitted = [];
209
+ let active = [...candidates];
210
+ for (;;) {
211
+ if (active.length === 0 || budget <= 0)
212
+ break;
213
+ const share = Math.floor(budget / active.length);
214
+ const fills = active.map((candidate) => fitLines(candidate.lines, share));
215
+ let remainder = budget - fills.reduce((sum, fill) => sum + fill.cost, 0);
216
+ // Pass 2 — spill the unspent remainder in path order, clamped per file.
217
+ for (let i = 0; i < active.length && remainder > 0; i += 1) {
218
+ if (!fills[i].truncated)
219
+ continue;
220
+ const cap = Math.min(PER_FILE_CHARS, fills[i].cost + remainder);
221
+ if (cap <= fills[i].cost)
222
+ continue;
223
+ const refill = fitLines(active[i].lines, cap);
224
+ remainder -= refill.cost - fills[i].cost;
225
+ fills[i] = refill;
108
226
  }
109
- budget -= cost;
110
- lines.push(`## ${section.heading}`, "", section.body, "");
227
+ // A truncated stub is worse than a named omission; a small COMPLETE file is
228
+ // not a stub, so completeness is checked before size.
229
+ const stubs = new Set();
230
+ for (let i = 0; i < fills.length; i += 1) {
231
+ if (fills[i].truncated && fills[i].cost < MIN_EXCERPT_CHARS)
232
+ stubs.add(i);
233
+ }
234
+ if (stubs.size === 0) {
235
+ return {
236
+ delivered: active.map((candidate, i) => ({
237
+ candidate,
238
+ lines: fills[i].lines,
239
+ truncated: fills[i].truncated,
240
+ cost: fills[i].cost,
241
+ })),
242
+ omitted,
243
+ spent: fills.reduce((sum, fill) => sum + fill.cost, 0),
244
+ };
245
+ }
246
+ for (const i of [...stubs].sort((a, b) => a - b)) {
247
+ omitted.push({ path: active[i].source_path, reason: "total_budget" });
248
+ }
249
+ active = active.filter((_, i) => !stubs.has(i));
111
250
  }
112
- if (omitted.length > 0) {
113
- lines.push("## Omitted (budget cap — content not shown, paths listed for honesty)", "", ...omitted.map((o) => `- ${o}`), "");
251
+ for (const candidate of active) {
252
+ omitted.push({ path: candidate.source_path, reason: "total_budget" });
114
253
  }
115
- return lines.join("\n");
254
+ return { delivered: [], omitted, spent: 0 };
116
255
  }
117
- /** Cap one file's contribution, marking truncation honestly. */
118
- function capContent(content) {
119
- if (content.length <= PER_FILE_CHARS)
120
- return content;
121
- return `${content.slice(0, PER_FILE_CHARS)}\n… (truncated at ${PER_FILE_CHARS} chars)`;
256
+ /**
257
+ * Split a content budget across the classes a kind emits, then SPILL what a class
258
+ * cannot use to the class that can. The `stated` channel splits 50/50 between
259
+ * docs and comments: neither class is a priori more valuable, and the 100/0
260
+ * outcome that starved every source comment was never chosen — it fell out of
261
+ * render order. Spill keeps the split from becoming a new cap: a repo with three
262
+ * docs still yields a full comment channel.
263
+ */
264
+ function allocateStated(docs, comments, budget) {
265
+ // Spill tracks the REMAINING TOTAL, never a sum of halves: giving each class
266
+ // "its half plus the other's leftover" double-counts the shared pool, and a
267
+ // single oversized doc then swallowed 200k against a 148k budget.
268
+ const half = Math.floor(budget / 2);
269
+ const firstDoc = allocateClass(docs, half);
270
+ const comment = allocateClass(comments, budget - firstDoc.spent);
271
+ const remaining = budget - firstDoc.spent - comment.spent;
272
+ const doc = remaining > 0 ? allocateClass(docs, firstDoc.spent + remaining) : firstDoc;
273
+ return { doc, comment };
122
274
  }
123
275
  async function readRepoFile(root, path) {
124
276
  try {
@@ -132,79 +284,144 @@ async function readRepoFile(root, path) {
132
284
  }
133
285
  }
134
286
  /**
135
- * Materialize ONE kind's evidence packet as markdown. Deterministic given the
136
- * bundle + file contents: stable path order, fixed budgets, explicit omitted
137
- * lists. Unreadable/oversized files are named in the omitted list (never
138
- * silently absent) so a lane can say "evidence missing" instead of guessing.
287
+ * The machine header a lane copies its citations from, and — byte-identically —
288
+ * the lane asset the emit pass persists for the ingest pass. ONE function builds
289
+ * both, so what a lane reads and what a validator checks against cannot drift.
290
+ */
291
+ export function buildCharterPacketManifest(kind, excerpts, coverage) {
292
+ return {
293
+ schema_version: CHARTER_PACKET_MANIFEST_SCHEMA_VERSION,
294
+ kind,
295
+ excerpts: excerpts.map((excerpt) => ({
296
+ excerpt_id: excerpt.excerpt_id,
297
+ source_path: excerpt.source_path,
298
+ evidence_class: excerpt.evidence_class,
299
+ line_runs: excerpt.line_runs,
300
+ line_count: excerpt.lines.length,
301
+ truncated: excerpt.truncated,
302
+ prefix_width: excerpt.prefix_width,
303
+ })),
304
+ coverage,
305
+ };
306
+ }
307
+ function emptyPlan() {
308
+ return {
309
+ fixedSections: [],
310
+ candidatesByClass: new Map(),
311
+ preOmitted: new Map(),
312
+ namedByClass: new Map(),
313
+ };
314
+ }
315
+ function note(plan, evidenceClass, path, reason) {
316
+ const list = plan.preOmitted.get(evidenceClass) ?? [];
317
+ list.push({ path, reason });
318
+ plan.preOmitted.set(evidenceClass, list);
319
+ }
320
+ function nameCandidate(plan, evidenceClass) {
321
+ plan.namedByClass.set(evidenceClass, (plan.namedByClass.get(evidenceClass) ?? 0) + 1);
322
+ }
323
+ function addCandidate(plan, candidate) {
324
+ const list = plan.candidatesByClass.get(candidate.evidence_class) ?? [];
325
+ list.push(candidate);
326
+ plan.candidatesByClass.set(candidate.evidence_class, list);
327
+ }
328
+ /**
329
+ * Materialize ONE kind's evidence packet. Deterministic given the bundle + file
330
+ * contents: stable path order, class quotas, an order-independent allocator, and
331
+ * an explicit per-class coverage record in which
332
+ * `delivered + omitted.length === named` for every class — so a file that
333
+ * contributed nothing is NAMED rather than silently absent.
139
334
  */
140
335
  export async function materializeCharterPacket(params) {
141
336
  const { memberPaths, docPaths } = charterPacketReadSet(params.bundle);
142
- const draft = { sections: [], omitted: [] };
337
+ const plan = emptyPlan();
143
338
  if (params.kind === "stated") {
144
339
  for (const path of docPaths) {
340
+ nameCandidate(plan, "doc");
145
341
  const text = await readRepoFile(params.root, path);
146
342
  if (text === undefined) {
147
- draft.omitted.push(`${path} (unreadable or oversized)`);
343
+ note(plan, "doc", path, "unreadable_or_oversized");
344
+ continue;
345
+ }
346
+ const lines = numberedLinesOf(text);
347
+ if (lines.length === 0) {
348
+ note(plan, "doc", path, "no_content");
148
349
  continue;
149
350
  }
150
- draft.sections.push({ heading: `Doc: ${path}`, body: capContent(text) });
351
+ addCandidate(plan, { evidence_class: "doc", source_path: path, lines });
151
352
  }
152
353
  for (const path of memberPaths) {
354
+ nameCandidate(plan, "comment");
153
355
  const text = await readRepoFile(params.root, path);
154
356
  if (text === undefined) {
155
- draft.omitted.push(`${path} (unreadable or oversized)`);
357
+ note(plan, "comment", path, "unreadable_or_oversized");
156
358
  continue;
157
359
  }
158
- const comments = extractCommentText(text, path).trim();
159
- if (comments.length === 0)
360
+ const lines = extractCommentLines(text, path);
361
+ if (lines.length === 0) {
362
+ // Previously a bare `continue`: a member with no comments appeared in
363
+ // neither the delivered nor the omitted list, so `named` could not be
364
+ // reconciled and 9 of 81 members were invisible.
365
+ note(plan, "comment", path, "no_content");
160
366
  continue;
161
- draft.sections.push({
162
- heading: `Comments extracted from: ${path}`,
163
- body: capContent(comments),
164
- });
367
+ }
368
+ addCandidate(plan, { evidence_class: "comment", source_path: path, lines });
165
369
  }
166
370
  }
167
371
  else if (params.kind === "structural") {
168
372
  const manifestByPath = new Map((params.bundle.repo_manifest?.files ?? []).map((f) => [f.path, f]));
169
- const tree = memberPaths
170
- .map((path) => {
171
- const entry = manifestByPath.get(path);
172
- return entry ? `${path} (${entry.size_bytes} bytes)` : path;
173
- })
174
- .join("\n");
175
- draft.sections.push({ heading: "File tree (members)", body: tree });
373
+ plan.fixedSections.push({
374
+ heading: "File tree (members)",
375
+ body: memberPaths
376
+ .map((path) => {
377
+ const entry = manifestByPath.get(path);
378
+ return entry ? `${path} (${entry.size_bytes} bytes)` : path;
379
+ })
380
+ .join("\n"),
381
+ });
176
382
  const edgeLines = memberDependencyEdgeLines(params.bundle);
177
383
  if (edgeLines.length > 0) {
178
- draft.sections.push({
384
+ plan.fixedSections.push({
179
385
  heading: "Dependency edges among members",
180
386
  body: edgeLines.join("\n"),
181
387
  });
182
388
  }
183
389
  for (const path of memberPaths) {
390
+ nameCandidate(plan, "declaration");
184
391
  const text = await readRepoFile(params.root, path);
185
392
  if (text === undefined) {
186
- draft.omitted.push(`${path} (unreadable or oversized)`);
393
+ note(plan, "declaration", path, "unreadable_or_oversized");
187
394
  continue;
188
395
  }
189
- const decls = topLevelDeclarationLines(stripCommentText(text, path));
190
- if (decls.length === 0)
396
+ const lines = topLevelDeclarationLines(strippedSourceLines(text, path));
397
+ if (lines.length === 0) {
398
+ note(plan, "declaration", path, "no_content");
191
399
  continue;
192
- draft.sections.push({
193
- heading: `Top-level declarations (heuristic lead): ${path}`,
194
- body: capContent(decls.join("\n")),
400
+ }
401
+ addCandidate(plan, {
402
+ evidence_class: "declaration",
403
+ source_path: path,
404
+ lines,
195
405
  });
196
406
  }
197
407
  }
198
408
  else if (params.kind === "revealed") {
199
409
  for (const path of memberPaths) {
410
+ nameCandidate(plan, "stripped_source");
200
411
  const text = await readRepoFile(params.root, path);
201
412
  if (text === undefined) {
202
- draft.omitted.push(`${path} (unreadable or oversized)`);
413
+ note(plan, "stripped_source", path, "unreadable_or_oversized");
203
414
  continue;
204
415
  }
205
- draft.sections.push({
206
- heading: `Comment-stripped source: ${path}`,
207
- body: capContent(stripCommentText(text, path)),
416
+ const lines = strippedSourceLines(text, path);
417
+ if (lines.length === 0) {
418
+ note(plan, "stripped_source", path, "no_content");
419
+ continue;
420
+ }
421
+ addCandidate(plan, {
422
+ evidence_class: "stripped_source",
423
+ source_path: path,
424
+ lines,
208
425
  });
209
426
  }
210
427
  }
@@ -213,6 +430,143 @@ export async function materializeCharterPacket(params) {
213
430
  // materializing a packet for it is a caller bug, surfaced loudly.
214
431
  throw new Error(`no evidence packet exists for charter kind '${params.kind}' — 'true' is nominated downstream by the delta miner, never extracted`);
215
432
  }
216
- return renderPacket(params.kind, draft);
433
+ // Charge the metadata BEFORE deriving the content quotas, so the manifest and
434
+ // the fixed sections are paid for rather than pushing the packet over its bound.
435
+ const candidateCount = [...plan.candidatesByClass.values()].reduce((sum, list) => sum + list.length, 0);
436
+ const fixedCost = plan.fixedSections.reduce((sum, section) => sum + section.heading.length + section.body.length + 8, 0);
437
+ const estimatedOverhead = PACKET_CHROME_CHARS + candidateCount * MANIFEST_ROW_CHARS + fixedCost;
438
+ // MANIFEST_ROW_CHARS is an ESTIMATE, and an estimate is not a bound: an excerpt
439
+ // with many scattered runs (comment blocks through a long file) costs more than
440
+ // a typical row. So the first layout is measured, and if the real metadata
441
+ // pushed the packet over its ceiling the layout is recomputed ONCE against the
442
+ // measured overhead. It converges: a smaller content budget delivers no more
443
+ // lines, so no more runs, so no larger manifest.
444
+ let layout = layoutPacket(params.kind, plan, PACKET_TOTAL_CHARS - estimatedOverhead);
445
+ let markdown = renderPacket(params.kind, plan.fixedSections, layout.excerpts, layout.coverage);
446
+ if (markdown.length > PACKET_TOTAL_CHARS) {
447
+ const measuredOverhead = markdown.length - layout.coverage.spent_chars;
448
+ layout = layoutPacket(params.kind, plan, PACKET_TOTAL_CHARS - measuredOverhead);
449
+ markdown = renderPacket(params.kind, plan.fixedSections, layout.excerpts, layout.coverage);
450
+ }
451
+ return { markdown, coverage: layout.coverage, excerpts: layout.excerpts };
452
+ }
453
+ /** Allocate, number, and measure one packet against a content budget. */
454
+ function layoutPacket(kind, plan, contentBudget) {
455
+ const budget = Math.max(0, contentBudget);
456
+ const allocations = new Map();
457
+ if (kind === "stated") {
458
+ const { doc, comment } = allocateStated(plan.candidatesByClass.get("doc") ?? [], plan.candidatesByClass.get("comment") ?? [], budget);
459
+ allocations.set("doc", doc);
460
+ allocations.set("comment", comment);
461
+ }
462
+ else {
463
+ for (const [evidenceClass, candidates] of plan.candidatesByClass) {
464
+ allocations.set(evidenceClass, allocateClass(candidates, budget));
465
+ }
466
+ }
467
+ // Emission order = class order within the packet, path order within a class.
468
+ const emissionOrder = kind === "stated" ? ["doc", "comment"] : [...plan.candidatesByClass.keys()];
469
+ const excerpts = [];
470
+ for (const evidenceClass of emissionOrder) {
471
+ for (const allocated of allocations.get(evidenceClass)?.delivered ?? []) {
472
+ if (allocated.lines.length === 0)
473
+ continue;
474
+ excerpts.push({
475
+ excerpt_id: `E${String(excerpts.length + 1).padStart(2, "0")}`,
476
+ evidence_class: evidenceClass,
477
+ source_path: allocated.candidate.source_path,
478
+ line_runs: lineRunsOf(allocated.lines),
479
+ lines: allocated.lines.map((entry) => ({
480
+ line: entry.line,
481
+ text: entry.text,
482
+ })),
483
+ truncated: allocated.truncated,
484
+ prefix_width: prefixWidthFor(allocated.lines),
485
+ });
486
+ }
487
+ }
488
+ const classes = [];
489
+ for (const evidenceClass of EVIDENCE_CLASSES) {
490
+ const named = plan.namedByClass.get(evidenceClass);
491
+ if (named === undefined)
492
+ continue;
493
+ const allocation = allocations.get(evidenceClass);
494
+ const delivered = (allocation?.delivered ?? []).filter((entry) => entry.lines.length > 0);
495
+ const omitted = [
496
+ ...(plan.preOmitted.get(evidenceClass) ?? []),
497
+ ...(allocation?.omitted ?? []),
498
+ ].sort((a, b) => compareCodeUnits(a.path, b.path));
499
+ classes.push({
500
+ evidence_class: evidenceClass,
501
+ named,
502
+ delivered: delivered.length,
503
+ truncated: delivered.filter((entry) => entry.truncated).length,
504
+ omitted,
505
+ });
506
+ }
507
+ return {
508
+ excerpts,
509
+ coverage: {
510
+ kind,
511
+ classes,
512
+ budget_chars: budget,
513
+ spent_chars: [...allocations.values()].reduce((sum, allocation) => sum + allocation.spent, 0),
514
+ },
515
+ };
516
+ }
517
+ /** Every non-empty line of a file, with its TRUE 1-based number. */
518
+ function numberedLinesOf(text) {
519
+ const out = [];
520
+ const lines = text.replace(/\r/g, "").split("\n");
521
+ for (let i = 0; i < lines.length; i += 1) {
522
+ const line = lines[i];
523
+ if (line.trim().length === 0)
524
+ continue;
525
+ out.push({ line: i + 1, text: line });
526
+ }
527
+ return out;
528
+ }
529
+ /**
530
+ * Render the packet: a machine manifest a lane copies citations OUT of, then the
531
+ * human excerpts, every content line carrying its TRUE source line number.
532
+ *
533
+ * The two are orthogonal and both are load-bearing. The per-line prefix is what
534
+ * lets a lane cite a SPECIFIC line without counting; the run header on each
535
+ * heading is what tells it which ranges are legitimate to name at all.
536
+ */
537
+ function renderPacket(kind, fixedSections, excerpts, coverage) {
538
+ const lines = [
539
+ `# Charter evidence packet — \`${kind}\` channel`,
540
+ "",
541
+ "This packet is your ONLY input. It was materialized by the tool to contain",
542
+ "exactly this channel's evidence; do not read repository files directly.",
543
+ "",
544
+ "Every content line below is prefixed with its TRUE line number in its own",
545
+ "source file, and the manifest names the exact line runs delivered. A correct",
546
+ "citation is COPIED from here — never counted, inferred, or reconstructed.",
547
+ "",
548
+ "## Provenance manifest",
549
+ "",
550
+ "```json",
551
+ JSON.stringify(buildCharterPacketManifest(kind, excerpts, coverage), null, 2),
552
+ "```",
553
+ "",
554
+ ];
555
+ for (const section of fixedSections) {
556
+ lines.push(`## ${section.heading}`, "", section.body, "");
557
+ }
558
+ for (const excerpt of excerpts) {
559
+ lines.push(`## ${headingFor(excerpt.excerpt_id, { evidence_class: excerpt.evidence_class, source_path: excerpt.source_path, lines: [] }, excerpt.line_runs)}`, "", renderExcerptBody(excerpt.lines), "");
560
+ }
561
+ const omitted = coverage.classes.flatMap((entry) => entry.omitted.map((row) => `${row.path} (${OMISSION_PROSE[row.reason]})`));
562
+ if (omitted.length > 0) {
563
+ lines.push("## Omitted (content not shown, paths listed for honesty)", "", ...omitted.map((o) => `- ${o}`), "");
564
+ }
565
+ return lines.join("\n");
217
566
  }
567
+ const OMISSION_PROSE = {
568
+ total_budget: "no room left in this channel's budget",
569
+ unreadable_or_oversized: "unreadable or oversized",
570
+ no_content: "no content of this evidence class in the file",
571
+ };
218
572
  //# sourceMappingURL=charterPackets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"charterPackets.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/charterPackets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"charterPackets.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/charterPackets.ts"],"names":[],"mappings":"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"}