(motir-meta) The design gate's NON-SELF limb — `(b) the type: design subtask` may not resolve to the card under test (`plan-rules/kind-leaf.md`)
Repo —
motir-meta. ONE PR.targetRepoISmotir-meta, so this PR is the card's deliverable: carryMOTIR-<n>in the branch (docs/MOTIR-<n>-<slug>) and the PR title, perrun.md's PR-title ↔ status-sync rule as narrowed 2026-08-10. The mirror half is the(motir-ai)cardblocked_bythis one; the DETECTOR half is the(motir-core)card, independent of both.
The prose half of planning bug MOTIR-3158, filed by motir run MOTIR-3158, 2026-08-19.
The gap
plan-rules/kind-leaf.md's PLANNING-TIME DESIGN GATE (no exceptions) — verified on origin/main 6948fac, the bullet opening at kind-leaf.md:108 — reads:
"Every UI-touching subtask you plan —
type: codeas much astype: design— MUST be linked, at PLAN time, to BOTH (a) the original design asset … and (b) thetype: designsubtask that produced (or will produce) it."
On a card that draws its own design, (b) resolves to the card itself. Read literally the requirement is met; read for its purpose it is inverted — the drawing and the files written to match it arrive in one pull request, approved by one click, which is Principle #13 (design before code, within every Story) exactly backwards.
That is not a hypothetical reading. MOTIR-3154 was sealed as a childless leaf with criterion 1 a design/ai-planning/ three-file amendment and criteria 4–5 the UI built against it; readiness.ready was true, validate_work_item valid: true, and claim_next_ready would have handed it out. Half of that drawing re-opened a decision Story MOTIR-1775 had made deliberately and in writing.
The rule was read and agreed with. The card's own gate-9 disposition said the correct shape out loud — "the re-shape is acceptance criterion 1 … and it is this card's first child, with the code criteria behind it" — and the card had no children. What was missing was not the rule; it was any reading of it that excludes the card under test.
The edit
ONE limb, appended to the design-gate bullet in plan-rules/kind-leaf.md (do not open a new section — this belongs where the gate is stated, so the two cannot be read apart):
- (b) MAY NOT RESOLVE TO THE CARD ITSELF. When a rule names ANOTHER card as a prerequisite, the check is that the other card is other. A gate whose requirement can be satisfied by the card under test is not a gate.
- And run the criterion-by-criterion sweep on the DESIGN axis, not only the repo axis. Gate 1 already says go criterion by criterion and name the repo each one is discharged in; two repos in that column is a split. Point the same method at design and name what each criterion PRODUCES: if one column says a design asset (a
design/<area>/path, a*.mock.html, adesign-notes.md, a.pen, a three-file set) and another says a rendered surface, the design criterion is a CHILD, not a criterion — and the code criteria areblocked_byit. - Cross-reference the sibling limb already in this file — "a card that declares its own split in prose has not split — THE SENTENCE IS THE SPLIT INSTRUCTION" (
kind-leaf.md:41) — because this is that failure landing on the design axis rather than the repo axis, and a reader who has met one should be sent to the other.
Follow the pack's existing form exactly: the limb takes a > **Warrant:** line naming MOTIR-3154 · 2026-08-19 · a childless leaf whose criterion 1 drew the design its criteria 4–5 built against · ×1 and a > → [fixtures/kind-leaf.md#…] pointer, with the matching fixture section added to prompts/plan-rules/fixtures/kind-leaf.md (three warrants there today, at kind-leaf.md:43/59/71, each with a fixture anchor).
Do NOT restate the detector. The (motir-core) sibling mechanizes this composition as a likely-self-blocking-design advisory; run.md's own guard-#4 block warns that "writing prose to duplicate a check that already runs is the exact inversion notes.html #219 records." This limb states the RULE — that (b) must be another card — and says the product reports the composition; it does not describe the algorithm.
run.md needs NO edit, verified. MOTIR-3158 carried a criterion asking guard #4 to read the new advisory at dispatch time. MOTIR-2878's W1 merged as ab9dac8 and already did that generically — "THE FAMILY LIST IS NOT THE TEST — the QUESTION is… An entry whose family you do not recognise is disposed of on that question and named in the report — never skipped for being off a list." Adding a fourth name to that list would work against the paragraph's own instruction. Recorded here so the next reader does not re-derive the edit.
Acceptance criteria
prompts/plan-rules/kind-leaf.md's design-gate bullet carries the NON-SELF limb: (b) may not resolve to the card under test, stated as a rule and not as a description of the detector.- The same limb carries the DESIGN-axis criterion sweep — name what each criterion PRODUCES; a design-asset column plus a rendered-surface column means the design criterion is a child.
- The limb carries a
> **Warrant:**line and a> → [fixtures/kind-leaf.md#…]pointer in the pack's existing form, and the matching section exists inprompts/plan-rules/fixtures/kind-leaf.md. - The limb cross-references the prose-split-not-performed rule already in this file, naming it as the same failure on a different axis.
run.mdis NOT edited, and this card's body says why.git grep -n 'may not resolve to the card' prompts/plan-rules/kind-leaf.mdreturns the limb — the one-command check that the edit landed where it was scoped.
Context refs
- MOTIR-3158 — the planning-bug record, with the full evidence and the advisory-vs-blocking decision.
- MOTIR-3154 — the instance. Its body has since been re-scoped;
notes.html#329 is the durable account. prompts/plan-rules/kind-leaf.md:41(prose-split-not-performed) and:108(the design gate) — both read onorigin/main6948fac.prompts/plan-rules/fixtures/kind-leaf.md— the three existing fixture sections to match.prompts/plan-rules/core.mdgate 1 — the criterion-by-criterion method this limb points at a second axis; gate 5 (design linked) — the checklist line this limb qualifies.- MOTIR-2878 (
done,ab9dac8) — W1, which is whyrun.mdneeds no edit.