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
- 588
- planned
- 5,171
- shipped
- (motir-core) The form's DEFAULTS — a read that fills a person's How to test from the current recordApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) ADR — amend `approval-gates.md` §9 again: a PERSON writes How to test too — the SAME fields an agent publishes (rich-text body, preview path, repository sections), through the same writerApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- A person WRITES and EDITS How to test from the Development block — the body and the preview path, through the same door that links a pull requestApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) Design delta — the Monitoring room learns SYNC: two per-connection direction switches, and a failed resolve-back that names itself on the rowProduction 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) Playwright acceptance E2E + VIDEO — hold the decision open, change it underneath twice (a republish, then the acceptance criteria), be refused both times, take the current version and approve (en + zh)Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) The story's VITEST GATE — the stamp's coverage floor, the read → decide round trip under a real concurrent edit, and the guards a percentage cannot see (the union stays TOTAL, both refusals reachable)Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) THE SURFACES HAND THE STAMP BACK — the overlay and the item-page band send what they rendered, draw the STALE refusal in place, and bring the current version (en + zh)Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) THE STAMP — computed over the subject version and the card's acceptance criteria, returned on every gate read, REQUIRED on decide, and compared under the lockApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- A STALE RESULT CANNOT BE APPROVED — what you are deciding is STAMPED, and a decision pressed against a stamp that has moved is refused and says what changedApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) A DRAFT pull request going green raises a "To approve" merge gate — `mergeCandidateHead` never reads `draft`, so a person is asked to approve-and-merge a PR its author says is not ready (and GitHub cannot merge)
- (motir-core) MOTIR-4833's fix reached ONE of two identical translators — `projectRepoSetService`'s still reads the absent `meta.target`, so a lost repo-claim race 500s or says "that name is taken"
- (motir-core) A concurrent GitHub review upsert recovers from P2002 INSIDE the aborted transaction — `upsertByGithubReviewId` throws 25P02 instead of returning the winner's row
- (motir-core) The acceptance lane drops ONE connection mid-run — a spec's liveness control got ECONNRESET against a server that was healthy 5 tests before and 9 tests after
- (motir-core · design) WHAT YOU WERE LOOKING AT HAS CHANGED — the STALE refusal drawn in place: what moved, the control that brings the current version, and how it differs from a withdrawn questionApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) The story's E2E — a fake Sentry issue becomes ONE bug in the Bugs folder, a second poll files nothing, the minimum level filters, and a failed poll shows on the row — recorded as the acceptance videoProduction 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 story's VITEST gate — the coverage floor over the ingestion surface, the tick → poll → reconcile → destination seam on real Postgres, and the guards coverage cannot seeProduction 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 Monitoring room shows INGESTION — the minimum-level control on each row, the last poll's outcome and its failure line, and both localesProduction 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 SCHEDULED reconciler — a half-hourly tick on the schedule cluster that fans out one isolated run per bound connection, and a terminal failure written onto that connection before it dead-lettersProduction 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) POLL ONE CONNECTION — a fresh credential, every page since the watermark, the minimum-level filter, the watermark advance, `degraded` on a refused credential, and the outcome recorded on the connectionProduction 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 per-connection MINIMUM LEVEL write and the room's ingestion state — `setMinimumLevel` (lowering rewinds the watermark), its PATCH route under `integration:manage`, and the view DTO's poll fieldsProduction errors become planned work — a monitor connects, its issues arrive as bugs in a container the project chooses, and fixing one closes it back