Problem
The DraftHorse spec requires step entry and exit conditions to be laid out as lists, but the rule is implied everywhere and stated nowhere. drafthorse-saddler therefore leaves a convoluted single-blob condition untouched — it passes every check that currently exists.
Where the gap is
docs/drafthorse/framework/notation.md — "Condition links" defines the AND/OR semantics and shows a bulleted example, but never states that the block must be a list.
extensions/skills/drafthorse/references/condition-writing.md — the section is headed "Writing the list", yet only covers conjunction and the **OR these are true:** separator. No guidance on splitting a compound sentence into items.
extensions/agents/drafthorse-saddler.md:96-116 — Condition Checks tests semantics only (state terms, de-hold, checkable, exhaustive, own-step-only, gates compound) plus the **AND**/**OR** notation. Nothing inspects the shape of the condition block. A single convoluted sentence passes if it happens to be checkable.
The machinery headings say "when these are true", which implies plurality and list form, but implication is not a check.
Proposed fix — three files
1. docs/drafthorse/framework/notation.md, under "Condition links" — the rule's home. Add as the first bullet:
- Every condition is its own list item. A condition block is a markdown list, never a prose sentence or paragraph; a compound clause joined by "and", "once", "unless", or a comma series is multiple conditions and splits into one item each.
2. extensions/skills/drafthorse/references/condition-writing.md, "Writing the list" — the authoring half. Add after the opening paragraph:
- Split until each item states one observable fact. "A report has arrived and no verdict is recorded, unless a repair was requested" is three facts and an alternative — two lists separated by
**OR these are true:**, not one sentence.
3. extensions/agents/drafthorse-saddler.md — the check. Belongs above the === Start conditions === divider so it covers both start and finished blocks. Insert after line 100:
- One condition per item — a condition block is a markdown list with one observable fact per item. Prose blobs, and items compounding several facts with "and", "once", "unless", or a comma series, are findings: name the split. This is shape, judged before the semantic tests below.
Then extend the mechanical sweep line (drafthorse-saddler.md:228) so it is caught in the cheap pass: add "the condition-block list shape" alongside "the condition-list separator".
Release impact
drafthorse-saddler.md and extensions/skills/drafthorse/ are both symlinked into the agent-tools plugin — a spec change plus a checker change, so this is an agent-tools minor bump via /versioning.
Existing DraftHorse documents will start failing the new check once it lands. The classroom handovers are the likely first casualties.
Problem
The DraftHorse spec requires step entry and exit conditions to be laid out as lists, but the rule is implied everywhere and stated nowhere.
drafthorse-saddlertherefore leaves a convoluted single-blob condition untouched — it passes every check that currently exists.Where the gap is
docs/drafthorse/framework/notation.md— "Condition links" defines the AND/OR semantics and shows a bulleted example, but never states that the block must be a list.extensions/skills/drafthorse/references/condition-writing.md— the section is headed "Writing the list", yet only covers conjunction and the**OR these are true:**separator. No guidance on splitting a compound sentence into items.extensions/agents/drafthorse-saddler.md:96-116—Condition Checkstests semantics only (state terms, de-hold, checkable, exhaustive, own-step-only, gates compound) plus the**AND**/**OR**notation. Nothing inspects the shape of the condition block. A single convoluted sentence passes if it happens to be checkable.The machinery headings say "when these are true", which implies plurality and list form, but implication is not a check.
Proposed fix — three files
1.
docs/drafthorse/framework/notation.md, under "Condition links" — the rule's home. Add as the first bullet:2.
extensions/skills/drafthorse/references/condition-writing.md, "Writing the list" — the authoring half. Add after the opening paragraph:3.
extensions/agents/drafthorse-saddler.md— the check. Belongs above the=== Start conditions ===divider so it covers both start and finished blocks. Insert after line 100:Then extend the mechanical sweep line (
drafthorse-saddler.md:228) so it is caught in the cheap pass: add "the condition-block list shape" alongside "the condition-list separator".Release impact
drafthorse-saddler.mdandextensions/skills/drafthorse/are both symlinked into theagent-toolsplugin — a spec change plus a checker change, so this is anagent-toolsminor bump via/versioning.Existing DraftHorse documents will start failing the new check once it lands. The classroom handovers are the likely first casualties.