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 · Roadmap

MOTIR-4164To Do

Planning bug: an `## Advisory dispositions` section discharged gate 4 by naming the BRANCH the substrate sits on — "committed on parent/… " read as "shipped", and the card sealed ready against a 404

Opened by Zhu Yue ·

Logged by motir run MOTIR-4139 (2026-09-02), guard #4. The correction is already applied to the tenant; this is the RECORD. It holds nothing up.

The defect

MOTIR-4139 sealed ready: true, valid: true, openBlockers: [] with a thorough ## Advisory dispositions section whose first bullet read:

No blocked_by is owed. Both halves it composes are shipped: motir-core's manifest and route are committed on parent/MOTIR-3909-legal-manifest, and motir-marketing's comparison is on that repository's parent branch. This card needs them to EXIST, which they do; it does not consume anything either is still producing.

Every clause of that is literally true and the conclusion is false. The card's criterion 2 does not need the manifest to exist — it needs motir-core to be serving it, because AMENDMENT 2 §E deliberately chose a served artifact as the transport. Measured at dispatch:

claimcommandresult
the manifest is servedcurl -s -o /dev/null -w '%{http_code}' https://app.motir.co/api/legal/egress-manifest404
the manifest is on motir-core maingit ls-tree origin/main lib/legal/egress-manifest.json app/api/legal/egress-manifest/route.ts | wc -l0
AMENDMENT 2 §E is on motir-core maingit show origin/main:docs/decisions/public-surface-hosts.md | grep -c 'AMENDMENT 2'0
the producing PR has mergedgh pr view 2513 --json state,mergedAtOPEN, mergedAt: null

A second, independent defect on the same card: it was pinned targetRepo: motir-marketing while criterion 1 records the mechanism in docs/decisions/public-surface-hosts.md — a document that exists only in motir-core. motir-marketing's origin/main has no docs/decisions/ directory at all (git ls-tree -r origin/main --name-only docs/decisions | wc -l0). The straddle detector could not see it: likely-repo-straddle matches a repo-qualified PATH in a criterion, and the criterion names a bare filename.

Fix applied (already in the tenant)

  1. link_work_itemsMOTIR-4139 blocked_by MOTIR-3909, the sibling container under epic MOTIR-3875 that owns motir-core's half. Container edge, not a leaf edge to MOTIR-4008: gate 7 forbids a cross-parent blocked_by, and readiness.blockedByAncestor makes the container edge sufficient.
  2. transition_status MOTIR-4139Blocked.
  3. update_work_item — the false disposition struck on the record (kept, not deleted) with the evidence table beside it, and criteria tagged per repository.
  4. update_work_itemtargetRepos: ['motir-marketing', 'motir-core']. A bug carries a repository SET (only kind: subtask is bound by ONE REPO = ONE PR), so this is one card with two pull requests, not a split into siblings.
  5. add_comment on MOTIR-4139 recording the halt.

No worktree was created and no code was written.

What would have prevented it

Gate 4 (an AC that names a not-done card is a missing blocked_by until proven otherwise) and run.md guard #4 both exist and both fired correctly at DISPATCH — the run-time half worked exactly as written, including read the card's own advisory dispositions as a reason to look HARDER. What has no rule is the AUTHORING half: what counts as "proven otherwise".

The tell is grep-able and it is in the words an author actually types when discharging gate 4:

"committed on <branch>" · "on that repository's parent branch" · "lands in PR #N" · "already written, awaiting merge" · "it needs them to EXIST, which they do"

Each of these is a citation of a branch offered as evidence that a dependency is satisfied, and none of them is one. The discharge a merged trunk supports is git ls-tree origin/main; the discharge a served artifact requires is a fetch. Distrust the thorough disposition specifically — a card that never mentions its advisories reads careless, and one that quotes, agrees and reasons them away reads considered, so the false discharge arrives with the better paper trail.

Open question this record should settle, per the promote-vs-lesson test — default is LESSON: is a one-line clause owed under gate 4 (a disposition citing a BRANCH, a PR number, or "exists" discharges nothing; the discharge is git ls-tree origin/main, or a fetch where the transport is a served artifact), or does the existing global lesson corpus already carry it? Read MOTIR-1464's not-done children FIRST — a W card for this family may already exist, and a duplicate splits the warrant of the very rule it is trying to strengthen.

Acceptance criteria

  • MOTIR-4139 reads status: blocked with MOTIR-3909 in its openBlockers, and its body carries the struck disposition plus the evidence table. (Verify by get_work_item; nothing to build.)
  • MOTIR-4139's targetRepos is ['motir-marketing', 'motir-core'].
  • The promote-vs-lesson question above is SETTLED on evidence — MOTIR-1464's not-done children read first, the family counted, and the answer written here. If SHARPEN, the clause is folded into an existing W card in the same region rather than filed as a new one; if LESSON, say which existing lesson covers it.

Advisory dispositions

  • No blocked_by is owed, and this time the discharge is that the card CONSUMES nothing. Its criteria read on the tenant graph (already in the state they assert) and on the corpus — not on any output MOTIR-4139 or MOTIR-3909 is still producing. relates_to MOTIR-4139 carries the discovery trace, which is provenance rather than consumption.
  • No sprint. MOTIR-1465 carries none and a planning bug is not build work; this one blocks nothing.

Context refs

  • MOTIR-4139 — the card this was filed about; relates_to
  • MOTIR-3909 — the wired blocker; motir-core PR #2513 is its open half
  • motir-meta/prompts/run.md guard #4 — the run-time half, which worked
  • motir-meta/prompts/plan-rules/core.md gate 4 / gate 7 / gate 21 — the authoring half, where the gap is
  • Global lessons reinforced against this occurrence: cpqdjl5t0mlk9hf4v92xtawnn (an acceptance criterion that reads on state this card does not produce), cc7jdch5mk43j82mpq2aavrou (an absence-criterion commissions a producer in the other repository)

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