Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
145
planned
1,361
shipped

Motir · Work items

MOTIR-3988To Do

Planning bug: a bug card asserted a check "does not have one" three days after the check merged — the negative was never grepped, and the card cites the shipping story's own sibling

What happened

MOTIR-3936 was filed 2026-08-29T21:12Z asserting:

final: true is the natural place for a closing check and does not have one. It is the one moment the whole plan exists and the author is still present.

and made that the card's first two acceptance criteria ("final: true runs the plan-internal half", "the THREE checks share one implementation").

Both were already true on origin/main, and had been for three days. Measured while running the card:

$ git log --format='%h %ad %s' --date=short -S 'THE CONFIRMATION GATE, AT THE CLOSE' -- lib/services/plansService.ts
4f70366d6 2026-08-26 MOTIR-3560 — `planned` means APPROVABLE: gate the knowable rejections before close, and give the drift case a status of its own (#2309)

$ git log --format='%h %ad %s' --date=short -S 'async checkApprovability' -- lib/services/plansService.ts
4f70366d6 2026-08-26 MOTIR-3560 — …

MOTIR-3560 shipped markPlanned → runPersistGate (the close-time gate) and checkApprovability, the read validate_plan returns — calling the same function approvePlan calls. So on the day the card was written, the close already ran the gate and all three surfaces already shared one implementation, for the planItem: ref graph.

Why this is a PLANNING defect and not a product one

The product defect the card was about is real and shipped in #2470 — the gate read the wrong GRAPH (planItem: refs rather than the blocked_by edges the plan writes), and the AMENDMENT-8 correction doors never re-ran it. Both are genuine, and the two occurrences the card records both happened.

What is a planning defect is the stated cause. A card that explains a defect by what does NOT exist owes the grep (plan-rules/phase-deepen.md's NEGATIVE limb, and run.md's verify the claim against shipped reality at rung 2). No git log and no read of markPlanned was run against the sentence. The cost was not small:

  • the first two acceptance criteria described work already done, so a run either delivers nothing for them or re-derives them;
  • the diagnosis pointed at the wrong SUBJECT — the close — while the actual escape route for occurrence 1 was the correction door on a planned plan, which the card never names as the carrier;
  • the card's "regression test reproduces today's fixture — a correction writing an unresolvable ref, and final: true refusing it" is not reproducible as written: final: true had already refused that shape, so the fixture could only have arrived through a post-close correction.

⚠️ The aggravating detail — the evidence was one hop inside the card

The card's own Context refs cite MOTIR-3575"shipped validate_plan's ref-graph verdict" — which is a subtask of the same story that shipped the close gate, in the same pull request. The card therefore knew that a check had recently been unified across surfaces and still asserted the close had none. A citation was read for what it CONFIRMED and not for what it IMPLIED about its neighbours.

Acceptance criteria

  • motir-meta prompts/plan-rules/phase-deepen.md's NEGATIVE limb gains the CITATION corollary: when a card cites a recently-shipped sibling as context, the negative claim is checked against THAT card's own pull request, not only against a grep of today's tree — a card whose evidence names a shipped story has already told you where to look.
  • The corollary is stated with this instance as its fixture, in the same register as the limb's existing examples, and the addition is an ADD rather than a re-wording of the standing text (plan-rules-additions-not-rewordings).
  • grep confirms the limb is in exactly one pack before the edit, so the rule does not land in two homes.

Context refs

  • MOTIR-3936 — the card this was found on; its comment thread carries the amendment on the record
  • motir-core 4f70366d6 / PR #2309 — MOTIR-3560, the close-time gate the card said did not exist
  • motir-meta prompts/plan-rules/phase-deepen.md — the NEGATIVE limb this amends