#180 Normalize recoverable leaf finding ranges
Review findings whose primary line lies inside location.range but differs from start-line are no longer rejected. A deep-copied candidate drops the optional range, keeps the raw output unchanged, and must pass the existing strict acceptance gate. All other invalid or ambiguous leaves still fail.
- 6files
- 2AL files
- 0objects
Pull request · merged into main on 2026-09-11 by JesperSchulz · 6 files (+250 -21), 2 AL · fix · tier official · reviewed (checked by Opus)
What changed
- Optional location.range is removed when start-line <= line <= end-line, start-line differs from line, and no suggested-code is present
- Raw Task output is kept unchanged as the audit payload; normalization is recorded separately in private telemetry
- The normalized candidate must pass the full existing strict acceptance gate before rollup
- Reversed or out-of-bounds ranges, missing fields, and bad JSON or paths still fail the whole leaf
- New Test-ReviewContract.ps1 regression test keeps the DO, coordinator and standalone runner docs aligned
- Behaviour changes for users or extensions.
AL objects touched
microsoft/skills/review/al-code-review.md: modified, not in the BC? snapshotskills/do.md: modified, not in the BC? snapshot
Context
- Systems: development, platform
Source: metadata of a merged pull request in microsoft/BCQuality (bcquality): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).