Audit-style editing pass for `output/DRAFT.md`: remove template boilerplate, improve coherence, and enforce citation anchoring. **Trigger**: polish draft, de-template, coherence pass, remove boilerplate, 润色, 去套话, 去重复, 统一术语. **Use when**: a first-pass draft exists but reads like scaffolding (repetition/ellipsis/template phrases) or needs a coherence pass before global review/LaTeX. **Skip if**: the draft already reads human-grade and passes quality gates; or prose is not approved in `DECISIONS.md`. **Network**: none. **Guardrail**: do not add/remove/invent citation keys; do not move citations across subsections; do not change claims beyond what existing citations support.
Goal: turn a first-pass draft into readable survey prose without breaking the evidence contract.
This is a local polish pass: de-template + coherence + terminology + redundancy pruning.
Note: if the main issue is structural redundancy from section accumulation, push the change upstream to sections/ and use paragraph-curator before merge. draft-polisher should not be the primary place where you decide which paragraphs to keep.
Mission: remove generator voice and make prose read like one author wrote it.
Do:
Avoid:
Mission: prevent polishing from inflating claims beyond evidence.
Do:
Avoid:
You are the style and coherence editor for a technical survey.
Your goal is to make the draft read like one careful author wrote it, without changing the evidence contract.
Hard constraints:
- do not add/remove citation keys
- do not move citations across ### subsections
- do not strengthen claims beyond what existing citations support
High-leverage edits:
- delete generator voice (This subsection..., Next we move..., We now turn...)
- replace navigation with argument bridges (content-bearing handoffs)
- collapse repeated disclaimers into one methodology paragraph in front matter
- keep quantitative statements well-scoped (task/metric/constraint in the same sentence)
Working style:
- rewrite sentences so they carry content, not process
- vary rhythm, but avoid “template stems” repeating across H3s
output/DRAFT.mdoutline/outline.ymloutline/subsection_briefs.jsonloutline/evidence_drafts.jsonlcitations/ref.biboutput/DRAFT.md (in-place refinement)output/citation_anchors.prepolish.jsonl (baseline, generated on first run by the script)[@BibKey] keys.citations/ref.bib exists, do not introduce any key that is not defined there.### subsections.outline/evidence_drafts.jsonl and keep claims aligned to snippets.[@a] [@b]).[@a; @a]).Best-of-2 micro-polish (recommended):
Role split:
Targets:
outline/outline.yml (if present) to avoid heading drift during edits.outline/subsection_briefs.jsonl to keep each H3’s scope/RQ consistent while improving flow.This subsection ..., In this subsection ...Next, we move from ..., We now turn to ..., In the next section ...From <X> to <Y>, ...citation-injector was used, smooth any budget-injection sentences so they read paper-like:
e.g., ... clause tied to the subsection’s lens (no new facts).Key takeaway: across many H3s).Taken together, ...); vary synthesis phrasing and keep it content-bearing.
Rewrite recipe for subsection openers (paper voice, no new facts):
This subsection surveys/argues... / In this subsection, we...A central tension is ...; ...; we contrast ...For builders, the crux is ...; ...Seen through the lens of ..., ...Role split:
Targets:
Role split:
Targets:
python .codex/skills/draft-polisher/scripts/run.py --helppython .codex/skills/draft-polisher/scripts/run.py --workspace workspaces/<ws>--workspace <dir>: workspace root--unit-id <U###>: unit id (optional; for logs)--inputs <semicolon-separated>: override inputs (rare; prefer defaults)--outputs <semicolon-separated>: override outputs (rare; prefer defaults)--checkpoint <C#>: checkpoint id (optional; for logs)First polish pass (creates anchoring baseline output/citation_anchors.prepolish.jsonl):
python .codex/skills/draft-polisher/scripts/run.py --workspace workspaces/<ws>Reset the anchoring baseline (only if you intentionally accept citation drift):
output/citation_anchors.prepolish.jsonl, then rerun the polisher.TODO/TBD/FIXME/(placeholder).… or ... truncation.Fix:
### subsection; if restructuring is intentional, delete output/citation_anchors.prepolish.jsonl and regenerate a new baseline.Fix:
DECISIONS.md (typically Approve C2) before doing prose-level edits.