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-3931The `/design` asset draws muted captions on `--el-surface-soft` — 4.34:1, under AA in the default palette, and its own AA sweep never measured the pair0 upvotes — vote on app.motir.co
MOTIR-3928(motir-core) Every E2E leg DISCARDS the shared `.next` artifact and rebuilds the app — `webServer.command` runs `next build` unconditionally, 110 s of it re-running TypeScript the `TypeScript` job already ran0 upvotes — vote on app.motir.co
MOTIR-392717 Roadmap canvas draws ARCHIVED cards as red "blocked elsewhere" ghosts — the level read excludes them as nodes, then its edge read puts them straight back, by name0 upvotes — vote on app.motir.co
MOTIR-3921The story’s gate — what each PHASE’s cell can discharge, end to end from a real pass0 upvotes — vote on app.motir.co
MOTIR-3920Re-audit `phase-skeleton` and `phase-deepen` on the act test — the design gate moves to skeleton0 upvotes — vote on app.motir.co
MOTIR-3919Re-tag `core` on the act test — six segments to `phase-skeleton`, two divided, no new packs0 upvotes — vote on app.motir.co
MOTIR-3918`buildGenerationSystemPrompt` takes a PHASE — the skeleton framing stops reaching a deepen session0 upvotes — vote on app.motir.co
MOTIR-3917Decision: what decides a rule’s PHASE? Settle the ACT test before any rule text moves0 upvotes — vote on app.motir.co
MOTIR-3916The PHASE axis, applied — the framing takes a phase, and `core` splits on what a session can DISCHARGE0 upvotes — vote on app.motir.co
MOTIR-3915(motir-core) `roadmap-flow.spec.ts`'s seed races the status-derivation job — the SECOND spec in this class, and `retries: 1` made the run green0 upvotes — vote on app.motir.co
MOTIR-3913(motir-core) With Vitest balanced, E2E becomes CI's ceiling at ~15.5 min — five bulk legs carry 1705 s of test work behind a 178 s per-leg boot nobody has costed0 upvotes — vote on app.motir.co
MOTIR-3912(motir-core) 19 of the 30 most expensive test files landed on ONE Vitest leg — `--shard` slices the alphabet, so the `tests/integration/**` cluster travels together0 upvotes — vote on app.motir.co
MOTIR-3909motir-core reads its legal documents from a CONFIGURED MANIFEST — the links, the re-consent gate over it, the subprocessor split, and the hosted provisioning0 upvotes — vote on app.motir.co
MOTIR-3908Public projects are a CLOUD capability — with MOTIR_CLOUD false the feature is ABSENT, and a self-hosted Motir is single-tenant0 upvotes — vote on app.motir.co
MOTIR-3905Global lessons added since the day-one seed batch do not RETRIEVE — two rows queried near-verbatim are absent from the ranked set, and every global row `search_lessons` returns carries a `cmr11*` id0 upvotes — vote on app.motir.co
MOTIR-3902(motir-core) The Vitest lane is CI's critical path at 24.8 min — 1.6x the next-longest job — and the runners it would need to halve that are sitting idle (queue time is zero)0 upvotes — vote on app.motir.co
MOTIR-3901The story's coverage + integration gate — the assembled selector, end to end from a generation pass0 upvotes — vote on app.motir.co
MOTIR-3900Re-cut 3 of 3 — the TYPE packs: what each of the 14 types receives, and what it must not0 upvotes — vote on app.motir.co
MOTIR-3899Re-cut 2 of 3 — the KIND packs: `epic`, `story` and `bug` at deepen0 upvotes — vote on app.motir.co