`landing.mock.html` does not draw the pillars eyebrow the landing ships — so the asset's own element scan could not see the AA defect that element carried
Opened by Zhu Yue ·
Found while running MOTIR-3984, by the element scan that card shipped. It is the reason that card's own enumeration went short, so it is a defect about the INSTRUMENT rather than about a colour.
The defect
app/_components/Pillars.tsx opens its band head with an eyebrow the copy catalogue supplies:
<span className="mb-2 block font-(family-name:--font-mono) text-[11px] font-semibold tracking-[0.06em] ... uppercase">
{copy.landing.pillars.eyebrow}
</span>
design/marketing/landing.mock.html's div.band-head (line ~1353, and again in the mobile panel at ~1803) draws <h2> and <p> only. The element is not in the asset, in any panel, in either theme.
This is not a colour question and it does not fail AA — the eyebrow is --el-text-secondary as of MOTIR-3984, 6.51:1 on the band. The asset simply does not describe an element the page ships, which is the three-file rule's own claim about itself (design-notes.md § Designed against shipped reality: the asset draws what ships).
Why it is worth a card rather than a line in a note
An asset can only be measured for what it happens to depict. MOTIR-3931 established the element scan — load the mock in headless chromium, read every text-bearing element for its resolved ink and effective background, rule each at its own size and weight — as the answer to "a pair list is written by somebody who already knows which pairs to write". That scan is strictly better than a pair list and it still has one blind spot, which this card is: an element absent from the asset is absent from the scan, silently, and the scan reports green.
That blind spot has been paid for once already. MOTIR-3984 was filed naming one element on the wrong ink (the footer's legal strip). The site painted two — the pillars eyebrow was the second, at the identical 4.34:1, live on the landing page — and it was missing from the count precisely because the scan was run over the mock, where that element does not exist. Both sites date to b3c2836 (2026-08-28), two days before the card, so the enumeration was wrong when it was written rather than drift.
Acceptance criteria
design/marketing/landing.mock.html'sdiv.band-headdraws the pillars eyebrow, in both panels that contain one (the 1280 desktop board and the 390 mobile board), with the shipped component's own size, weight, tracking, case, family and ink —--el-text-secondary,11px,600,0.06em, uppercase,--font-mono— and the string frommessages/en.json, not an invented one.- The mock's own token block already declares every token that arrangement needs, or gains the ones it does not; no new value is minted here.
design/marketing/landing.pngis re-exported at its existing viewport (1320 CSS px wide,deviceScaleFactor: 2, light) and the measured fold figures in the landing half ofdesign-notes.mdare re-taken if the added element moves them — it costs ~28px per board, so state the new headroom rather than assuming it is absorbed.- The element scan over
landing.mock.htmlreports the same 0 product-layer findings it reports today (the annotation scaffold, which is MOTIR-3985's, is unchanged), and the PR body quotes the before/after counts with the command. design-notes.mdrecords the omission and its consequence in the landing half — that the asset was measured green for an element it did not draw — beside the MOTIR-3984 section that names it.- The PR body says whether any OTHER element of the shipped landing is missing from the mock, measured rather than asserted: diff the rendered component tree against the asset's, and if others exist, name them and say whether they are in this card or a following one.
pnpm lint,format:check,typecheck,build,test.
Boundary
Not an AA fix. Nothing here changes an ink, and MOTIR-3984 already moved both live sites of the failing pair. Not the annotation chrome — the 19 remaining findings in this mock and the 35 in the showcase mock are MOTIR-3985's, and they turn on a decision rather than on a number. Not a widening of the code-side guard, which MOTIR-3984 shipped: tests/aaMatrix.test.ts now reads the rendered COMPONENTS, so the site is already guarded whether or not the asset ever draws this element. What is unguarded, and is what this card repairs, is the asset's claim to describe the page.
Advisory dispositions
reference— MOTIR-3985, notdone— APPLIES, and it is WIRED rather than noted. Both cards editdesign/marketing/landing.mock.htmland both must re-exportdesign/marketing/landing.png. Two branches cut offmainthat each re-export a 2.4 MB binary conflict by construction and the second merge cannot be resolved by a text merge (run.md's stacked-pull-request rule). So this card isblocked_byMOTIR-3985 — the larger of the two lands first and this one branches offmainafter it — rather than the two being stacked. The edge is intra-container: both sit under MOTIR-656.
Discussion
No comments yet.
Adding to this discussion signs you in on app.motir.co and brings you back to this request.