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
- 142
- planned
- 1,379
- shipped
Submitted0
Planned123
MOTIR-4300(motir-core) Story vitest gate — the coverage floor over the story's changed surface, the three boundary guards proven to bite by mutation, and the whole solution type-checked at the default heap0 upvotes — vote on app.motir.co
MOTIR-4299(motir-core) Extract `lib/orchestrator` as `@motir/orchestrator` — the port, both adapters and the fake move to `packages/orchestrator`; its three outward imports become injected ports; own tsconfig in the solution, own CI lane, and the guard that no package imports the app0 upvotes — vote on app.motir.co
MOTIR-4297(motir-core) The ADR — motir-core as an app shell over workspace packages: the package contract, the import-direction rule, the measured coupling of every `lib/*` module, and the extraction order it implies0 upvotes — vote on app.motir.co
MOTIR-4296(motir-core) The Prisma type boundary — the generated client's payload and input generics are named only under `lib/repositories/**`, asserted by a source-scan guard, and the sites outside it move onto repository-exported row types0 upvotes — vote on app.motir.co
MOTIR-4295(motir-core) Profile the checker and pay down its top cost sites — explicit row types on repository reads, so a caller instantiates no Prisma payload; the file at the top of the trace stops being there0 upvotes — vote on app.motir.co
MOTIR-4294(motir-core) The heap-headroom tripwire — the `TypeScript` job reads every project's `Memory used` and fails at 80% of the heap it runs under, so the next cliff is seen coming0 upvotes — vote on app.motir.co
MOTIR-4293(motir-core) Split the one `tsc` program into project references — an app project `next build` reads, a tests project and a scripts project under one solution file, and the heap bump leaves the `typecheck` script0 upvotes — vote on app.motir.co
MOTIR-4292(motir-core) One type-check program becomes many — project references, a contained Prisma type boundary, and the first bounded context extracted as a workspace package0 upvotes — vote on app.motir.co
MOTIR-4278The settings pane never shows the DNS record that POINTS a custom domain at us — only the ownership TXT0 upvotes — vote on app.motir.co
MOTIR-4276Planning bug: MOTIR-4201 was sealed at 13 points carrying its own split instruction — three signals agreed at authoring time and the gate fired a day later, at dispatch0 upvotes — vote on app.motir.co
MOTIR-4275Planning bug: an INTERIM card pair outlived the window it was written for — nothing walks back from the superseder's merge to the cards it makes pointless0 upvotes — vote on app.motir.co
MOTIR-4273Planning bug: a criterion named a consumer that was PRESENT but UNREACHABLE — `situations/replan.ts`'s partition had been dead since MOTIR-39780 upvotes — vote on app.motir.co
MOTIR-4272Planning bug: a story's four children each excluded the client half, and the exclusion pointed at a card that did not exist0 upvotes — vote on app.motir.co
MOTIR-4271Planning bug: MOTIR-4165 counted the catalogue at 39 by reading a number out of a comment, and generalised a four-tool sample to "one tool"0 upvotes — vote on app.motir.co
MOTIR-4268Planning bug: an advisory disposition that CLAIMS an edge is wired names a different card than the advisory does — MOTIR-4252 was held by 4238 while the advisory pointed at 4254's PR0 upvotes — vote on app.motir.co
MOTIR-4267Planning bug: a decision rule that A/Bs two configurations across a TIME GAP owes a workload control — MOTIR-3963's pre-committed rule fired REVERT on an 18% suite growth, not on a result0 upvotes — vote on app.motir.co
MOTIR-4265Planning bug: MOTIR-4242 asserted "motir-core has no public-host accessor" from a grep for the literal host — the accessor exists and deliberately never spells it0 upvotes — vote on app.motir.co
MOTIR-4262Planning bug: MOTIR-4258 asserted every action on the row survived elsewhere, and wrote an acceptance criterion requiring a door it never checked existed — the ⋯'s Expand / Re-plan had none0 upvotes — vote on app.motir.co
MOTIR-4259Planning bug: a row inventory over a prettier-wrapped HTML design asset was taken with a line-oriented grep, so MOTIR-4248's evidence table under-read one asset by two rows0 upvotes — vote on app.motir.co
In progress19
MOTIR-4229(motir-core) The Public address pane, part 2 — the custom-domain list: add with DNS instructions, verify, every certificate state, make primary, remove, the tier upsell; en + zh0 upvotes — vote on app.motir.co
MOTIR-4228(motir-core) The custom-domain entitlement — the `custom_domains` kind, `maxCustomDomains` per tier, and the org-locked cap assert in entitlementsService0 upvotes — vote on app.motir.co
MOTIR-4225E2E (Playwright, motir-core) + acceptance video — claim a subdomain, add a custom domain, watch its certificate states, make it primary, rename and keep the old address redirecting0 upvotes — vote on app.motir.co
MOTIR-4223Vitest gate (motir-core) — the address store and services, the certificates adapter and job, the host-resolution contract, and the widened CORS / return-target0 upvotes — vote on app.motir.co
MOTIR-4221(motir-core) The Public address pane, part 1 — the rail entry and its doors, the pane shell, and the workspace subdomain card: claim, rename with the retained-alias warning, copy and open; en + zh0 upvotes — vote on app.motir.co
MOTIR-4219(motir-core) The certificate status job — refresh pending customer domains from the platform, surface issued / expired / revoked / failed, and record the last check0 upvotes — vote on app.motir.co
MOTIR-4218(motir-core) The public surface honours registered addresses — CORS and the hand-off return target accept every registered public address, not only motir.co0 upvotes — vote on app.motir.co
MOTIR-4217(motir-core) The public contract resolves a host — GET /api/public/hosts/{host}, and the subject DTO carries the project's addresses and its primary0 upvotes — vote on app.motir.co
MOTIR-4216(motir-core) The customer-domain lifecycle — add, verify, issue, make primary, remove — its tier gate, and the project-settings routes0 upvotes — vote on app.motir.co
MOTIR-4215(motir-core) Claim and rename the workspace subdomain — the service, its reserved-name and retained-alias rules, and the project-settings routes0 upvotes — vote on app.motir.co
MOTIR-4210(motir-core) The Fly certificates adapter — request, check and remove a hostname's certificate on the motir-marketing app, behind a port beside flyMachines0 upvotes — vote on app.motir.co
MOTIR-4209(motir-core) The public-address store — a SET of addresses per public project with exactly one primary, retained aliases and the reserved-name set: migration + repository0 upvotes — vote on app.motir.co
MOTIR-4206Decision (ADR) — public tenant addresses: the base domain, what a subdomain names, the customer-domain lifecycle on Fly certificates, the one-primary canonical, the never-released rename, and the tier gate0 upvotes — vote on app.motir.co
MOTIR-4050Two green PRs can merge into a red `main` — nothing requires a branch to be up to date, so a stale check decides the merge0 upvotes — vote on app.motir.co
MOTIR-3937The planner has no OPERATIONS — every session is a cell, and the conversation decides when to start0 upvotes — vote on app.motir.co
MOTIR-3878Customer-owned addresses for a public project — per-tenant subdomains + custom domains0 upvotes — vote on app.motir.co
MOTIR-3875Motir's public web presence — one host per audience, and an open-core line through motir-core (motir.co · app.motir.co)0 upvotes — vote on app.motir.co
Done1365
MOTIR-3570(motir-core) Every deploy ends RED on a deploy that SUCCEEDED — `FLY_EXPECTED_MACHINE_COUNT` still says 2, and MOTIR-3425's worker group made the pool 40 upvotes — vote on app.motir.co
MOTIR-3569(motir-core) 11 of ci.yml's 14 jobs declare NO `timeout-minutes`, so a hung job burns SIX HOURS and is indistinguishable from a slow one — the same gap MOTIR-2970 closed at one call site0 upvotes — vote on app.motir.co
MOTIR-3566Planning bug: MOTIR-3560 was sealed at 5 pts / 60 min carrying its OWN six enumerated deliverables — the sizing advisory is blind to a card whose numbers are present and wrong0 upvotes — vote on app.motir.co
MOTIR-3564(motir-core) The E2E seam for the index WRITER path — the run-credential mint and the tarball redirect, on the app server AND the worker0 upvotes — vote on app.motir.co
MOTIR-3562Planning bug: MOTIR-3557's AC 3 forbade a behaviour a shipped test deliberately guarantees — a criterion phrased as a NEGATIVE about rendered output carries an ungrepped code claim0 upvotes — vote on app.motir.co
MOTIR-3561Planning bug: MOTIR-3487 claims an E2E lane 'already has every piece' from a sibling spec's SUBJECT — the spec seeds the ledger and its own header says the writer path has no seam0 upvotes — vote on app.motir.co
MOTIR-355716 Roadmap: a level draws edges whose BLOCKED end is not on it — "Not in an epic" redraws the whole EPIC chain as 12 anonymous "blocked elsewhere" ghosts, and the root draws a grouped task as one0 upvotes — vote on app.motir.co
MOTIR-3556(motir-ai) The mirror — `SHARED_PLANNING_RULES` teaches the shipped planner that a hit reinforces (gate 19's second home)0 upvotes — vote on app.motir.co
MOTIR-3555(motir-meta) The sweep's HIT reinforces — `run.md` step 5 and `_shared.md`'s lesson-store row stop being read-only0 upvotes — vote on app.motir.co
MOTIR-3554(motir-core) Integration vitest through the real MCP transport — a global row reinforced across the boundary, and a retired one that stays retired0 upvotes — vote on app.motir.co
MOTIR-3553(motir-core) `reinforce_lesson` — the MCP door a hand-run sweep calls, on the `id` `search_lessons` already hands back0 upvotes — vote on app.motir.co
MOTIR-3552(motir-ai) The generator carries the OCCURRENCE explicitly — a widening bumps the clock, a wording correction never does0 upvotes — vote on app.motir.co
MOTIR-3551(motir-ai) `POST /v1/lessons/:id/reinforce` — the named act, over BOTH scopes, not the tenant-only resolver the retire endpoints use0 upvotes — vote on app.motir.co
MOTIR-3550(motir-ai) The OCCURRENCE ledger — a hit becomes a row, and that row is what makes the clock bump exactly once0 upvotes — vote on app.motir.co
MOTIR-3549Planning bug: MOTIR-3547 was sealed UN-SIZED at ~5h across three repos, and asserted a code fact read from ONE of a tool's TWO return channels0 upvotes — vote on app.motir.co
MOTIR-3548Planning bug: the COLLAPSED supervisors run on Inngest between MOTIR-3417's merge and MOTIR-3489's flip, holding one invocation for the container's whole life0 upvotes — vote on app.motir.co
MOTIR-3547A lesson matched BY HAND is never reinforced — the runbook sweep's hit and every widening leave `lastOccurredAt` untouched, so only the two automatic paths can reset the retirement clock0 upvotes — vote on app.motir.co
MOTIR-3544Planning bug: a mechanism-withdrawal amendment swept four of five dependents — the one it missed was the one whose SCOPE had not moved0 upvotes — vote on app.motir.co
MOTIR-352215 3D / Immersive leaves 199 of 280 interactive controls flat — the physical-key rule matches `rounded-(--radius-btn)` only, so Plan with AI, Re-plan, the 3-dots menu and the roadmap search have no depth (motir-core)0 upvotes — vote on app.motir.co