The `/design` asset draws muted captions on `--el-surface-soft` — 4.34:1, under AA in the default palette, and its own AA sweep never measured the pair
Found while building MOTIR-1043 (motir.co/design), against the asset that card builds to.
The defect
design/marketing/design-showcase.mock.html draws the axis rail as a --el-surface-soft band with the axis help lines set at 12px in --el-text-muted (.axis-hd .help { font-size: 12px; color: var(--el-text-muted) }, and .rail-head .lead likewise). The shipped AxisField does the same thing — text-xs text-(--el-text-muted) for help, and AxisNote for the registry line under each axis.
That pairing is under AA, and theme.css says so in its own words, at the token's declaration:
"⚠️ AA-SAFE ONLY ON THE WHITE PAGE/CARD, and by 0.04 (4.54:1). On
--el-surfaceit is 4.17, on--el-muted4.12, on--el-surface-soft4.34 — all under AA. A muted caption belongs inside a card, never on a panel. (MOTIR-2455; light theme is the binding one — every ink clears AA on dark.)"
Re-measured independently over all ten palettes in both themes (tests/aaMatrix.test.ts, shipped by MOTIR-1043), the light theme of the default motir palette is the binding cell:
| ink | on --el-surface-soft | on --el-card / --el-page-bg |
|---|---|---|
--el-text-muted | 4.34 ✗ | 4.54 ✓ |
--el-text-eyebrow | 4.34 ✗ | 4.54 ✓ |
--el-text-helper | 4.34 ✗ | 4.54 ✓ |
12px is not WCAG large text, so 1.4.3 asks 4.5:1.
Why the asset missed it, which is the part worth keeping
The asset's AA work was thorough and its harness has a control that reproduces to the digit. Its PAIRS list is five entries — four --el-accent-on-surface pairs and one --el-danger-on-surface pair — because the question it was answering was MOTIR-3872's accent-ink question. The pair it actually DRAWS on its own rail was never in the list, and a sweep that returns 0/10 on the pairs it measures reads as a clean bill of health for the surface.
This is the same shape as MOTIR-3874 one token over: an asset that reasons from a measured set, where the set was chosen by the question that prompted the measurement rather than by the elements the asset draws.
What MOTIR-1043 did, and why this is still owed
It put the axis stack inside a Card — --el-card resolves to the same --color-background as the page, so all three inks return to 4.54:1 — and kept the --el-surface-soft band the layout is built on. The page ships AA-clean; the ASSET still draws the failing arrangement, so the next reader of design-showcase.mock.html builds the defect back.
Acceptance criteria
design/marketing/design-showcase.mock.htmldraws the axis rows on the page/card surface rather than directly on the--el-surface-softband, matching what/designships.design/marketing/design-notes.md§ motir.co/design records the pair, its number and the rule (a muted caption belongs inside a card, never on a panel), and its How this asset was measured section'sPAIRSlist gains--el-text-muted/--el-text-eyebrow/--el-text-helperagainst every surface the asset paints them on.- The re-exported
design-showcase.pngshows the corrected rail. pnpm vitest --config vitest.design.config.ts— if that lane exists in this repository — pluspnpm lint,format:check,typecheck,build,test.
Boundary
This is an ASSET fix, not a token fix. --el-text-muted's values are motir-core's and are deliberate (MOTIR-2455 chose them and documented the constraint); nothing here asks for a republish. Whether AxisField should refuse to render a muted caption outside a card — i.e. whether the PACKAGE owes a guard — is a separate question for motir-core and is not claimed by this card.
Advisory dispositions
validate_work_item returned three at create time. All three are disposed of here, and the edge one is WIRED rather than noted.
shape·likely-self-blocking-design(design criterion 1, surface criterion 3) — DOES NOT APPLY. The detector fires on a childless card that is its own design blocker: one criterion produces a design and a later one builds a surface against it. This card istype: designand every criterion is part of the SAME three-file asset — the mock, its note section, its PNG export. There is no build criterion downstream of the design, so there is nothing to cut and nothing to split out.subsumption·likely-in-flight—tests/aaMatrix.test.tsonmoooon-B-V/motir-marketing#15— APPLIES, and it is why the edge below exists. That file is this card's EVIDENCE, not its deliverable: this card editsdesign/marketing/**and touches no test. But the pull request it sits on is MOTIR-1043's, and criterion 1 reads "matching what/designships" — which is post-merge state.reference· advisory — names MOTIR-1043 atin_review— APPLIES, same finding. Both are discharged by ONEblocked_byedge to MOTIR-1043, wired at filing, with this card moved into MOTIR-656 alongside it so the edge is intra-container rather than cross-parent (gate 7). It isblockedrather thantodoaccordingly.