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-4028Done

`landing.mock.html` has drifted from the shipped landing beyond the eyebrow — a nav entry it never gained, a footer whose whole column set is different, and eleven strings the site has since re-written

Opened by Zhu Yue ·

Found while running MOTIR-4000, by the acceptance criterion that card carries: "the PR body says whether any OTHER element of the shipped landing is missing from the mock, measured rather than asserted." It was measured, and there are twenty more.

The measurement

A two-directional STRICT text diff of the SHIPPED landing against the mock's desktop board, both loaded in headless chromium — the production build (pnpm build && PORT=3411 pnpm start, .env.local from .env.example) at 1280 CSS px, and design/marketing/landing.mock.html's section.panel:nth-of-type(1). Every element carrying its OWN text node is collected with its resolved size / weight / family / transform / tracking / ink, and the two sets are compared on EXACT normalised text.

Exact equality is load-bearing. A first pass matched loosely (a.includes(b) || b.includes(a)) and reported 4 divergences; the same data under exact equality reports 21. Docs matched Documentation, Explore projects matched Explore, All legal documents matched All legal. A matcher that matches MORE than the claim under-reports, and it under-reported by a factor of five.

shipped: 61 text-bearing elements @1280px
mock section.panel:nth-of-type(1): 68
── in the SHIPPED page, ABSENT from the mock board ── 20 (21 before MOTIR-4000 drew the eyebrow)

Taken on origin/main at c470db2 plus MOTIR-4000's branch. The harness is ~40 lines and is quoted in MOTIR-4000's pull-request body; it is not committed anywhere, which is MOTIR-4001's and MOTIR-4003's territory, not this card's.

What the twenty are, by KIND — and only the first two are what this card's title calls drift

1. An element the mock never gained (1). The top bar ships four nav destinations and the mock draws three:

nav
shippedMotir · Explore · Docs · Design · Sign in · Start free
mockMotir · Explore · Docs · Sign in · Start free

Design is /design, shipped by MOTIR-1043 on 2026-08-29 — a whole page, with its own design asset one file over (design-showcase.mock.html), whose entrance the landing asset does not draw. That is the same defect MOTIR-4000 repaired, on a different element, and it is the one that matters most: design-notes.md's ACCESS PATH section is the asset's own claim to say how every surface is reached.

2. The footer is a different footer (8). Not renamed columns — a different column SET and a different link count:

columnslinksbrand block
shippedPRODUCT · RESOURCES · LEGAL8two paragraphs
mockPRODUCT · EXPLORE · COMPANY12one line

The mock draws twelve footer links (Overview · AI planning · Boards & sprints · Documentation · Pricing · Public projects · Open source · Blog · About · Contact · Privacy · Terms · All legal) of which the site ships four; the site ships four the mock does not (Explore projects · Privacy Policy · Terms of Service · All legal documents). Six of the twenty entries are this.

3. Copy the site has re-written (11). The hero <h1> and its lede, the pillars headline and lede, all three pillar bodies, the open-core heading, its body and its link label, and the legal strip. Every one is an element the mock DOES draw, with different words in it — e.g. Bring an idea, or bring your project. against the shipped What do you want to build?, and One loop, three pieces against You've heard of vibe coding. This is a vibe project.

Acceptance criteria

  • The command above is re-run FIRST, on origin/main at the ref this card is worked at, and its output is quoted in the pull-request body — the count is a measurement with a date, not a constant. A count that differs from 20 is the finding, and is reported rather than absorbed: git log --diff-filter=A / git log -- <path> dates the difference, and a member that PREDATES this card is an amendment to this card on the record, not drift.
  • design/marketing/landing.mock.html draws the Design nav entry in every board whose top bar draws the nav — the 1280 desktop board, the 390 mobile board (where the nav collapses: state what survives into the bar and why) and the dark panel — with the shipped anchor's own size, weight, ink and href.
  • The mock's footer draws the shipped column set, the shipped link set and the shipped two-paragraph brand block, in every board that draws a footer.
  • Every string the mock renders that the shipped page also renders is the SHIPPED string, taken from messages/en.json / the rendered page, not re-written here. A mock is product COPY, not a sketch.
  • Re-run the diff after the edit: the SHIPPED-side list is empty, and the mock-side list contains only the doc-annotation chrome (panel numbers, captions, viewport … rules) and any element the mock deliberately draws that the page does not — each such element named in design-notes.md with its reason.
  • The element scan over landing.mock.html still reports 0 findings, light and dark, and the PR body quotes the before/after with the command. The scanned POPULATION will grow; say by how much.
  • design/marketing/landing.png is re-exported at 1320 CSS px / deviceScaleFactor: 2 / light. Re-render the UNMODIFIED mock first and quote its dimensions and hash, so the binary diff is attributable to this diff rather than to the renderer; then state the new geometry against 2640×14860. That baseline is three commands with any chromium and consumes nothing from another card.
  • design-notes.md's § Surfaces / panels and § ACCESS PATH describe the boards as they now stand, and the § Open findings row for this card is closed with the measured count.
  • pnpm lint, format:check, typecheck, build, test.

Boundary

The eyebrow is NOT hereMOTIR-4000 drew it, and it is the twenty-first entry this list no longer contains. No runtime code changes: every divergence is resolved by moving the ASSET to the page, never the page to the asset. The shipped copy, the shipped footer and the shipped nav are the specification here; if any of them is thought to be wrong, that is a copy or product card and not this one. Not the guard lane (MOTIR-4001) and not the committed render script (MOTIR-4003) — this card runs the same borrowed chromium every design card in this area has run, and says so.

Advisory dispositions

  • blocked_by MOTIR-4000, in_progress — WIRED, and mechanical rather than logical. Both cards edit landing.mock.html and both re-export landing.png; two branches off main that each rewrite one 2.4 MB binary conflict by construction and the second merge cannot be resolved by a text merge. Identical reasoning to MOTIR-4000's own edge to MOTIR-3985, and intra-container: both sit under MOTIR-656.
  • likely-missing-edgeMOTIR-4003, todo — REAL reference, NO edge owed, and the criterion is worded so it does not read as consuming one. The advisory fires at the higher severity because a criterion names that card by key. It names it as the PROVENANCE of the EXACT / DIMS / DRIFT vocabulary, not as substrate: the baseline re-render is three commands with any chromium, MOTIR-4000 performed exactly that by hand on this same asset, and nothing here waits on that script existing. If it lands first, use it.
  • advisoryMOTIR-4001, in_progress — REFERENCED, no edge owed. It ships a contrast LANE and this card changes no ink; the element scan is the hand-run harness every design card in this area has used, so the 0 findings criterion is measurable today.

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