Purpose: upgrade C5 from “generate text” to “execute argument actions under explicit constraints”.
This skill operationalizes the mechanism you described as a reusable, pipeline-native component:
It complements (not replaces) the other self-loops:
evidence-selfloop: blocks writing when packs are not writeable (do not pad)writer-selfloop: blocks template voice, missing sections/leads, scope/citation violationsargument-selfloop (this skill): blocks argument discontinuity and premise drift (even when prose is fluent)This skill treats “argument structure” as a first-class intermediate artifact, like evidence packs.
Outputs:
output/SECTION_ARGUMENT_SUMMARIES.jsonl (structured; per-section/per-paragraph argument moves)output/ARGUMENT_SKELETON.md (compact narrative + dependency map; not a prose restatement)output/ARGUMENT_SELFLOOP_TODO.md (PASS/FAIL + actionable edits)These files are not reader-facing and must never be merged into output/DRAFT.md.
Downstream:
paragraph-curator uses output/SECTION_ARGUMENT_SUMMARIES.jsonl (moves/outputs) + the ## Consistency Contract to run a controlled select->evaluate->subset->fuse pass without changing citation keys.After you complete a section (H3 or key front matter), the section must satisfy:
The self-check must result in concrete edits: add a missing definition, add a bridge sentence, add an explicit contrast, add a scope boundary, delete/reorder a paragraph, or strengthen the local conclusion.
Every paragraph must execute at least one argument action and be locally self-consistent. Use this action set (can be combined, but never empty):
Claim: a testable judgement/conclusion (avoid generic background)Definition/Setup: introduce a concept, assumption, task definition, protocol, comparison setJustification: reasoning chain or evidence support (including citations)Contrast/Differentiation: clarify differences, remove ambiguityBoundary/Failure: applicability limits, failure modes, threats to validityLocal Conclusion: a reusable takeaway / constraint that downstream paragraphs can rely onOne-sentence self-check (per paragraph):
If you cannot answer, the paragraph must be rewritten/merged/split until the action and output are clear.
writer-selfloop PASS, before mergesections/S<sub_id>.md) without changing citation keyswrite/update the record for that section in output/SECTION_ARGUMENT_SUMMARIES.jsonl
update output/ARGUMENT_SKELETON.md so it reflects:
output/ARGUMENT_SELFLOOP_TODO.md- Status: FAIL + a list of concrete edits when any section fails- Status: PASS only when all required sections are coherent and premises are stableoutput/ARGUMENT_SELFLOOP_TODO.md#Must exist and start with:
- Status: PASS|FAILRecommended structure (keep it short and debuggable):
## Failures (blocking)## Fix plan (actionable edits) (per file)## Premise drift watchlist (non-blocking)output/SECTION_ARGUMENT_SUMMARIES.jsonl#JSONL (one record per section/subsection).
Required fields per record:
kind: h3 | front_matter | discussion | conclusion (minimal set)
id: for H3 use the subsection id (e.g., "3.2")
title
section_id, section_title (for H3)
section_role: what this unit does in the paper (e.g., mechanism, evaluation_lens, risk_lens, synthesis)
depends_on: list of premises/definitions it assumes
adds: list of premises/definitions/conclusions it introduces
paragraphs: list of objects, each with:
i (1-based paragraph index)moves (non-empty list; pick from: claim, definition_setup, justification, contrast, boundary_failure, local_conclusion)output (one sentence: what this paragraph produces)Notes:
output/ARGUMENT_SKELETON.md#A compact narrative/dependency map (not a retelling of the paper).
It should include:
each H2/H3's necessity (what gap it fills)
explicit dependencies (premises consumed, outputs produced)
a global Consistency Contract section (single source of truth) that must not drift across edits:
Minimum format requirement:
output/ARGUMENT_SKELETON.md must contain a heading line: ## Consistency ContractChange rule (regression trigger):
sections/*.md to match, and rerun this self-loop until PASS.Keep it "writer-facing": no reader signposting, no “in this section we…”.
evidence-selfloop.writer-selfloop / citation-* first.This skill includes a validator script so the pipeline can block on missing ledgers.
It does not write paper prose, but it does generate the required ledger artifacts from existing sections/*.md files and then validates coverage/consistency.
python scripts/run.py --workspace workspaces/<ws>--workspace <dir>--unit-id <U###>--inputs <semicolon-separated>--outputs <semicolon-separated>--checkpoint <C#>python scripts/run.py --workspace workspaces/<ws>