Subsection Polisher (local, pre-merge)
Triggers & routing
- Trigger: subsection polisher, per-subsection polish, polish section file, 小节润色, 去模板, 结构化段落.
- Use when:
sections/S*.md exists but reads rigid/template-y; you want to fix quality locally before section-merger.
Purpose: upgrade one sections/S<sub_id>.md (H3 body-only) so it reads like survey prose before you merge into output/DRAFT.md.
This is intentionally local: fix one unit at a time, rerun gates, and converge without rewriting the whole paper.
Role cards (use explicitly)
Local Section Editor
Mission: improve one H3’s argument density and paper voice without changing citation keys.
Do:
- Rewrite the opener as tension -> why it matters -> thesis (end paragraph 1 with thesis).
- Add explicit contrasts and one evaluation anchor when missing.
- Add a subsection-specific limitation that changes interpretation.
Avoid:
- Adding/removing citation keys or moving citations across subsections.
- Replacing content with generic boilerplate.
Evidence Steward (stop padding)
Mission: prevent polishing from turning into invention when evidence is thin.
Do:
- If you cannot write a contrast or evaluation anchor without guessing, stop and route upstream.
Avoid:
- Strengthening claims beyond what the existing citations can support.
Role prompt: Local Section Editor (one H3 at a time)
You are editing one survey subsection to make it read like paper prose.
Your goal is to remove generator voice and strengthen argument moves without changing citation keys:
- opener: tension + why-it-matters + thesis (no narration)
- add explicit contrasts and an evaluation anchor if missing
- make at least one cross-paper synthesis paragraph (>=2 citations)
- add a subsection-specific limitation (not boilerplate)
Constraints:
- do not add/remove citation keys
- do not invent facts
- keep scope local to this H3
Inputs
- Target file:
sections/S<sub_id>.md (H3 body-only)
- Preferred context:
outline/writer_context_packs.jsonl
- Fallback context:
outline/subsection_briefs.jsonl + outline/evidence_drafts.jsonl
citations/ref.bib
Output
- Updated
sections/S<sub_id>.md (same path; citation keys unchanged)
Non-negotiables (contract)
- Citation keys are immutable: do not add/remove any
[@BibKey] markers.
- Scope is immutable: keep all citations within this H3’s allowed scope (
outline/evidence_bindings.jsonl / writer pack allowed_bibkeys_*).
- No invented facts: if you cannot write a concrete contrast or evaluation anchor without guessing, stop and fix upstream evidence.
- Body-only: no headings;
section-merger adds headings.
Target quality (what “polished” means)
A polished H3 reads like an argument, not a topic list:
- Paragraph 1 ends with a thesis (conclusion-first takeaway) and does not use narration templates.
- At least two explicit contrasts (A vs B) using contrast words.
- At least one evaluation anchor paragraph (task/benchmark + metric + constraint/budget/tool access when relevant).
- At least one cross-paper synthesis paragraph with >=2 citations in the same paragraph.
- At least one limitation/caveat tied to protocol mismatch / missing details / unclear threat model (not boilerplate).
Paper voice constraints (high signal anti-patterns)
Delete / rewrite these (they read like a generator):
- Outline narration:
This subsection ..., In this subsection, we ....
- Slide navigation:
Next, we move ..., We now turn to ..., In the next section ....
- Meta guidance:
survey synthesis/comparisons should ....
- Evidence-policy disclaimer spam: repeated
abstract-only/title-only/provisional boilerplate inside H3.
- Count-based slot openers: repeated "Two limitations..." / "Three takeaways..." used as paragraph starters.
Prefer these (paper voice):
- Content-first openers:
A central tension is ..., In practice, ..., One recurring pattern is ....
- Argument bridges (not navigation):
This contrast matters because ..., These assumptions shape ....
- Embedded citations as evidence (no trailing dump tags).
Workflow (one subsection)
- Load the subsection contract
- Read this subsection’s pack in
outline/writer_context_packs.jsonl.
- If the pack is missing/thin, fall back to
outline/subsection_briefs.jsonl (thesis/tension/paragraph_plan) + outline/evidence_drafts.jsonl (comparisons/eval/limitations).
- Extract (write down, not in the prose):
tension_statement + thesis
- 2–3
comparison_cards you will use for A-vs-B contrasts
- 1
evaluation_anchor_minimal (task/metric/constraint)
- 1 limitation hook from the evidence pack
- Preflight (kept out of the final prose)
- Draft 4 one-line sentences:
- Tension
- Contrast (A vs B; >=2 citations)
- Evaluation anchor (task/metric/constraint)
- Limitation
If you cannot write these without guessing, stop and push the gap upstream (
paper-notes / evidence-draft).
- Opener rewrite (paragraph 1)
- Remove narration openers.
- Write: 1–2 sentences tension/decision/lens + 1 sentence why it matters + end with the thesis.
Bad:
This subsection surveys tool interfaces for agents.
Better:
A central tension in tool interfaces is balancing expressive action spaces with verifiable execution; interface contracts largely determine which evaluation claims are meaningful.
- Paragraph pass (argument moves > listing)
- Rewrite paragraph-by-paragraph using the
grad-paragraph micro-structure:
- Best-of-2 rewrite (recommended): when a paragraph feels slot-like, draft 2 candidate rewrites and keep the one with clearer argument move + less template cadence (citations unchanged).
- tension → contrast → evaluation anchor → limitation
- Ensure you include:
=2 explicit contrasts (not “A then B” summaries)
=1 evaluation anchor paragraph
=1 cross-paper synthesis paragraph (>=2 citations)
=1 limitation paragraph/clause that is subsection-specific
- Citation embedding pass (no dumps)
- Rewrite paragraphs where citations appear only at the end as
[@a; @b; @c].
- Ensure every citation key you keep is defined in
citations/ref.bib.
Bad (dump):
Many systems adopt tool schemas. [@a; @b; @c]
Better (cite-as-evidence):
Systems such as X [@a] and Y [@b] formalize tool schemas to reduce action ambiguity, whereas Z [@c] keeps the interface looser and shifts the burden to validation.
- Rhythm + de-template pass
- Vary paragraph openings; avoid repeating the same synthesis stem across many paragraphs (especially
Taken together).
- Delete empty glue sentences that don’t add a claim, contrast, protocol detail, or limitation.
- Recheck (do not skip)
- Run
section-logic-polisher and address FAILs (thesis + connector density) without changing citation keys.
- Rerun
writer-selfloop (or the strict quality gate) and fix only what the report flags.
Rewrite recipes (common failure -> fix)
Use these as rewrite intentions, not copy-paste templates.
- Narration opener -> content claim
This subsection surveys ... -> A central tension is ...; this matters because ... (end paragraph 1 with the thesis).
- Slide navigation -> argument bridge
Next, we move from planning to memory. -> Planning specifies how decisions are made; memory determines what information those decisions can reliably condition on under a fixed protocol.
- Disclaimer spam -> one policy paragraph + local caveat only
- Delete repeated
abstract-only evidence boilerplate.
- Keep evidence policy once in Intro/Related Work; in H3, only add a local caveat when it changes the interpretation of a specific comparison.
- Meta “survey should” -> literature-facing observation
Therefore, survey comparisons should control for tool access. -> Across reported protocols, tool access and budget assumptions vary widely, making head-to-head comparison fragile unless those constraints are normalized.
- Too-vague quantitative claim -> add minimal context (or weaken)
- If a paragraph keeps a number, add: task type / metric definition / constraint (budget/cost/tool access) in the same paragraph and keep the citation embedded.
- If the context is unknown from the evidence pack, rewrite the claim as qualitative and mark the missing field as a verification target (without boilerplate).
Stop conditions (when polishing is the wrong move)
Stop and go upstream if:
- you cannot write a contrast without guessing (evidence pack is title/abstract-only)
- the subsection lacks evaluation anchors (no benchmarks/metrics/protocol details in notes)
- you keep needing out-of-scope citations to make the argument work
Acceptance checklist
1---2name: subsection-polisher3description: Polish a single H3 unit file under `sections/` into survey-grade prose (de-template + contrast/eval/limitation), without changing citation keys.4---56# Subsection Polisher (local, pre-merge)78## Triggers & routing910- **Trigger**: subsection polisher, per-subsection polish, polish section file, 小节润色, 去模板, 结构化段落.11- **Use when**: `sections/S*.md` exists but reads rigid/template-y; you want to fix quality locally before `section-merger`.121314Purpose: upgrade one `sections/S<sub_id>.md` (H3 body-only) so it reads like survey prose **before** you merge into `output/DRAFT.md`.1516This is intentionally local: fix one unit at a time, rerun gates, and converge without rewriting the whole paper.171819## Role cards (use explicitly)2021### Local Section Editor2223Mission: improve one H3’s argument density and paper voice without changing citation keys.2425Do:26- Rewrite the opener as tension -> why it matters -> thesis (end paragraph 1 with thesis).27- Add explicit contrasts and one evaluation anchor when missing.28- Add a subsection-specific limitation that changes interpretation.2930Avoid:31- Adding/removing citation keys or moving citations across subsections.32- Replacing content with generic boilerplate.3334### Evidence Steward (stop padding)3536Mission: prevent polishing from turning into invention when evidence is thin.3738Do:39- If you cannot write a contrast or evaluation anchor without guessing, stop and route upstream.4041Avoid:42- Strengthening claims beyond what the existing citations can support.434445## Role prompt: Local Section Editor (one H3 at a time)4647```text48You are editing one survey subsection to make it read like paper prose.4950Your goal is to remove generator voice and strengthen argument moves without changing citation keys:51- opener: tension + why-it-matters + thesis (no narration)52- add explicit contrasts and an evaluation anchor if missing53- make at least one cross-paper synthesis paragraph (>=2 citations)54- add a subsection-specific limitation (not boilerplate)5556Constraints:57- do not add/remove citation keys58- do not invent facts59- keep scope local to this H360```6162## Inputs6364- Target file: `sections/S<sub_id>.md` (H3 body-only)65- Preferred context: `outline/writer_context_packs.jsonl`66- Fallback context: `outline/subsection_briefs.jsonl` + `outline/evidence_drafts.jsonl`67- `citations/ref.bib`6869## Output7071- Updated `sections/S<sub_id>.md` (same path; citation keys unchanged)7273## Non-negotiables (contract)7475- Citation keys are immutable: do not add/remove any `[@BibKey]` markers.76- Scope is immutable: keep all citations within this H3’s allowed scope (`outline/evidence_bindings.jsonl` / writer pack `allowed_bibkeys_*`).77- No invented facts: if you cannot write a concrete contrast or evaluation anchor without guessing, stop and fix upstream evidence.78- Body-only: no headings; `section-merger` adds headings.7980## Target quality (what “polished” means)8182A polished H3 reads like an argument, not a topic list:83- Paragraph 1 ends with a **thesis** (conclusion-first takeaway) and does not use narration templates.84- At least **two explicit contrasts** (A vs B) using contrast words.85- At least **one evaluation anchor** paragraph (task/benchmark + metric + constraint/budget/tool access when relevant).86- At least **one cross-paper synthesis** paragraph with >=2 citations in the same paragraph.87- At least **one limitation/caveat** tied to protocol mismatch / missing details / unclear threat model (not boilerplate).8889## Paper voice constraints (high signal anti-patterns)9091Delete / rewrite these (they read like a generator):92- Outline narration: `This subsection ...`, `In this subsection, we ...`.93- Slide navigation: `Next, we move ...`, `We now turn to ...`, `In the next section ...`.94- Meta guidance: `survey synthesis/comparisons should ...`.95- Evidence-policy disclaimer spam: repeated `abstract-only/title-only/provisional` boilerplate inside H3.96- Count-based slot openers: repeated "Two limitations..." / "Three takeaways..." used as paragraph starters.9798Prefer these (paper voice):99- Content-first openers: `A central tension is ...`, `In practice, ...`, `One recurring pattern is ...`.100- Argument bridges (not navigation): `This contrast matters because ...`, `These assumptions shape ...`.101- Embedded citations as evidence (no trailing dump tags).102103## Workflow (one subsection)1041051) Load the subsection contract106- Read this subsection’s pack in `outline/writer_context_packs.jsonl`.107- If the pack is missing/thin, fall back to `outline/subsection_briefs.jsonl` (thesis/tension/paragraph_plan) + `outline/evidence_drafts.jsonl` (comparisons/eval/limitations).108- Extract (write down, not in the prose):109 - `tension_statement` + `thesis`110 - 2–3 `comparison_cards` you will use for A-vs-B contrasts111 - 1 `evaluation_anchor_minimal` (task/metric/constraint)112 - 1 limitation hook from the evidence pack1131142) Preflight (kept out of the final prose)115- Draft 4 one-line sentences:116 - Tension117 - Contrast (A vs B; >=2 citations)118 - Evaluation anchor (task/metric/constraint)119 - Limitation120If you cannot write these without guessing, stop and push the gap upstream (`paper-notes` / `evidence-draft`).1211223) Opener rewrite (paragraph 1)123- Remove narration openers.124- Write: 1–2 sentences tension/decision/lens + 1 sentence why it matters + end with the thesis.125126Bad:127- `This subsection surveys tool interfaces for agents.`128129Better:130- `A central tension in tool interfaces is balancing expressive action spaces with verifiable execution; interface contracts largely determine which evaluation claims are meaningful.`1311324) Paragraph pass (argument moves > listing)133- Rewrite paragraph-by-paragraph using the `grad-paragraph` micro-structure:134- Best-of-2 rewrite (recommended): when a paragraph feels slot-like, draft 2 candidate rewrites and keep the one with clearer argument move + less template cadence (citations unchanged).135 - tension → contrast → evaluation anchor → limitation136- Ensure you include:137 - >=2 explicit contrasts (not “A then B” summaries)138 - >=1 evaluation anchor paragraph139 - >=1 cross-paper synthesis paragraph (>=2 citations)140 - >=1 limitation paragraph/clause that is subsection-specific1411425) Citation embedding pass (no dumps)143- Rewrite paragraphs where citations appear only at the end as `[@a; @b; @c]`.144- Ensure every citation key you keep is defined in `citations/ref.bib`.145146Bad (dump):147- `Many systems adopt tool schemas. [@a; @b; @c]`148149Better (cite-as-evidence):150- `Systems such as X [@a] and Y [@b] formalize tool schemas to reduce action ambiguity, whereas Z [@c] keeps the interface looser and shifts the burden to validation.`1511526) Rhythm + de-template pass153- Vary paragraph openings; avoid repeating the same synthesis stem across many paragraphs (especially `Taken together`).154- Delete empty glue sentences that don’t add a claim, contrast, protocol detail, or limitation.1551567) Recheck (do not skip)157- Run `section-logic-polisher` and address FAILs (thesis + connector density) without changing citation keys.158- Rerun `writer-selfloop` (or the strict quality gate) and fix only what the report flags.159160## Rewrite recipes (common failure -> fix)161162Use these as rewrite *intentions*, not copy-paste templates.1631641) Narration opener -> content claim165- `This subsection surveys ...` -> `A central tension is ...; this matters because ...` (end paragraph 1 with the thesis).1661672) Slide navigation -> argument bridge168- `Next, we move from planning to memory.` -> `Planning specifies how decisions are made; memory determines what information those decisions can reliably condition on under a fixed protocol.`1691703) Disclaimer spam -> one policy paragraph + local caveat only171- Delete repeated `abstract-only evidence` boilerplate.172- Keep evidence policy once in Intro/Related Work; in H3, only add a local caveat when it changes the interpretation of a specific comparison.1731744) Meta “survey should” -> literature-facing observation175- `Therefore, survey comparisons should control for tool access.` -> `Across reported protocols, tool access and budget assumptions vary widely, making head-to-head comparison fragile unless those constraints are normalized.`1761775) Too-vague quantitative claim -> add minimal context (or weaken)178- If a paragraph keeps a number, add: task type / metric definition / constraint (budget/cost/tool access) in the same paragraph and keep the citation embedded.179- If the context is unknown from the evidence pack, rewrite the claim as qualitative and mark the missing field as a verification target (without boilerplate).180181## Stop conditions (when polishing is the wrong move)182183Stop and go upstream if:184- you cannot write a contrast without guessing (evidence pack is title/abstract-only)185- the subsection lacks evaluation anchors (no benchmarks/metrics/protocol details in notes)186- you keep needing out-of-scope citations to make the argument work187188## Acceptance checklist189190- [ ] Paragraph 1 ends with a thesis (no narration templates).191- [ ] >=2 explicit contrasts, >=1 evaluation anchor, >=1 synthesis paragraph (>=2 citations), >=1 limitation.192- [ ] No slide-like navigation / meta guidance / repeated evidence-policy boilerplate.193- [ ] No citation-dump paragraphs; citations are embedded in claim sentences.194- [ ] `section-logic-polisher` and `writer-selfloop` no longer flag this file.