Normalize verified citation IDs in accepted report copies

Track AB#652973 and combined smoke 37310924454. Preserve immutable raw reports, compose bounded citation-ID and range normalization, and validate the complete candidate without salvage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
wenjiefan 2026-10-05 15:15:08 +02:00
parent 02e7ab15b0
commit 8c9385c16f
7 changed files with 400 additions and 45 deletions

View file

@ -168,8 +168,8 @@ pwsh .\tools\Test-ReviewContract.ps1 -Root .
The first command checks schema, sections, naming, sample references, and
skill registration. The second checks that every review leaf has a valid
positive/clean sample pair. The third checks the cross-surface findings-report
contract and its bounded range-normalization cases. None proves a model will
find every defect. See [evaluation](../evaluation/README.md) for optional
contract and its bounded citation-ID/range-normalization cases. None proves a
model will find every defect. See [evaluation](../evaluation/README.md) for optional
model-based scoring.
In the PR description, explain the mistake being prevented, supporting

View file

@ -59,9 +59,11 @@ only result.
5. Capture the exact Task return as the immutable raw audit payload and primary
transport. Preserve it unchanged in private artifacts or host logs. Before
the full DO acceptance gate, create a normalized candidate only for DO's
bounded optional-range case, record that normalization separately in private
telemetry, and accept the candidate only if the entire copy passes the
unchanged strict gate. Use `tools/Validate-FindingsReport.ps1`, passing the
bounded citation-ID and optional-range cases after strict JSON, full
structural schema, and reference-integrity checks. Record `normalizedIds`
and `removedRanges` separately in private telemetry, and accept the
candidate only if the entire copy passes the unchanged strict gate.
Use `tools/Validate-FindingsReport.ps1`, passing the
exact source paths and fully retrieved article paths; pass `-SkillKind super`
and `-ExpectedCompositionPath` for the final rolled-up report. The accepted report contains no undeclared
telemetry fields.