Planning bug — filed by the motir run MOTIR-3451 session, 2026-08-25. The correction is already applied to MOTIR-3451 (both criteria amended on the record, with evidence); this card is the telemetry.
MOTIR-3451 is a clean, well-authored bug card: the defect was real, reproduced at the reporter's base and at HEAD, and the fix landed in one commit (motir-core#2276, 254 deletions, one file). Two of its six acceptance criteria were nonetheless false as written, and both were falsifiable by running the very command they quote.
Criterion 2 asked for
grep -c 'The element split with MOTIR-2546 — \*\*WITHDRAWN\*\*'returns 1
The shipped heading is not bold, and never has been:
$ git grep -c 'WITHDRAWN\*\*' origin/main -- design/shell/design-notes.md
(no match)
$ git grep -n 'element split with MOTIR-2546' origin/main -- design/shell/design-notes.md
699:### The element split with MOTIR-2546 — WITHDRAWN (MOTIR-2674, 2026-08-11)
The card's body had the same bold form in its prose, so the error was made once and propagated into the criterion. Read literally, the criterion returns 0 on a correct fix — the exact inversion of what it is for. The run had to decide whether it had failed the card or the card had misquoted the file, and only a git grep on the ref settled it.
Criterion 6 asked that
for f in design/*/design-notes.md; do grep '^## ' "$f" | sort | uniq -d; doneprints nothing
At origin/main 7e97e2ed — and at the card's own base dacf711b — that command prints nine files. Eight are unrelated to this defect: they repeat per-panel boilerplate headings (## Where it lives, ## Token / a11y rules honoured, ## Primitives composed (no hand-rolling), ## Panels (review EACH — mistake #31)), which is a sectioning convention in those areas' notes. The criterion asserts a property of the whole design/ tree that was already false when it was written, and stays false after a perfect fix.
The intent is recoverable and correct — the criterion's own next sentence is "a duplicate found in another area is its own card", which only makes sense if the author expected other areas to appear. The differential form ("design/shell/design-notes.md leaves the list and nothing joins it") is what was meant, and it is satisfied.
They look like two different mistakes and they are one: a criterion stated as a command plus an expected output was written from the card author's model of the file rather than from the file. One retyped a string; one predicted an output. Neither cost anything to check — a git grep on the ref, and one run of the loop — and both were checkable at authoring time, from the same shell the author was already using to read the file.
This is the same family as the ENUMERATION limb in plan-rules/phase-deepen.md (a card COUNTING a population owes the ref the count was taken on), widened one notch: a card QUOTING or PREDICTING owes the same ref. A count is not the only measurement a criterion can smuggle in unverified.
Both defects are individually trivial and both were absorbed by the run in minutes. What makes them worth recording is that they are indistinguishable, from inside the run, from the fix being wrong. A grep -c returning 0 where the card says 1 is the signature of an incomplete fix; a sweep printing nine files where the card says none is the signature of a fix that broke eight other areas. The run's first duty on either signal is to suspect itself, and both times the suspicion was misplaced. That is a real cost paid by every session that meets a criterion of this shape, and it scales with how careful the runner is.
plan-rules/phase-deepen.md's NEGATIVE/ENUMERATION limb pair gains a third limb — a QUOTATION limb — stating that a criterion which quotes a literal string from a tracked file, or predicts a command's output, must be produced BY that command against a named ref (git grep/git show <ref>:<path>), never retyped from reading. Cite MOTIR-3451's two criteria as the fixture.motir-meta is the target repo, so the PR carries MOTIR-<id> in its branch and title (run.md's narrowed motir-meta rule — the PR IS this card's deliverable).plan-rules/phase-deepen.md — the NEGATIVE and ENUMERATION limbs this extends.design/shell/design-notes.md at origin/main 7e97e2ed — where both criteria were falsified.