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
- 533
- planned
- 5,569
- shipped
- (motir-core) The E2E job worker sends email through the CONSOLE provider, so no engine-routed send ever reaches the outbox — `jobs-postgres-engine.spec.ts` is red on `main`
- (motir-core) Story E2E — one transition fans out to all four fast-lane consumers on the engine, and a repeated invite emails onceOwn the job substrate — a Postgres-backed queue replaces Inngest, and the serverless-shaped stepping goes with it
- (motir-core) Story gate — vitest coverage floor, the emit-to-run seams, and the totality guards a percentage cannot seeOwn the job substrate — a Postgres-backed queue replaces Inngest, and the serverless-shaped stepping goes with it
- (motir-core) `docs/jobs.md` — the emit seam, engine-side idempotency, and what "cut over" means to an operatorOwn the job substrate — a Postgres-backed queue replaces Inngest, and the serverless-shaped stepping goes with it
- (motir-core) Event-level IDEMPOTENCY on the engine — carry `defineJob`'s key through and dedupe on it, so `email.send` still sends onceOwn the job substrate — a Postgres-backed queue replaces Inngest, and the serverless-shaped stepping goes with it
- (motir-core) Make the subscriber set reachable from the emit path, with a guard that fails when it is notOwn the job substrate — a Postgres-backed queue replaces Inngest, and the serverless-shaped stepping goes with it
- (motir-core) The engine's fast-lane latency probe — event to run p95, read from the ledger instead of a vendor APIOwn the job substrate — a Postgres-backed queue replaces Inngest, and the serverless-shaped stepping goes with it
- (motir-core) Route every emitter through `sendEvent`, and make the ESLint boundary enforce itOwn the job substrate — a Postgres-backed queue replaces Inngest, and the serverless-shaped stepping goes with it
- (motir-core) Decide how the EMIT PATH learns the subscriber set — the engine registry is empty on a web requestOwn the job substrate — a Postgres-backed queue replaces Inngest, and the serverless-shaped stepping goes with it
- Cut the EVENT-triggered jobs over — fan-out, the fast lane's latency budget, and the notification / automation / email pathsOwn the job substrate — a Postgres-backed queue replaces Inngest, and the serverless-shaped stepping goes with it
- 15 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)
- Planning bug: MOTIR-3440 NAMED `PageSkeleton` as unowned and created no card, so MOTIR-3443 shipped `ready` with an acceptance criterion nothing could satisfy
- (motir-core) Design — the DELIVERY state on the operator jobs dashboard (`/settings/workspace/jobs` has no design asset at all)
- (motir-core) The design NOTE in the Design result panel has no height bound and no container — a real `design-notes.md` section renders thousands of px tall, and its `markdown-body` class styles nothing
- Planning bug: MOTIR-3324 ships a consumer whose motir-core PRODUCER half owns no card — a conditional in a card body defers a decision the run cannot act on
- Planning bug: MOTIR-3224 defers the cross-machine wake to MOTIR-2783, which was already `done` when the card was written — so the gap it names has no owner
- Planning bug: MOTIR-3414 cannot close — its `manual` post-deploy child needs the merge the story needs the child for, and the E2E is edged to it while forbidding the worker it needs
- Planning bug: MOTIR-3414/3422 assert "84 step.run call sites across 37 files, incl. services outside lib/jobs/" — measured 58 across 26, ALL inside lib/jobs/
- Planning bug: a story planned building a column that already shipped, and a `manual` card the pipeline can do — the lesson forbidding the second was IN the store, where the runbook planner cannot read it
- Planning bug: `notes.html` entries #68 and #203 still PRESCRIBE the dead branch-prefix CI-skip mechanism — the MOTIR-819 retrieval hands it to future runs as advice