(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
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.htmlpanel 4 — "An unknown slug — 404, inside the chrome" — drawing a body of404 — 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 athe not-found bodyrow (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 noapp/legal/not-found.tsxis 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
.nfCSS indesign/public-projects/public-projects.mock.htmlis either used or removed — state which and why. - The
.pngis re-exported if the mock changed, andmotir-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 inmotir-marketing.- MOTIR-4245 — the site-wide not-found room, drawn in the OTHER repository (
motir-core, areadesign/public-site/). A reference this card cites; nothing inmotir-coreis 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-coreasset — it already records the supersession from its own side; this card is the other half, in the other repository.
Advisory dispositions
likely-repo-straddleon criterion 1 — ACTED ON. The criterion cited amotir-corepath while this card is pinnedmotir-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 inmotir-marketing.likely-missing-edgeon MOTIR-4245 — ACTED ON.blocked_bywired, alongside the one to MOTIR-4193. Both are siblings under the same epic, so no cross-container edge is created.valid: falseon 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.