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,369
shipped

Motir · Roadmap

MOTIR-4275To Do

Planning bug: an INTERIM card pair outlived the window it was written for — nothing walks back from the superseder's merge to the cards it makes pointless

Opened by Zhu Yue ·

Found by motir run MOTIR-4126, 2026-09-03, which halted at guard #4 with the card's premise falsified.

What happened

On 2026-09-01, two cards were authored under MOTIR-3875 whose ENTIRE scope was a temporary window:

  • MOTIR-4123 19:40Z — the interim disposition for /p/* 404ing while motir.co/explore linked into the hole.
  • MOTIR-4126 20:09Z — the design prerequisite for that interim state, blocks MOTIR-4123.

Both named MOTIR-3877 — the durable public-project-page story — as the thing that supersedes them, and MOTIR-4123 wrote the guard explicitly: "an interim measure that has to be remembered and removed later is only acceptable if this card also names the card that removes it." It named it, via relates_to.

MOTIR-3877 landed and deployed 21 hours later (943dcaf 2026-09-02 10:19 −07:00, 136b023 2026-09-02 10:40 −07:00) and closed the window. Nothing retired the two interim cards. MOTIR-4126 stayed todo / ready: true with openBlockers: [] and validate_work_item valid: true; it was claimed 2 days later by a run that only discovered the window had closed by measuring the live hosts itself.

The defect

A relates_to edge to a superseding card carries no semantics anything reads. It renders as a chip and is invisible to readiness, to validate_work_item, and to every advisory family. There is no state in the plan that expresses "this card is alive only until that card lands" — so the interim card's release condition is prose, and the event that discharges it happens on a different card that never looks back.

Two properties make it expensive out of proportion to the edit, and both are why "be more careful" would not have caught it:

  • The interim card is BETTER-written than average. MOTIR-4123 measured the live hosts, enumerated four dispositions, refused to pre-pick one, and named its own successor. That diligence is what made it read as scheduled rather than as debt, and nothing re-read it.
  • The correct-at-the-time prior-art check passes. When MOTIR-4126 was authored, MOTIR-3877 genuinely "has not started"MOTIR-4123 says so in its own body. The question that would have caught this is not "does a card already deliver this?" but "will the superseder land before this interim work is picked up?", and nobody asks a card about its own shelf life.

Building MOTIR-4126 as written would not merely have been wasted: its acceptance criterion 3 — "specifies no affordance leading to the unavailable /p/* destination" — instructs a designer to remove a working link.

Acceptance criteria

  • motir-meta/prompts/plan-rules/ carries a rule for an INTERIM card: a card whose scope exists only until a named other card lands must carry a machine-readable release condition, not a relates_to chip — and the pass that authors it says which card, on approval of that card, retires it.
  • The rule states the RUN-side half too: before starting a card whose own body describes a temporary window, re-measure the window; a relates_to to a done card is the trigger to check, not evidence that the handover was made.
  • The rule is added, never re-worded into an existing one (plan-rules/ additions-not-rewordings).
  • The change lands as a branch + PR against motir-meta main, never a direct commit.

Context refs

  • MOTIR-4126 — the card this was found on; its comment carries the full live measurement.
  • MOTIR-4123 — the interim card; its comment carries the disposition record.
  • MOTIR-4125 — the EARLIER planning bug on the same pair ("an interim UI defect card was ready with four visible dispositions and no design prerequisite"). Its remedy CREATED MOTIR-4126, so this is the second planning defect on one pair, and a different one: that one was about a missing prerequisite, this one is about a missing expiry.
  • motir-meta/prompts/run.md — guard #4, the run-side half.

Discussion

No comments yet.

Adding to this discussion signs you in on app.motir.co and brings you back to this request.

Add a comment