moooon
Motir
Vibe the 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
- 6
- requests
- 4
- upvotes
- 505
- planned
- 5,043
- shipped
- (motir-core) The ENRICHMENT trigger and its dispatch — a job detached from the filing commit assembles the issue facts, the event's frames and the project's code context, and submits ONE `author_bug`; unconfigured or ineligible dispatches nothing and throws nothingProduction errors become planned work — a monitor connects, its issues arrive as bugs in a container the project chooses, and fixing one closes it back
- (motir-ai) The GROUNDED read — `author_bug` resolves frames and culprit to real files through the project's code graph within a bounded tool budget, and an unindexed project DEGRADES to both axes from the error alone, saying soProduction errors become planned work — a monitor connects, its issues arrive as bugs in a container the project chooses, and fixing one closes it back
- (motir-ai) The `author_bug` JOB and its TYPED ANSWER — the envelope contract, the hypothesis-discipline prompt, and a structured result carrying both bodies, the sizing and the refs, with no plan deltaProduction errors become planned work — a monitor connects, its issues arrive as bugs in a container the project chooses, and fixing one closes it back
- (motir-core) The provider seam reads the latest event's STACK FRAMES — `getIssueContext` returns the exception frames beside environment and release, bounded and in-app first, and the fake honours itProduction errors become planned work — a monitor connects, its issues arrive as bugs in a container the project chooses, and fixing one closes it back
- A filed bug arrives PLANNED, not as a stub — both content axes, a sizing, and context refs resolved against the code indexProduction errors become planned work — a monitor connects, its issues arrive as bugs in a container the project chooses, and fixing one closes it back
- (motir-core) The RE-ASKED merge gate's record band is missing its first line — *Approved earlier by {name} · {date} · {count} commits — not merged* — because no read on the item page carries the previous DECIDED gateApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) The acceptance-lane guard no longer reads the product (MOTIR-5872), but its credential stack is still wired — a production PAT in the main Vitest job's env, a binding declaration, and ~1,000 lines of tests for a read nothing makes
- (motir-core) One of a card's pull requests merged ON GITHUB and the merge question is NEVER asked again about the ones still open — a merged member blocks the re-ask for ever, so the rest can only be merged on GitHubApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (manual) RUN the un-landed-card convergence on PRODUCTION after the re-ask story deploys — dry run, read the four counts, apply, re-run dry, and record all three with one card per population read backApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core · design) STATE G KEEPS THE RECORD — a withdrawn merge gate draws its PR rows and How to test beside the withdrawn sentence, the sentence follows supersededCause, and a merge made on GitHub with no Motir decision is drawn (en + zh)Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) An APPROVED acceptance receipt freezes the STORY, not just the recording — a card that comes back to in-flight can never record again, and the lane guard then evicts a spec whose feature is still live. The DESIGN gate already does this correctly
- (motir-core) A Resend DAILY QUOTA is retried as a transient blip, and notification mail shares that quota with password-reset mail — a watcher burst dead-lettered 277 sends and could have starved auth mail
- (motir-core · design) THE DECISION-WAITING MARKER — yours vs someone else's on the board card, the list/tree status column and the item-page header, where it takes you, and the Awaiting-acceptance pill it replaces (en + zh)Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) The DLQ standing-depth FILER — one bug per function whose dead letters have stood 7 days, re-armed only when that function's depth returns to zeroProduction errors become planned work — a monitor connects, its issues arrive as bugs in a container the project chooses, and fixing one closes it back
- (motir-meta) MIRROR.md's four COUNT-THE-MERGES rows name a twin that moved — `phase-lay (CONTAINER_RUNNABLE_ONLY_OVER_LEAVES)` where the map now pairs `kind-epic-lay (COUNT_THE_MERGES_A_CONTAINER_IMPLIES)`, and `--check` cannot see a stale reason
- (motir-meta) THE TWO-HOME PROBE — MOTIR-4915's rule found in BOTH homes on origin/main, MIRROR.map.py --check green, and every deliberate difference carrying its row and its grepApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) CONFIRM on the LIVE tenant that the `approved` backfill landed — the status, its three edges and its board column read back from the deployed project, after the story mergesApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-ai) THE SAME RULE in SHARED_PLANNING_RULES — one segment on kind-epic-lay, never on phase-author, in work-item vocabulary, with a named MOTIR-4915 allowanceApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-meta) THE RULE, in kind-container.md — a choice work item is laid at (lay, epic) INSTEAD of a story, the three situations split 2 + 1, MANIFEST regeneratedApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- The planner does NOT delegate architecture — a CHOICE work item is laid at (lay, epic) INSTEAD of a story, only for work outside the current ask, and the level stops at itApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join