| name | citation-anchoring |
| description | Regression-check citation anchoring (citations stay in the same subsection) to prevent “polish drift” that breaks claim→evidence alignment.
**Trigger**: citation anchoring, citation drift, regression, cite stability, 引用锚定, 引用漂移.
**Use when**: after editing/polishing, you want to confirm citations did not migrate across `###` subsections.
|
Citation Anchoring (regression)
Purpose: prevent a common failure mode: polishing rewrites text and accidentally moves citation markers into a different ### subsection, breaking claim→evidence alignment.
Inputs
output/DRAFT.md
output/citation_anchors.prepolish.jsonl (baseline; created by draft-polisher on first run)
Outputs
output/CITATION_ANCHORING_REPORT.md (PASS/FAIL + drift examples)
Baseline policy
draft-polisher captures a baseline once per run: output/citation_anchors.prepolish.jsonl.
- Subsequent polish runs should keep per-H3 citation sets stable.
Workflow (analysis-only)
Role:
- Auditor: only checks and reports; does not edit.
Steps:
- Load the baseline anchors.
- Parse the current
output/DRAFT.md into ### subsections and extract citation keys per subsection.
- Compare current sets to baseline sets:
- keys added/removed within a subsection
- keys that migrated across subsections
- Write
output/CITATION_ANCHORING_REPORT.md:
- Status: PASS only if no drift is detected
- otherwise,
- Status: FAIL with a short diff table + examples
Notes
If you intentionally restructure across subsections:
- delete
output/citation_anchors.prepolish.jsonl and regenerate a new baseline (then treat that as the new regression anchor).
Troubleshooting
Issue: baseline anchor file is missing
Fix:
- Run
draft-polisher once to generate output/citation_anchors.prepolish.jsonl, then rerun the anchoring check.
Issue: citations intentionally moved across subsections
Fix:
- Delete
output/citation_anchors.prepolish.jsonl and regenerate a new baseline (then treat that as the new regression anchor).