Purpose: prevent a common failure mode: polishing rewrites text and accidentally moves citation markers into a different ### subsection, breaking claim→evidence alignment.
output/DRAFT.mdoutput/citation_anchors.prepolish.jsonl (baseline; created by draft-polisher on first run)output/CITATION_ANCHORING_REPORT.md (PASS/FAIL + drift examples)draft-polisher captures a baseline once per run: output/citation_anchors.prepolish.jsonl.Role:
Steps:
output/DRAFT.md into ### subsections and extract citation keys per subsection.output/CITATION_ANCHORING_REPORT.md:- Status: PASS only if no drift is detected- Status: FAIL with a short diff table + examplesIf you intentionally restructure across subsections:
output/citation_anchors.prepolish.jsonl and regenerate a new baseline (then treat that as the new regression anchor).Fix:
draft-polisher once to generate output/citation_anchors.prepolish.jsonl, then rerun the anchoring check.Fix:
output/citation_anchors.prepolish.jsonl and regenerate a new baseline (then treat that as the new regression anchor).