Argument self-loop: maintain an argument ledger + premise consistency report for drafted sections. **Trigger**: argument self-loop, argument chain, premise consistency, section self-check, paragraph contract, 论证自循环, 论证链路, 前提一致性, 段落论证动作. **Use when**: you are in C5 (PROSE allowed), `sections/*.md` exist, and you want to prevent “smooth but hollow” writing by enforcing argument moves + premise hygiene before merge. **Skip if**: you are pre-C2 (NO PROSE), or evidence packs are scaffolded/thin (route upstream to `evidence-selfloop` first). **Network**: none. **Guardrail**: do not invent facts; do not add/remove/move citation keys; do not move citations across subsections; the argument ledger is an intermediate artifact and must never be inserted into the paper.
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 keysoutput/SECTION_ARGUMENT_SUMMARIES.jsonloutput/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.mdMust 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.jsonlJSONL (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")titlesection_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 assumesadds: list of premises/definitions/conclusions it introducesparagraphs: 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.mdA compact narrative/dependency map (not a retelling of the paper).
It should include:
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 .codex/skills/argument-selfloop/scripts/run.py --workspace workspaces/<ws>--workspace <dir>--unit-id <U###>--inputs <semicolon-separated>--outputs <semicolon-separated>--checkpoint <C#>python .codex/skills/argument-selfloop/scripts/run.py --workspace workspaces/<ws>