Write survey prose into per-section files under sections/ so each unit can be QA\x27d independently before merging.
Trigger: subsection writer, per-section writing, split sections, sections/,...
Approve C2 is recorded and writer packs exist (outline/writer_context_packs.jsonl); you want evidence-bounded drafting without a monolithic one-shot draft.Purpose: write or refine per-section survey prose under sections/ while keeping the current pipeline contract unchanged.
Compatibility mode:
scripts/run.py still handles approval checks, missing-file bootstrap, and sections/sections_manifest.jsonlreferences/ instead of being encoded primarily in the scriptAlways read:
references/overview.mdreferences/paragraph_jobs.mdreferences/paragraph_job_archetypes.md when adjusting paragraph-role behavior or refactoring writer policy out of Pythonreferences/bootstrap_assembly.md when reasoning about compatibility-mode bootstrap behaviorRead as needed:
references/opener_catalog.md when paragraph 1 sounds generic or narratedreferences/contrast_moves.md when building A-vs-B comparison paragraphsreferences/eval_anchor_patterns.md when making performance / robustness / benchmark claimsreferences/limitation_moves.md when adding caveats or local conclusionsreferences/examples_good.md and references/examples_bad.md for calibration onlyMachine-readable contract:
assets/subsection_writer_context.schema.jsonassets/bootstrap_paragraph_templates.jsonassets/paragraph_job_templates.jsonRequired:
DECISIONS.md (must include Approve C2)outline/outline.ymloutline/writer_context_packs.jsonl (preferred)citations/ref.bibOptional but useful:
outline/subsection_briefs.jsonloutline/evidence_drafts.jsonloutline/evidence_bindings.jsonloutline/anchor_sheet.jsonloutline/chapter_briefs.jsonlKeep the current contract:
sections/S<sub_id>.md for H3 bodiessections/sections_manifest.jsonl, refreshed across all section files already
produced by the three writer Skillssections/h3_bodies.refined.ok after a model or human has reviewed the
generated H3 bodies and is submitting U100 for mandatory acceptancefront-matter-writer owns Abstract, Introduction, Related Work, Discussion, and
Conclusion. chapter-lead-writer owns H2 lead blocks. This Skill reads those
files while refreshing the shared manifest but does not claim their authorship.
The active rule is move coverage, not paragraph quota. A subsection should cover the necessary argument moves the pack supports; do not pad to a fixed count when the evidence does not justify it.
Opener / ending policy:
Use scripts/run.py as a helper only:
sections/h3_bodies.refined.okwriter-selfloop, so it cannot mean that the self-loop already passedwriter-selfloop calls the shared strict section checker, which recomputes the
H3 measure before the report can PASSpipeline-auditor measures the entire merged draft and writes a
scorecard whose verdict and dimensions the Harness projects into the
evaluation ledgeruv run python .codex/skills/subsection-writer/scripts/run.py --workspace <workspace>references/opener_catalog.md and references/examples_bad.md.references/eval_anchor_patterns.md before rewriting.When running in compatibility mode, scripts/run.py currently consumes:
DECISIONS.md for Approve C2outline/outline.yml to enumerate chapter / subsection filesoutline/writer_context_packs.jsonl as the primary drafting inputcitations/ref.bib for in-scope citationsoutline/subsection_briefs.jsonl, outline/evidence_drafts.jsonl, outline/evidence_bindings.jsonl, outline/anchor_sheet.jsonl, and outline/chapter_briefs.jsonl as optional enrichment sourcesuv run python .codex/skills/subsection-writer/scripts/run.py --workspace <workspace>--workspace <dir>--unit-id <id>--inputs <a;b;...>--outputs <a;b;...>--checkpoint <C*>uv run python .codex/skills/subsection-writer/scripts/run.py --workspace <workspace>DECISIONS.md lacks Approve C2, stop and fix approval first.outline/writer_context_packs.jsonl is thin, reroute upstream instead of padding prose.citations/ref.bib and the writer packs before editing output text.