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-4173To Do

Planning bug: MOTIR-3975 scoped out ACTING on the completeness report and deferred it to "a later sibling" with no card — two predicates are now computed and neither is acted on

Telemetry about the planner, filed while planning the situation/exit-condition story under epic MOTIR-3937. The correction is already applied — the plan carries the card. This records why it was needed.

The defect

MOTIR-3975 (done) built the walk's COMPLETENESS report and wrote this in its own scope boundary:

OUT: who READS the result. Nothing downstream is required to act on incompleteness in this card — the handler that surfaces it is a later sibling, and the story's gate asserts it.

That sibling was never filed. The deferral names a story-relative position ("a later sibling"), not a key — the exact shape plan-rules/core.md's a deferral is a card rule calls an orphan, and the one its second tell catches: the deferral names a STORY rather than a card, and it is future-tense.

What it cost

Two months on, motir-ai computes two predicates about a finished pass and acts on neither:

predicatewherewhat happens with the answer
COMPLETENESS — did the walk author and lay everything it opened?walkCompleteness.ts · buildWalkReportreported on the result; nothing branches
VALIDITY — is the plan finishable?planningEngine.ts:459 · runClosingValidationa validated frame, emitted AFTER writer.close at :453

So a plan that is incomplete, invalid, or both reaches the review queue exactly like one that is neither, and a person is the first mechanism that acts on either answer.

The validity half is now carded, in the plan submitted with this bug. The completeness half is still open and is deliberately left so — that card's own boundary says which of the two it closes, rather than letting a reader infer both were.

Why the card's own diligence is what hid it

The boundary paragraph is correct, considered and well-written. It identifies the seam, explains why acting is out of scope, and even says where the acting belongs. That is what made it read as scheduled — the lesson cah0fn1nc80fpd19439exsstm states the general form: the prose reads as diligence, and every mechanical signal disagrees with the prose. Nothing was blocked, nothing was ready: false, and no advisory could fire, because a deferral to a position rather than a key has no MOTIR-<n> for a detector to key on.

Acceptance criteria

  • The completeness-acting card exists as a real work item — or the tree records, on walkCompleteness's owning story, an explicit decision that completeness is deliberately not gated, with the reason. Silence is not the third option.
  • The disposition is written where a reader of MOTIR-3975 will find it, not only here.

Context refs

  • MOTIR-3975 — the card whose boundary carries the unfiled deferral.
  • motir-ai src/llm/walkCompleteness.ts · src/jobs/planningEngine.ts (:453 writer.close, :459 runClosingValidation) — read on origin/main @ b9f0007.
  • plan-rules/core.mda deferral is a card, second tell (names a story, future tense).