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
144
planned
1,366
shipped

Motir · Roadmap

MOTIR-4268To Do

Planning bug: an advisory disposition that CLAIMS an edge is wired names a different card than the advisory does — MOTIR-4252 was held by 4238 while the advisory pointed at 4254's PR

Opened by Zhu Yue ·

Found by motir run MOTIR-4252 (2026-09-03), which halted at step 0a / guard #4 before any worktree existed. The correction is already applied to the tree — this card is the RECORD, and the rule change is what it asks for.

The defect

MOTIR-4252's ## Advisory dispositions section read:

subsumption · likely-in-flight — accepted, not dismissed. Wired as a blocked_by edge; see § Sequencing above.

validate_work_item on that card returns the advisory as:

{"kind":"subsumption","path":"design/shell/design-notes.md",
 "pullRequest":"moooon-B-V/motir-core#2554",
 "pullRequestTitle":"MOTIR-4254 · design(shell): the rail's bottom section loses Docs and Legal",
 "severity":"likely-in-flight","state":"open"}

The advisory names PR #2554 — MOTIR-4254's. The edge that was wired went to MOTIR-4238. Nobody compared the two. The disposition was therefore satisfied by an edge to a card the advisory never mentioned, and the real blocker stayed unwired.

The mis-attribution propagated into the card's substantive text. Its § Sequencing asserted:

"4238 takes the Legal row OUT of the rail's bottom section: six rows become five, and grep -c \">Legal<\" design/shell/rail-bottom-section.mock.html goes 5 → 0."

Measured on origin at 2026-09-03:

refrail-bottom-section.mock.html>Legal<>Docs<
origin/main56
origin/design/MOTIR-4238-help-menu (PR #2551)not touched56
origin/design/MOTIR-4254-rail-loses-two-rows (PR #2554)−238 lines00

So MOTIR-4238's pull request does not contain the change its blocked consumer was waiting for, and MOTIR-4252's acceptance criterion 5 was wrong twice over: wrong card, and five rows where the answer is fourMOTIR-4254 removes Docs as well as Legal, and that branch's own panel label reads "Complete — 4 rows".

The card also cited PR #2540 as MOTIR-4238's, which is CLOSED unmerged and whose title named MOTIR-4248.

How it happened

MOTIR-4254 was carved out of MOTIR-4238 by a likely-over-gate-sizing advisory (4238 was 5 pts / 85 min against a 70-minute threshold), and created at 2026-09-03T03:14:42Ztwelve minutes after MOTIR-4252 was authored at 03:02:31Z. The split moved the deliverable to a new key. MOTIR-4252's edge and prose, written against pre-split 4238, were not swept.

Why the existing gates did not fire

  • The sweep-the-referrers corollary (plan-rules/type-design.md) is written for a DESIGN-ALLOCATION pass. This was an over-gate-sizing carve-out, a different operation, and the referrer was a root-level card in a different container — outside the split's subtree, which is where a split naturally looks.
  • The advisory tier fired correctly and was defeated by its own disposition. The subsumption entry named the right pull request the whole time. What absorbed it is that the card wrote a disposition claiming the edge existed — and an edge DID exist, to a plausible neighbouring card, which is what makes this worse than the shape already recorded.
  • readiness was not wrong eitherMOTIR-4252 read ready: false on the 4238 edge, so it was correctly held out of the ready set. The card would have been unblocked by the WRONG merge: had #2551 merged first, the card would have gone claimable and drawn a six-row rail that #2554 was about to make four.

The rule change this asks for

A disposition that claims an advisory is already discharged by an EDGE must name the same work item the advisory names, and the check is mechanical. Two candidate homes:

  1. Authoring (plan-rules/core.md gate 21, the advisory-disposition gate). Add: where a disposition's remedy is "wired as a blocked_by edge", the key in that sentence must equal the key the advisory carries — for a subsumption entry, the work item whose pull request the advisory names. A disposition citing a different key is not a disposition.
  2. Dispatch (run.md guard #4, the read the card's own advisory dispositions block). That block currently teaches the runner to treat an acknowledged-and-deferred advisory as undischarged. Extend it: an advisory the card says it ACTED on is also undischarged until you verify the act — for an edge, that the edge points at the item the advisory names.

(2) is the one that would have caught this, since it is what did. (1) is where it stops being authored.

Related prior art — the third of a family

  • MOTIR-3749 — a split left two SIBLINGS edge-free; the dependency was prose with no key, so the detector had nothing to key on.
  • MOTIR-4091 — the edge EXISTED and ran BACKWARDS; the naming was in a scope-boundary section gate 4 does not read.
  • This one — the edge exists, points the right direction, and names the wrong card, behind a written disposition asserting it was checked.

All three are the same family: a split or a re-scope leaves an edge that every mechanical tier reads as fine. The lesson An advisory a card ACKNOWLEDGES as real and declines to act on is not discharged was reinforce_lesson'd against this occurrence (global scope, recurrence 3).

What the run already fixed on MOTIR-4252

  1. link_work_items blocked_by MOTIR-4254 — link cmtlckx5d003hhwphupllpcim.
  2. link_work_items blocked_by MOTIR-4248 — link cmtlcnp7s002shvn8oyt45d32; a third in-flight card that settles the top bar's avatar box at --height-control square, 40px under 3d-immersive, against top-bar.mock.html's stale fixed 36px. Flagged on the card as a judgement call.
  3. update_work_item — § Sequencing rewritten with the measurements above, criterion 5 corrected to four rows and to MOTIR-4254, the subsumption disposition corrected, § Resolution stating the hold.
  4. transition_statusBlocked.

Acceptance criteria

  1. motir-meta prompts/run.md guard #4's read the card's own advisory dispositions block states that a disposition claiming an advisory was ACTED on is undischarged until the act is verified, and that for a blocked_by remedy the verification is that the edge's target key equals the key the advisory carries.
  2. motir-meta prompts/plan-rules/core.md gate 21 carries the authoring half: a disposition whose remedy is an edge names the advisory's own key, or it is not a disposition.
  3. Both edits ADD rather than re-word (plan-rules/core.md's additions-not-rewordings convention), and each cites MOTIR-4252 as its fixture with the #2554 vs #2551 measurement.
  4. No change to validate_work_item — the detector reported this correctly and needs nothing. This card is a corpus change only.

Context refs

  • MOTIR-4252 — the card, its two run comments, and the amended § Sequencing / criterion 5.
  • MOTIR-4238 (PR #2551) · MOTIR-4248 (PR #2544) · MOTIR-4254 (PR #2554) — the three in-flight design cards.
  • motir-meta/prompts/run.md guard #4 · motir-meta/prompts/plan-rules/core.md gate 21 · plan-rules/type-design.md's sweep-the-referrers corollary.

Resolution

Open.

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