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 · research) CAPTURE real merge-queue deliveries — the `dequeued` reason spelling a real payload carries, and which delivery ties a failed queue check (name + link) back to the ejected pull requestApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core · design) The Development block's RED state on an Implemented card — a copyable `motir fix` command, a fix in progress, and a fix that gave upApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- 8.101 (motir-core) "Show what changed" dims the unchanged CARDS but not their EDGES — `PlanningCanvas` dims a connector only for a live selection, so every arrow between two faded cards stays full-strength
- (motir-core) APPROVING THROUGH THE REST DECIDE ROUTE MERGES NOTHING — the card reaches `approved` with every pull request unmerged, and only the item page's press mergesApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) A push withdraws the approve-to-merge gate and the NEXT GREEN does not raise a new one — the card is stuck unapprovable, and its Development block shows the withdrawn message instead of its pull requests, How to test and designApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- `subject` becomes legal on EVERY kind — retire the `subject_on_container` refusal at both doors, admit `onboarding`, and make `(lay, epic, subject)` a cellSelf-improvement — auto-reported quality bugs
- (motir-core) An acceptance receipt's `commitSha` is stored unvalidated, untrimmed and un-lowercased — any string becomes the commit a reviewer is told the run recorded at, and the same commit in two spellings supersedes instead of no-op'ing
- (motir-core · test) The SUITE SWEEP — the 24 test files that assert two gates, the registry and one-language guards, and the acceptance E2E that counts the merge rowApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) RETIRE the `pull_request_merge` KIND — the registry moves it to `UNREGISTERED_GATE_KINDS`, its handler, subject summary and overlay address go, and the `work_item:merge_pull_request` permission retires (en + zh)Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) The To-approve row and the Development frame LOSE the second gate — the merge row and its *Not built yet* cell go, RETRY presses on the card's own gate, and the overlay's `kind_not_built` arm retires (en + zh)Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) The BACKFILL that SUPERSEDES every awaiting `pull_request_merge` gate — the migration, its dry-run count, and the enum value kept because rows reference itApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) APPROVE MERGES THE WHOLE SET — the merge entry point and RETRY re-key onto (the card's own gate, the pull request), and `listApprovalMembers` stops reading a per-pull-request merge gateApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) STOP RAISING the per-pull-request merge gate — `raiseMergeGates` and its three withdraw paths retire, `settleGreenVerdict` keeps its `auto` arm, and a green delivery set leaves exactly ONE awaiting gateApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) AMEND `approval-gates.md` — ONE approve-to-merge gate per card: strike the second gate, supersede §4's per-PR merge contract, and record each pull request's merge OUTCOME on the pull requestApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) A card in a manual project gets TWO approve-to-merge gates — a per-PR `pull_request_merge` beside the per-card `pull_request_approval` — so To approve lists one PR twice; the merge gate is ONE per card, and approving it merges every linked PRApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- `subjects` is a WRITE-ONLY lesson axis — `add_lesson` takes it, `search_lessons` cannot narrow on it
- (motir-core) Playwright acceptance E2E + VIDEO — click a pull-request gate's To-approve row, read both PRs and How to test at full size, copy a command, and close back to the tab (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 coverage floor over the pull-request arm, the read → host → Development-block seam, and kind totality across the read and the hostApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) The overlay host renders the APPROVE-TO-MERGE gate — the Development block as its port, and its To-approve row opens itApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) The overlay's read returns the APPROVE-TO-MERGE gate's subject — the item's pull requests and its How to testApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join