Skip to content

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
145
planned
1,361
shipped

Motir · Roadmap

MOTIR-4247To Do

(motir-marketing) `design/legal/` draws a `/legal`-scoped 404 room that nothing renders and that the site-wide not-found supersedes — a second 404 design waiting to be built

Opened by Zhu Yue ·

Found while building MOTIR-4245 (the motir.co not-found room), on motir-marketing origin/main 61b9a13, 2026-09-02. Out of that card's scope — 4245 ships in motir-core and its diff is design/public-site/**; this is an asset in another repository.

The defect

motir-marketing/design/legal/ specifies a /legal-scoped 404 room:

  • design/legal/legal.mock.html panel 4"An unknown slug — 404, inside the chrome" — drawing a body of 404 — document not found / "There is no legal document at this address." / ← All legal documents.
  • design/legal/design-notes.md § The 404 (line 54) specifies it in prose, its Surfaces / panels list names it as panel 4 (line 36), its composition table has a the not-found body row (line 108), and its GIVES list hands "the 404" to MOTIR-4009 (line 167).

Nothing renders it, and nothing ever did. MOTIR-4009 shipped /legal without it.

Reproduction / evidence — measured, not read

$ git ls-tree -r --name-only origin/main | grep -i "not-found"
(no output)

There is no not-found.tsx anywhere in motir-marketing, so notFound() from app/legal/[slug]/page.tsx falls through to Next's stock screen — confirmed by rendering it:

$ # next dev on origin/main 61b9a13, Playwright chromium 1440x900
$ GET /no-such-page
  status: 404
  document.querySelectorAll('main').length === 0

So panel 4's room is a design of record for a surface that does not exist.

Why it will not simply age out — it becomes WRONG rather than merely unbuilt

MOTIR-4193 adds motir-marketing/app/not-found.tsx. Next resolves notFound() to the nearest not-found.tsx above the route, and there is no app/legal/not-found.tsx — so once 4193 lands, an unknown legal slug renders the site-wide room drawn by MOTIR-4245 (motir-core/design/public-site/not-found.*), which serves all four notFound() route families with one room and two doors.

Panel 4 then describes a room that (a) still does not exist and (b) conflicts with the one that does. The concrete hazard is that a later /legal card reads its own area's asset — the correct thing to do — finds a specified 404 room, and builds app/legal/not-found.tsx to match it. motir.co would then have two different 404 rooms with two different registers and two different ways out, and the second would have been added by an agent following the design-reference rule correctly.

Population — measured, so the fix is not scoped from one sighting

$ git grep -n -iE '404|not.found' origin/main -- 'design/**'

design/legal/ is the only asset that DRAWS a 404 room. design/public-projects/public-projects.mock.html:521 carries the same .nf CSS block (copied from legal.mock.html) but never uses it — dead CSS, not a second drawn room. design/marketing/design-notes.md:478 mentions 404 only as "a crawler would follow into a 404", about dead nav labels.

So: one asset to amend, plus optionally the dead CSS.

Acceptance criteria

  • design/legal/design-notes.md § The 404 states that an unknown legal slug is served by the site-wide not-found room that MOTIR-4245 draws, and that no app/legal/not-found.tsx is to be added — with the Next resolution rule as the reason. (The asset itself is named under Context refs; it is a reference this card READS, not a file it writes.)
  • The asset is NOT falsified into a record it never was: panel 4 stays in the mock as the point-in-time record of what MOTIR-4005 drew (a design asset is a record of the moment it was drawn), and gains a caption saying it is SUPERSEDED and by which card. Do not silently delete the panel.
  • The Surfaces / panels entry, the composition-table row and the GIVES line to MOTIR-4009 each carry the same supersession, so a reader arriving at any one of the four finds it.
  • The dead .nf CSS in design/public-projects/public-projects.mock.html is either used or removed — state which and why.
  • The .png is re-exported if the mock changed, and motir-marketing's own format/lint pass is green.

Context refs

  • design/legal/design-notes.md + design/legal/legal.mock.html — the asset to amend; this card's only deliverable, and it is entirely in motir-marketing.
  • MOTIR-4245 — the site-wide not-found room, drawn in the OTHER repository (motir-core, area design/public-site/). A reference this card cites; nothing in motir-core is edited here.
  • MOTIR-4193 — the card that builds the boundary which makes the supersession real.

Not in scope

  • Building any 404 room. That is MOTIR-4193's, once.
  • The motir-core asset — it already records the supersession from its own side; this card is the other half, in the other repository.

Advisory dispositions

  • likely-repo-straddle on criterion 1 — ACTED ON. The criterion cited a motir-core path while this card is pinned motir-marketing. The path was a REFERENCE, never a deliverable, but a criterion is the wrong place to say so: the citation now names the CARD and the path moved to Context refs. Every file this card writes is in motir-marketing.
  • likely-missing-edge on MOTIR-4245 — ACTED ON. blocked_by wired, alongside the one to MOTIR-4193. Both are siblings under the same epic, so no cross-container edge is created.
  • valid: false on the MOTIR-4193 blocker — CORRECT, not a defect to fix. The amendment describes what an unknown legal slug ACTUALLY renders, so writing it before the boundary exists would document a future rather than the product. The card is deliberately not startable yet.

Discussion

No comments yet.

Adding to this discussion signs you in on app.motir.co and brings you back to this request.

Add a comment