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
- 5
- verzoeken
- 4
- upvotes
- 404
- gepland
- 4.190
- uitgebracht
- (motir-core) Register `pull_request_approval` — the handler over the delivery SET, Approve writes `approved`, the subject summary loader, and the registry's hole closesApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) AMEND `approval-gates.md` for the approve-and-merge gate — its subject is the run target's delivery SET, it is raised on the all-green verdict, a moved head supersedes it, and §8 row 4a's "one transaction" is reconciled with §4 and §6aApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- APPROVE and MERGE the pull requests IN Motir — ONE gate over the work item's pull requests together, its port the PRs and their HOW TO TEST, and the card reaches `approved`Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) Playwright E2E — approve a design, watch a republish refused with the way forward, reopen the card from Done by hand, and publish the new versionApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) Story vitest gate — the coverage floor over the refusal, the approve → done → refused → reopen → accepted seam on real Postgres, and the publish-versus-approve raceApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) The CLOSED refusal — `designEvidenceService` refuses a publish, an upload-grant mint and a withdrawal on a done design card with `DESIGN_CARD_CLOSED`, on the MCP tools and both HTTP routes, read under the publish path's own lock orderApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) Decision — `approval-gates.md` §6c and `design-result.md`: a design card in the done status is CLOSED — no publish, no upload grant, no withdrawal — and reopening it by hand replaces *pin, do not freeze*Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- A DONE DESIGN IS FINAL — a design card in the done status accepts no new version: publish, upload and withdraw are refused with the way forward, and reopening the card by hand is the only door backApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) THE `approval:view_any` PERMISSION — named in the catalog as `planned`, held by the role sets that should hold it, grantable to a custom role, with its inventory row and its role-grid copyApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) Playwright acceptance E2E + VIDEO — a reader with `approval:view_any` and a reader without it open the SAME room and see different rooms, and a decided record is still there afterwards (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 two views proved by LEAKAGE, a CUSTOM ROLE proving the view follows `approval:view_any` not a role name, the nav map's totality, and the coverage floorApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) THE ROOM AND ITS DOOR — `/approvals`, the two sections in one list, and the nav row registered in the ONE map both the rail and the palette readApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) THE RECORDS READ — one service method whose scope follows the `approval:view_any` PERMISSION, the routing predicate REUSED, and the `decided_by_id` index the own-records half has never hadApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- THE APPROVALS ROOM — a first-class nav destination holding every approval record, pending first then decided; `approval:view_any` shows the project's, everyone sees their ownApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) `/items` "New folder" silently does nothing when clicked before the streamed tree registers its handler — and `bug-destination.spec.ts:109` clicks it in exactly that window, ejecting unrelated PRs from the merge queue
- (motir-core) The merge-mode card still says "Motir does not merge pull requests yet" once MOTIR-4882 merges — and MOTIR-4880's accepted receipt pins the sentence
- (motir-core) A DECIDED approval whose subject bytes are gone still shows state X's "You cannot approve what cannot be shown." under its own record
- (motir-core) ENTERING REVIEW ASKS AGAIN — a move into In Review raises a fresh `awaiting` gate over the item's current subject when none is awaiting or approved, through a registry seam every registered kind suppliesApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) Playwright acceptance E2E + VIDEO — the status control says it can't be moved directly and its Review & approve button opens the overlay, a board drag refuses on the card, approve, reopen by hand, and a reader who cannot decide gets no button (en + zh)Approval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join
- (motir-core) Story VITEST gate — the coverage floor over the guard, the withdraw and the re-ask, one refusal per door (service · board move · status action · MCP · v1), every non-owned move still legal, reopen after approval, and a fixture kind driving the guardApproval gates — every decision that holds work up happens IN Motir, behind ONE approve language new kinds join