I3215 — The ui audit refuses a control a thumb cannot hit at the floor width
Declare the minimum touch target once in share/design/tokens.yaml and feed it to axe's target-size check, which the ui audit already runs through the wcag22aa tag, so one measurement judges every control of every discovered page at the floor width; report its violations as component.target-size, and admit today's findings through a committed baseline that only shrinks.
PŘIPRAVENO vlna 0 · p2 · profil implementation · bezpečné souběžně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3215 bude přijato.
Cíl
Declare the minimum touch target once in share/design/tokens.yaml and feed it to axe's target-size check, which the ui audit already runs through the wcag22aa tag, so one measurement judges every control of every discovered page at the floor width; report its violations as component.target-size, and admit today's findings through a committed baseline that only shrinks.
Proč
A 2026-10-08 mobile review proposed about 44 px targets; the figure is a proposal for the owner or the design declaration to fix, not a fact. ADR 0022 sweeps widths but sizes nothing beyond axe's 24 px. Proposed in ADR 0215 (A phone is the baseline width of every first-party surface, and the primary flow is accepted there before a surface grows) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c197#1.
Aktuální stav
Verified on master 707a04c7ce8: scripts/lib/ui-audit.mjs runs axe with runOnly tags that include wcag22aa, which runs axe's target-size check at 24 px (WCAG 2.5.8); share/design/tokens.yaml has viewports and no touch target; nothing in scripts/ui or scripts/lib/ui-*.mjs admits a known finding, so the ui-audit gate fails on any.
Cílový stav
tokens.yaml declares the target; the audit passes it to axe as the minimum size, reports each undersized control with route, width and selector once, and .ai/repo/ui-target-size-baseline.txt holds the trunk's findings so the rule is a ratchet.
Rozsah
- share/design/tokens.yaml
- scripts/lib/ui-audit.mjs
- docs/UI.md
- .ai/repo/project/issues/I1016.yaml
Mimo rozsah
- Fixing every finding in the same PR
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- A planted 16 px link on a fixture page is reported as component.target-size at the floor width
- The target is read from tokens.yaml; changing it changes the audit without another edit
- I1016.yaml records, in the PR that lands the rule, that I3215 delivered its touch-target criterion; I1016 keeps its other criteria
Validace
- scripts/ui audit --json
- scripts/ui viewports
- scripts/ui test
Požadované důkazy
- case_a_small_target_is_refused
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3215.yaml. Read it back with majordomus plan show I3215.