Planning bug: MOTIR-3942 planned the conversation's whole CONTRACT and no PRODUCER — the pack, the value and the rules all ship, and nothing runs a conversation
Opened by Zhu Yue ·
Found by a user-invoked re-plan of MOTIR-3942 (2026-09-02). The correction is already submitted as plan cmtk23fn300cvhyphzmiul2pz; this card is the defect RECORD and it holds up nothing.
The defect
MOTIR-3942 was expanded into nineteen children that between them deliver the conversation's entire contract — PART 1's value (MOTIR-4058), the requirement's shape (MOTIR-4140), its bar (MOTIR-4141), its distribution (MOTIR-4142), PART 2's rules (MOTIR-4056 / MOTIR-4059), ask_user's relocation (MOTIR-4057), the pending-plans read (MOTIR-4107), clear_plan (MOTIR-4081) — and no card RUNS one.
Verified on origin/main, not inferred:
| read | result |
|---|---|
git grep composeConversationRules -- src | its own definition, two comments, corpusDeliveries — no src caller |
git grep -E 'conversation\s*[:=]' -- src | discovery.ts's unrelated ChatMessage[] and preplanSessionService — JobContext.conversation is assigned by nobody |
So settleTarget falls through to seedConversationFromEnvelope on every path that exists, and phase-conversation — a pack corpusDeliveries() asserts is DELIVERED — reaches no model.
Why nothing caught it
Every signal read clean, and each was correct:
readiness/validate_work_itemon MOTIR-3942 answer "has every work item this one waits on reacheddone?" The missing thing is not a work item.- The
advisorieschannel has no family for it.referencescans a card's own description for not-done KEYS; the absent producer has no key.subsumptionkeys on a MERGED pull request.shapereads a card's criteria against themselves. - The suites are all green and all read CONTENT.
part1TargetAndVerb.test.tsasserts whatphase-conversationcontains, that it is cheaper than any planning cell, and that no planning cell composes it by accident. Not one of them asks whether anything hands it to a model. - Three cards each declare "OUT: the turn loop" and none names an owner —
core.mdgate 4's FOURTH TELL, a deferral naming no target at all, which is by construction the one form no resolution check can fire on.
⚠️ The strongest evidence, and it was already on the board
MOTIR-4062 — this story's own gate card — states as its FIRST acceptance criterion "A conversation settles a target and the run plans against THAT card", under a heading reading "ASSERTED THROUGH THE SHIPPED SURFACE … the run is DRIVEN and what it emitted is read back." Its blocked_by set was {MOTIR-4060, MOTIR-4061, MOTIR-4063} — nothing that makes a conversation run. That criterion was unsatisfiable and the card read valid: true.
And its own explanationMd records the identical failure one story earlier, in this same epic: MOTIR-3940's walk driver was "built, unit-tested through its own port, and never executed on a real path — nothing set the option that turned it on. Every test was green and the feature did not run."
So this is the second occurrence of one shape inside one epic, the first of which is written up on the card the second one falsified. That is what makes it worth a record rather than a note.
The correction, already submitted
Plan cmtk23fn300cvhyphzmiul2pz adds two subtasks under MOTIR-3942 — the conversation session, and the walk's entry into it — and modifys MOTIR-4062 to blocked_by both, which is core.md gate 8's fifth limb (a terminal card's blocked_by is a FUNCTION of its parent's child set, so filing a sibling amends it).
Acceptance criteria
- A LESSON recording the takeaway is written to the store with its scope decided and stated. DONE — see the comment on this card for the row and the scope decision.
- The two boundary sentences still name no key. MOTIR-4140 ("No turn loop composes
phase-conversationyet") and MOTIR-4141 ("OUT: THE TURN LOOP. Nothing composesphase-conversationat runtime yet") each defer to nobody. A proposal cannot cite a key that does not exist until approval, so this closes with oneupdate_work_itemper card once plancmtk23fn300cvhyphzmiul2pzis approved and the two keys are assigned. This is the only work this card carries. - Nothing here re-litigates the correction — plan
cmtk23fn300cvhyphzmiul2pzis the shape and a person approves it.
Context refs
- MOTIR-3942 — the story re-planned;
relates_to. - MOTIR-4062 — the terminal gate card whose first criterion was unsatisfiable, and whose explanation records the prior occurrence.
motir-aisrc/llm/planningRulePacks.ts·src/jobs/registry.ts·src/jobs/planningTarget.ts— the three reads above.motir-metaprompts/plan-rules/core.md— gate 4's fourth tell (a deferral naming no target) and gate 8's fifth limb (the terminal card's edge set).
Discussion
No comments yet.
Adding to this discussion signs you in on app.motir.co and brings you back to this request.