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
@@ -12,6 +12,7 @@
12
12
  import { z } from "zod";
13
13
  import { AnalyzerLeadProvenanceSchema } from "../analyzers/provenance.js";
14
14
  import { ContentCoherenceTraceSchema } from "../decompose/contentCoherence.js";
15
+ import { MeasuredOutcomeSchema } from "../measurement/measuredOutcome.js";
15
16
  /** Canonical finding severity vocabulary (most-severe-first). */
16
17
  export const FindingSeveritySchema = z.enum([
17
18
  "critical",
@@ -125,6 +126,36 @@ export const FindingGroundingSchema = z.object({
125
126
  /** When ungrounded/refuted, which cited span(s) failed and why. */
126
127
  reason: z.string().optional(),
127
128
  });
129
+ /**
130
+ * Whether the DEFECT a conceptual finding names is present at HEAD — the third
131
+ * axis, orthogonal to `grounding` (does it cite something real) and to the
132
+ * remediation outcome (what did we do about it). Grounding on the conceptual
133
+ * path certifies only that a cited component path exists, so it reads as
134
+ * confirmation while certifying far less; this field carries the presence claim.
135
+ *
136
+ * EVERY value here is JUDGE-AUTHORED. `judge_confirmed` is deliberately NOT
137
+ * spelled `confirmed`: the bare word is already taken by the executable-anchor
138
+ * contract above, where "the confirmed bit is the tool's run, never the model's
139
+ * word". This one is the opposite provenance — a judge's reading of HEAD, never
140
+ * a tool run — and the name must say so wherever it is read.
141
+ *
142
+ * - `judge_confirmed`: the judge checked the named defect against current code
143
+ * and it holds. The tool guarantees the claim is PRESENT, CONSISTENT and
144
+ * PUBLISHED (and that a non-`asserted` claim carries a note); never that it is
145
+ * true.
146
+ * - `asserted`: not checked. The default, and it is stated explicitly rather
147
+ * than left absent — an optional field defaults to silence, which is the
148
+ * failure this vocabulary exists to end.
149
+ * - `refuted_at_head`: the judge checked and the defect is absent or already
150
+ * remediated. It can NEVER appear on an admitted finding: the adjudication
151
+ * validator forces a `refuted_at_head` candidate to `rejected`, and a rejected
152
+ * candidate maps to no final finding.
153
+ */
154
+ export const FindingVerificationStatusSchema = z.enum([
155
+ "judge_confirmed",
156
+ "asserted",
157
+ "refuted_at_head",
158
+ ]);
128
159
  /**
129
160
  * What outcome of an executable anchor's command CONFIRMS the finding's claim.
130
161
  * The worker declares the falsifiable condition; the tool runs the command and
@@ -193,6 +224,15 @@ export const FindingSchema = z.object({
193
224
  * grounding pass runs at ingest.
194
225
  */
195
226
  grounding: FindingGroundingSchema.optional(),
227
+ /**
228
+ * Whether the defect this finding names is present at HEAD. TOOL-DERIVED at
229
+ * conceptual ingest from the judge's per-candidate verification claims — host
230
+ * supply is REFUSED, exactly as for `grounding`, so the value can always be
231
+ * cross-checked against the adjudication record. Optional because the per-file
232
+ * audit workers have no verification concept; absent outside the conceptual
233
+ * design-review path.
234
+ */
235
+ verification_status: FindingVerificationStatusSchema.optional(),
196
236
  /**
197
237
  * Optional executable anchor for a behavior claim (S7 tier-2). The tool runs
198
238
  * the read-only `command` at ingest and folds the verdict into `grounding`: a
@@ -312,6 +352,30 @@ export function findingIdentity(finding) {
312
352
  summary: finding.summary,
313
353
  };
314
354
  }
355
+ /**
356
+ * What ONE lens the operator selected actually delivered.
357
+ *
358
+ * `lens_breakdown` is a `countBy` over what was PRODUCED, so a selected lens
359
+ * that produced nothing has no key at all — and the render suppressed the whole
360
+ * line on an empty map. A run therefore advertised the operator's chosen scope,
361
+ * delivered a fraction of it, and nothing could distinguish "reviewed, nothing
362
+ * found" from "never reviewed". This states the difference:
363
+ *
364
+ * • `findings` — asked, and it found something.
365
+ * • `clean` — asked through a lens-open channel that was ingested, and there
366
+ * was nothing there. The ONLY value that may be read as "no defect".
367
+ * • `not_run` — selected, and no lens-open channel was ever ingested. Absence
368
+ * of a finding is not absence of a defect.
369
+ */
370
+ export const LensCoverageEntrySchema = z
371
+ .object({
372
+ lens: z.string(),
373
+ /** True when the operator's resolved selection includes this lens. */
374
+ selected: z.boolean(),
375
+ findings_count: z.number().int().min(0),
376
+ outcome: MeasuredOutcomeSchema,
377
+ })
378
+ .strict();
315
379
  export const AuditFindingsSummarySchema = z.object({
316
380
  finding_count: z.number(),
317
381
  work_block_count: z.number(),
@@ -329,6 +393,29 @@ export const AuditFindingsSummarySchema = z.object({
329
393
  * dropped from the admitted set. Absent when no finding carried a verdict.
330
394
  */
331
395
  grounding_status_breakdown: z.record(z.string(), z.number()).optional(),
396
+ /**
397
+ * Per-status counts of the judge's defect-presence claim, over the FINDINGS —
398
+ * `judge_confirmed` versus `asserted`, which is what lets a remediator rank
399
+ * one above the other. `refuted_at_head` never appears here: the adjudication
400
+ * validator forces a refuted candidate to `rejected`, and a rejected candidate
401
+ * maps to no final finding. Absent when no finding carried a status.
402
+ *
403
+ * Finding-scoped, and deliberately NOT reconciled with the CANDIDATE-scoped
404
+ * counts on `conceptual_review_adjudication.json`: the post-adjudication
405
+ * grounding quarantine can drop a merged candidate's final finding, so the two
406
+ * populations legitimately differ. One reconciled number would have to pick a
407
+ * population and would hide the quarantine.
408
+ */
409
+ verification_status_breakdown: z.record(z.string(), z.number()).optional(),
410
+ /**
411
+ * What EVERY lens the operator selected delivered — the statement that makes
412
+ * an absent `lens_breakdown` key legible. Optional because a run that carried
413
+ * no lens selection has no coverage claim to make, and because the recovery
414
+ * deliverable mints a summary from a flat finding set with no checkpoint at
415
+ * all. PRESENCE is guaranteed at the synthesis boundary, which holds the
416
+ * checkpoint; this schema and its validator own only internal consistency.
417
+ */
418
+ lens_coverage: z.array(LensCoverageEntrySchema).optional(),
332
419
  });
333
420
  /**
334
421
  * The canonical `audit-findings.json` contract. Deterministic fields are always
@@ -1 +1 @@
1
- {"version":3,"file":"finding.js","sourceRoot":"","sources":["../../../src/shared/types/finding.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gFAAgF;AAChF,yEAAyE;AACzE,gFAAgF;AAChF,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,4EAA4E;AAC5E,sDAAsD;AAEtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,iEAAiE;AACjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC1C,UAAU;IACV,MAAM;IACN,QAAQ;IACR,KAAK;IACL,MAAM;CACP,CAAC,CAAC;AAGH,sEAAsE;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAGzE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B;;;;;;OAMG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,0EAA0E;IAC1E,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,sDAAsD,CAAC;AACzD,MAAM,CAAC,MAAM,6BAA6B,GACxC,oDAAoD,CAAC;AACvD,MAAM,CAAC,MAAM,uBAAuB,GAClC,8FAA8F,CAAC;AAQjG;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAGzC;IACC,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,IACE,QAAQ,CAAC,UAAU,KAAK,SAAS;QACjC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EACtC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,+BAA+B;SACzC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,6BAA6B;SACvC,CAAC,CAAC;IACL,CAAC;IACD,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;QACrC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACvD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,uBAAuB;SACjC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,QAAqD,EACrD,OAAwB,EAClB,EAAE;IACR,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YACnB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAChC,2BAA2B,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;AAGtE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACrD,mEAAmE;IACnE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAGH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAClE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAC1C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;IAC7C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAClE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;CACnE,CAAC,CAAC;AAGH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,UAAU,EAAE,uBAAuB;IACnC,qEAAqE;IACrE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,qBAAqB;IAC/B,UAAU,EAAE,uBAAuB;IACnC,gEAAgE;IAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,yDAAyD;IACzD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B;;;;;;;;OAQG;IACH,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD;;;;OAIG;IACH,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACzC;;;;OAIG;IACH,SAAS,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IAC5C;;;;;;;OAOG;IACH,iBAAiB,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IACpD,4EAA4E;IAC5E,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,iFAAiF;IACjF,uBAAuB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvD,0EAA0E;IAC1E,2BAA2B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D,+EAA+E;IAC/E,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACjD;;;;;OAKG;IACH,mBAAmB,EAAE,4BAA4B,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACnE,2LAA2L,CAC5L;CACF,CAAC,CAAC;AAGH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,wEAAwE;IACxE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAChD,YAAY,EAAE,qBAAqB;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,gFAAgF;IAChF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CAC1D,CAAC,CAAC;AAGH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,yDAAyD;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB;;;;OAIG;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,0BAA0B,EAAE,uBAAuB,CAAC,CAAC;IACnE;;;;;OAKG;IACH,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC;KACD,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IAC7B,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC3D,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,CAAC,WAAW,CAAC;YACnB,OAAO,EAAE,wDAAwD;SAClE,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAGL,2EAA2E;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE;CAClC,CAAC,CAAC;AAGH;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACnC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAoBH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACpD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9B,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC/B,mCAAmC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACrE,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D;;;;;;;OAOG;IACH,0BAA0B,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxE,CAAC,CAAC;AAGH;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAChC,eAAe,EAAE,2BAA2B;IAC5C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACrC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IAC9C;;;;OAIG;IACH,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;IACvD,6EAA6E;IAC7E,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACzD,QAAQ,EAAE;IACb,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;IAC9C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC;KACD,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;IACrD,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,CAAC,aAAa,CAAC;YACrB,OAAO,EACL,qEAAqE;SACxE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;QAChE,IACE,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;YACtC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC,EACnE,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,IAAI,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,aAAa,CAAC;gBAC3C,OAAO,EACL,iFAAiF;aACpF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,gBAAgB;SAC1D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;SACtB,IAAI,EAAE,CAAC;IACV,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,KAAe,EAAW,EAAE,CAC3D,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC;QAC3E,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;YACvC,OAAO,EACL,iEAAiE;SACpE,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"finding.js","sourceRoot":"","sources":["../../../src/shared/types/finding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /** Reads a source file's text synchronously; injectable so the core is testable without fs. */
2
+ export type SyncSourceReader = (absolutePath: string) => string;
3
+ /**
4
+ * A {@link SyncSourceReader} memoized by absolute path, for ONE checking pass: a
5
+ * batch of citations into the same file reads that file once. Failures are cached
6
+ * too, so an unreadable path is not retried per citation.
7
+ *
8
+ * Scope it to a single pass and discard it — a reader that outlived the pass
9
+ * would serve stale bytes after a later edit, which is exactly what re-checking
10
+ * a citation against disk exists to catch.
11
+ */
12
+ export declare function createMemoizedSyncSourceReader(): SyncSourceReader;
13
+ /**
14
+ * The number of TRUE lines in a source text.
15
+ *
16
+ * Two corrections over a bare `split("\n").length`, both of which produced a
17
+ * silent off-by-one that let `path:<n+1>` ground into an n-line file:
18
+ * - a single TRAILING empty segment is dropped — a file that ends with a line
19
+ * terminator has n lines, not n+1;
20
+ * - carriage returns are stripped first, so a CRLF checkout counts the same as
21
+ * an LF one (`OS/platform-agnostic`: the same file must not have two lengths
22
+ * depending on who checked it out).
23
+ * Empty content is zero lines.
24
+ */
25
+ export declare function countSourceLines(content: string): number;
26
+ /** A parsed citation reference. `end_line` is absent for a single-line citation. */
27
+ export interface ParsedCitation {
28
+ /** The reference exactly as it was written — never rewritten, never repaired. */
29
+ raw: string;
30
+ path: string;
31
+ start_line?: number;
32
+ end_line?: number;
33
+ }
34
+ /**
35
+ * Parse `path`, `path:12`, or `path:12-19` into its parts. Returns `undefined`
36
+ * when the reference carries no path at all (empty, or a bare line suffix).
37
+ * The path half is taken verbatim: resolving it is a separate step, so a
38
+ * component id or a checkpoint field parses here and fails to resolve later,
39
+ * which is the honest split.
40
+ */
41
+ export declare function parseCitationRef(ref: string): ParsedCitation | undefined;
42
+ /** Every citation reference embedded in a prose string, in source order. */
43
+ export declare function extractCitationRefs(text: string): string[];
44
+ /**
45
+ * Strip the emitted `NNN| ` line prefix from every line of a quoted span,
46
+ * POSITIONALLY — by the fixed character width the emitter recorded, never by a
47
+ * regex. A regex (`^\s*\d+\| `) collides with the markdown table rows the doc
48
+ * evidence class delivers verbatim (`| 12 | value |`), silently mutilating a
49
+ * quoted cell before it is matched. A line shorter than the prefix carries no
50
+ * prefix and is left alone.
51
+ */
52
+ export declare function stripEmittedLinePrefix(text: string, prefixWidth: number): string;
53
+ /** One contiguous run of TRUE 1-based source lines. */
54
+ export interface DeliveredLineRun {
55
+ start: number;
56
+ end: number;
57
+ }
58
+ /**
59
+ * One excerpt as it was actually delivered to the author: which file it came
60
+ * from, which contiguous line runs of that file it contained, and how wide the
61
+ * emitted per-line prefix was. A first-to-last SPAN would be a lie for a
62
+ * deliberately non-contiguous excerpt (extracted comment blocks, declaration
63
+ * lines) — the runs are what was delivered, so the runs are what is checked.
64
+ */
65
+ export interface DeliveredExcerpt {
66
+ source_path: string;
67
+ line_runs: readonly DeliveredLineRun[];
68
+ prefix_width: number;
69
+ }
70
+ export type CitationVerdict = "ok" | "unparseable" | "unknown_path" | "inverted_range" | "line_out_of_range" | "outside_delivered_evidence" | "quote_not_found";
71
+ export interface CitationCheck {
72
+ owner_id: string;
73
+ /** The submitted reference, byte-identical — reported, never rewritten. */
74
+ ref: string;
75
+ verdict: CitationVerdict;
76
+ resolved_path?: string;
77
+ file_lines?: number;
78
+ detail?: string;
79
+ }
80
+ export interface CitationInput {
81
+ /** Whatever the caller uses to attribute the citation (a charter id, a lane). */
82
+ owner_id: string;
83
+ ref: string;
84
+ quote?: string;
85
+ }
86
+ export interface CheckCitationsParams {
87
+ root: string;
88
+ /** Tracked repo paths, case-preserving — for bare-basename resolution. */
89
+ corpus: ReadonlySet<string>;
90
+ citations: readonly CitationInput[];
91
+ readSource?: SyncSourceReader;
92
+ /**
93
+ * What the author was actually handed. When supplied, a citation whose lines
94
+ * lie in no delivered run is `outside_delivered_evidence`. When ABSENT the
95
+ * check is skipped entirely and {@link CitationCheckResult.delivered_evidence_checked}
96
+ * says so — an unavailable manifest must read as "not checked", never as a pass.
97
+ */
98
+ delivered?: readonly DeliveredExcerpt[];
99
+ }
100
+ export interface CitationCheckResult {
101
+ /** Citations that parsed into a path and were checked. */
102
+ checked_count: number;
103
+ /** Every citation's verdict, sorted by (owner_id, ref). */
104
+ checks: CitationCheck[];
105
+ /** Whether the delivered-evidence leg ran (a `delivered` index was supplied). */
106
+ delivered_evidence_checked: boolean;
107
+ }
108
+ /**
109
+ * Check every citation and return a verdict for each. Deterministic and
110
+ * order-stable: the result array is sorted by `(owner_id, ref)`, so a re-run over
111
+ * the same inputs produces a byte-identical array and cannot churn the content
112
+ * hash of an artifact that carries it.
113
+ */
114
+ export declare function checkCitations(params: CheckCitationsParams): CitationCheckResult;
115
+ //# sourceMappingURL=citationGrounding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citationGrounding.d.ts","sourceRoot":"","sources":["../../../src/shared/validation/citationGrounding.ts"],"names":[],"mappings":"AAuCA,+FAA+F;AAC/F,MAAM,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;AAKhE;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,IAAI,gBAAgB,CAgBjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAYxE;AAYD,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB1D;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMhF;AAED,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GACvB,IAAI,GACJ,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GACnB,4BAA4B,GAC5B,iBAAiB,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,iFAAiF;IACjF,0BAA0B,EAAE,OAAO,CAAC;CACrC;AA2CD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,GAC3B,mBAAmB,CA6KrB"}
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Citation grounding — ONE core, two draws.
3
+ *
4
+ * A citation is `path`, `path:line`, or `path:start-end`. This module is the
5
+ * single authority that parses one, resolves its path against the repository,
6
+ * checks its line range against the file's REAL length, optionally re-verifies a
7
+ * quoted span, and — when the caller can say what evidence was actually handed to
8
+ * the author — checks that the cited lines lie inside evidence that was delivered.
9
+ *
10
+ * Two draws consume it:
11
+ * - the REMEDIATE draw asks the existential question ("does this evidence
12
+ * string cite at least one real, in-range location?") through
13
+ * `evidenceCitesRealPath`, a thin wrapper in `src/remediate/phases/grounding.ts`;
14
+ * - the AUDIT draw asks the per-citation question over a charter register's
15
+ * `provenance[].ref` / `.quote` and records each verdict.
16
+ *
17
+ * **The core is SYNCHRONOUS**, over an injected {@link SyncSourceReader}. That is
18
+ * a deliberate constraint, not an oversight: the remediate draw's callers
19
+ * (`evidenceCitesRealPath`, `groundEvidence`) are synchronous predicates called
20
+ * inside `.some()` over every finding's evidence, and making them async would
21
+ * cascade through the whole grounding pass for no gain — the reads are small,
22
+ * memoized per pass, and already synchronous today.
23
+ *
24
+ * **It REJECTS, it never REPAIRS.** A wrong line number is reported unchanged;
25
+ * there is no nearest-enclosing-declaration resolution. That pass was tried and
26
+ * rejected repo-wide on 2026-07-28 (see `docs/backlog/durable-traps.md`, "Cite a
27
+ * SYMBOL, never a bare line number"): it swapped an honest stale number for a
28
+ * confident wrong one. The verdict enum has no repair state, so the exclusion is
29
+ * by construction rather than by intent.
30
+ */
31
+ import { existsSync, readFileSync, statSync } from "node:fs";
32
+ import { isAbsolute, join } from "node:path";
33
+ import { compareCodeUnits } from "../compareCodeUnits.js";
34
+ import { isBareBasename, quoteMatches, resolveBasenameToTrackedPath, } from "./findingGrounding.js";
35
+ const defaultSyncSourceReader = (absolutePath) => readFileSync(absolutePath, "utf8");
36
+ /**
37
+ * A {@link SyncSourceReader} memoized by absolute path, for ONE checking pass: a
38
+ * batch of citations into the same file reads that file once. Failures are cached
39
+ * too, so an unreadable path is not retried per citation.
40
+ *
41
+ * Scope it to a single pass and discard it — a reader that outlived the pass
42
+ * would serve stale bytes after a later edit, which is exactly what re-checking
43
+ * a citation against disk exists to catch.
44
+ */
45
+ export function createMemoizedSyncSourceReader() {
46
+ const hits = new Map();
47
+ const misses = new Map();
48
+ return (absolutePath) => {
49
+ const cached = hits.get(absolutePath);
50
+ if (cached !== undefined)
51
+ return cached;
52
+ if (misses.has(absolutePath))
53
+ throw misses.get(absolutePath);
54
+ try {
55
+ const text = defaultSyncSourceReader(absolutePath);
56
+ hits.set(absolutePath, text);
57
+ return text;
58
+ }
59
+ catch (error) {
60
+ misses.set(absolutePath, error);
61
+ throw error;
62
+ }
63
+ };
64
+ }
65
+ /**
66
+ * The number of TRUE lines in a source text.
67
+ *
68
+ * Two corrections over a bare `split("\n").length`, both of which produced a
69
+ * silent off-by-one that let `path:<n+1>` ground into an n-line file:
70
+ * - a single TRAILING empty segment is dropped — a file that ends with a line
71
+ * terminator has n lines, not n+1;
72
+ * - carriage returns are stripped first, so a CRLF checkout counts the same as
73
+ * an LF one (`OS/platform-agnostic`: the same file must not have two lengths
74
+ * depending on who checked it out).
75
+ * Empty content is zero lines.
76
+ */
77
+ export function countSourceLines(content) {
78
+ if (content.length === 0)
79
+ return 0;
80
+ const segments = content.replace(/\r/g, "").split("\n");
81
+ if (segments.length > 1 && segments[segments.length - 1] === "") {
82
+ segments.pop();
83
+ }
84
+ return segments.length;
85
+ }
86
+ /** The `:<start>[-<end>]` suffix, anchored at the end of a reference. */
87
+ const LINE_SUFFIX_RE = /:(\d+)(?:-(\d+))?$/;
88
+ /**
89
+ * Parse `path`, `path:12`, or `path:12-19` into its parts. Returns `undefined`
90
+ * when the reference carries no path at all (empty, or a bare line suffix).
91
+ * The path half is taken verbatim: resolving it is a separate step, so a
92
+ * component id or a checkpoint field parses here and fails to resolve later,
93
+ * which is the honest split.
94
+ */
95
+ export function parseCitationRef(ref) {
96
+ const trimmed = ref.trim();
97
+ if (trimmed.length === 0)
98
+ return undefined;
99
+ const suffix = LINE_SUFFIX_RE.exec(trimmed);
100
+ if (!suffix)
101
+ return { raw: ref, path: trimmed };
102
+ const path = trimmed.slice(0, suffix.index);
103
+ if (path.length === 0)
104
+ return undefined;
105
+ const start = Number(suffix[1]);
106
+ const end = suffix[2] === undefined ? undefined : Number(suffix[2]);
107
+ return end === undefined
108
+ ? { raw: ref, path, start_line: start }
109
+ : { raw: ref, path, start_line: start, end_line: end };
110
+ }
111
+ /**
112
+ * Candidate `path[:start[-end]]` citations inside a prose string. A token must
113
+ * look like a path (contains a separator or a dot-extension) to be considered;
114
+ * bare prose words never match. THE one home of the embedded-citation grammar —
115
+ * the range half is what a `(?::(\d+))?` grammar silently dropped, validating a
116
+ * citation's start while its end overshot the file by 50x.
117
+ */
118
+ const EVIDENCE_PATH_TOKEN_RE = /(?<path>[A-Za-z0-9_@.-]*[/\\][A-Za-z0-9_@./\\-]+|[A-Za-z0-9_@-]+\.[A-Za-z0-9_-]+)(?::(?<start>\d+)(?:-(?<end>\d+))?)?/g;
119
+ /** Every citation reference embedded in a prose string, in source order. */
120
+ export function extractCitationRefs(text) {
121
+ const refs = [];
122
+ for (const match of text.matchAll(EVIDENCE_PATH_TOKEN_RE)) {
123
+ const path = match.groups?.path;
124
+ if (!path)
125
+ continue;
126
+ const start = match.groups?.start;
127
+ const end = match.groups?.end;
128
+ refs.push(start === undefined
129
+ ? path
130
+ : end === undefined
131
+ ? `${path}:${start}`
132
+ : `${path}:${start}-${end}`);
133
+ }
134
+ return refs;
135
+ }
136
+ /**
137
+ * Strip the emitted `NNN| ` line prefix from every line of a quoted span,
138
+ * POSITIONALLY — by the fixed character width the emitter recorded, never by a
139
+ * regex. A regex (`^\s*\d+\| `) collides with the markdown table rows the doc
140
+ * evidence class delivers verbatim (`| 12 | value |`), silently mutilating a
141
+ * quoted cell before it is matched. A line shorter than the prefix carries no
142
+ * prefix and is left alone.
143
+ */
144
+ export function stripEmittedLinePrefix(text, prefixWidth) {
145
+ if (prefixWidth <= 0)
146
+ return text;
147
+ return text
148
+ .split("\n")
149
+ .map((line) => (line.length >= prefixWidth ? line.slice(prefixWidth) : line))
150
+ .join("\n");
151
+ }
152
+ /**
153
+ * Resolve a cited path to an existing absolute path plus the repo-relative form
154
+ * it resolved through. A full/dotfile path resolves by the `root` join; a bare
155
+ * basename that is not a top-level file resolves against the tracked-path corpus
156
+ * (INV-B3-3) so a nested `advance.ts` is not false-negatived.
157
+ */
158
+ function resolveCitedPath(root, citedPath, corpus) {
159
+ const trimmed = citedPath.trim();
160
+ const direct = isAbsolute(trimmed) ? trimmed : join(root, trimmed);
161
+ if (existsSync(direct)) {
162
+ return { absolutePath: direct, repoRelativePath: trimmed.replace(/\\/g, "/") };
163
+ }
164
+ if (isBareBasename(trimmed)) {
165
+ const tracked = resolveBasenameToTrackedPath(trimmed, corpus);
166
+ if (tracked) {
167
+ const resolved = isAbsolute(tracked) ? tracked : join(root, tracked);
168
+ if (existsSync(resolved)) {
169
+ return { absolutePath: resolved, repoRelativePath: tracked };
170
+ }
171
+ }
172
+ }
173
+ return undefined;
174
+ }
175
+ function runContains(runs, start, end) {
176
+ return runs.some((run) => start >= run.start && end <= run.end);
177
+ }
178
+ /**
179
+ * Check every citation and return a verdict for each. Deterministic and
180
+ * order-stable: the result array is sorted by `(owner_id, ref)`, so a re-run over
181
+ * the same inputs produces a byte-identical array and cannot churn the content
182
+ * hash of an artifact that carries it.
183
+ */
184
+ export function checkCitations(params) {
185
+ const readSource = params.readSource ?? createMemoizedSyncSourceReader();
186
+ const deliveredByPath = new Map();
187
+ for (const excerpt of params.delivered ?? []) {
188
+ const existing = deliveredByPath.get(excerpt.source_path);
189
+ if (existing)
190
+ existing.push(excerpt);
191
+ else
192
+ deliveredByPath.set(excerpt.source_path, [excerpt]);
193
+ }
194
+ const deliveredChecked = params.delivered !== undefined;
195
+ const checks = [];
196
+ let checkedCount = 0;
197
+ for (const citation of params.citations) {
198
+ const parsed = parseCitationRef(citation.ref);
199
+ if (!parsed) {
200
+ checks.push({
201
+ owner_id: citation.owner_id,
202
+ ref: citation.ref,
203
+ verdict: "unparseable",
204
+ detail: "no path could be read from the reference",
205
+ });
206
+ continue;
207
+ }
208
+ checkedCount += 1;
209
+ const resolved = resolveCitedPath(params.root, parsed.path, params.corpus);
210
+ if (!resolved) {
211
+ checks.push({
212
+ owner_id: citation.owner_id,
213
+ ref: citation.ref,
214
+ verdict: "unknown_path",
215
+ detail: `'${parsed.path}' does not resolve in the repository`,
216
+ });
217
+ continue;
218
+ }
219
+ const excerpts = deliveredByPath.get(resolved.repoRelativePath) ?? [];
220
+ let fileLines;
221
+ if (parsed.start_line !== undefined) {
222
+ const end = parsed.end_line ?? parsed.start_line;
223
+ if (parsed.start_line > end) {
224
+ checks.push({
225
+ owner_id: citation.owner_id,
226
+ ref: citation.ref,
227
+ verdict: "inverted_range",
228
+ resolved_path: resolved.repoRelativePath,
229
+ detail: `start line ${parsed.start_line} is after end line ${end}`,
230
+ });
231
+ continue;
232
+ }
233
+ let isFile = false;
234
+ try {
235
+ isFile = statSync(resolved.absolutePath).isFile();
236
+ }
237
+ catch {
238
+ isFile = false;
239
+ }
240
+ if (!isFile) {
241
+ checks.push({
242
+ owner_id: citation.owner_id,
243
+ ref: citation.ref,
244
+ verdict: "unknown_path",
245
+ resolved_path: resolved.repoRelativePath,
246
+ detail: "cited lines in something that is not a readable file",
247
+ });
248
+ continue;
249
+ }
250
+ let content;
251
+ try {
252
+ content = readSource(resolved.absolutePath);
253
+ }
254
+ catch {
255
+ checks.push({
256
+ owner_id: citation.owner_id,
257
+ ref: citation.ref,
258
+ verdict: "unknown_path",
259
+ resolved_path: resolved.repoRelativePath,
260
+ detail: "file could not be read on disk",
261
+ });
262
+ continue;
263
+ }
264
+ fileLines = countSourceLines(content);
265
+ if (parsed.start_line < 1 || end > fileLines) {
266
+ checks.push({
267
+ owner_id: citation.owner_id,
268
+ ref: citation.ref,
269
+ verdict: "line_out_of_range",
270
+ resolved_path: resolved.repoRelativePath,
271
+ file_lines: fileLines,
272
+ detail: `cited lines ${parsed.start_line}-${end} in a ${fileLines}-line file`,
273
+ });
274
+ continue;
275
+ }
276
+ if (deliveredChecked) {
277
+ const inside = excerpts.some((excerpt) => runContains(excerpt.line_runs, parsed.start_line, end));
278
+ if (!inside) {
279
+ checks.push({
280
+ owner_id: citation.owner_id,
281
+ ref: citation.ref,
282
+ verdict: "outside_delivered_evidence",
283
+ resolved_path: resolved.repoRelativePath,
284
+ file_lines: fileLines,
285
+ detail: excerpts.length === 0
286
+ ? "no excerpt of this file was delivered to the author"
287
+ : `lines ${parsed.start_line}-${end} lie in no delivered run of this file`,
288
+ });
289
+ continue;
290
+ }
291
+ }
292
+ }
293
+ // A PATH-ONLY citation makes no line claim, so it is not checked against the
294
+ // delivered runs. Some channels legitimately name a file they delivered no
295
+ // excerpt of — the structural packet lists every member in its file tree
296
+ // while a member with no top-level declarations yields no excerpt — and
297
+ // refusing those would be a false red, not a caught defect.
298
+ const quote = citation.quote?.trim() ?? "";
299
+ if (quote.length > 0) {
300
+ let content;
301
+ try {
302
+ content = readSource(resolved.absolutePath);
303
+ }
304
+ catch {
305
+ checks.push({
306
+ owner_id: citation.owner_id,
307
+ ref: citation.ref,
308
+ verdict: "unknown_path",
309
+ resolved_path: resolved.repoRelativePath,
310
+ detail: "file could not be read on disk",
311
+ });
312
+ continue;
313
+ }
314
+ // The RAW quote first — a correctly de-prefixed quote must never be
315
+ // mutilated by a strip it did not need. Only when that fails is the
316
+ // positional strip tried, using the width the emitter recorded.
317
+ const widths = new Set(excerpts.map((excerpt) => excerpt.prefix_width));
318
+ const matched = quoteMatches(content, citation.quote) ||
319
+ [...widths].some((width) => quoteMatches(content, stripEmittedLinePrefix(citation.quote, width)));
320
+ if (!matched) {
321
+ checks.push({
322
+ owner_id: citation.owner_id,
323
+ ref: citation.ref,
324
+ verdict: "quote_not_found",
325
+ resolved_path: resolved.repoRelativePath,
326
+ file_lines: fileLines,
327
+ detail: "the quoted span does not appear in the cited file",
328
+ });
329
+ continue;
330
+ }
331
+ }
332
+ checks.push({
333
+ owner_id: citation.owner_id,
334
+ ref: citation.ref,
335
+ verdict: "ok",
336
+ resolved_path: resolved.repoRelativePath,
337
+ ...(fileLines === undefined ? {} : { file_lines: fileLines }),
338
+ });
339
+ }
340
+ checks.sort((a, b) => compareCodeUnits(a.owner_id, b.owner_id) || compareCodeUnits(a.ref, b.ref));
341
+ return {
342
+ checked_count: checkedCount,
343
+ checks,
344
+ delivered_evidence_checked: deliveredChecked,
345
+ };
346
+ }
347
+ //# sourceMappingURL=citationGrounding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citationGrounding.js","sourceRoot":"","sources":["../../../src/shared/validation/citationGrounding.ts"],"names":[],"mappings":"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"}