Found by the Phase 2a swatch page (apps/docs-portal, :3020) on its first render — the first time the token system has been looked at in a browser.
The claim
The Phase 1 handoff records A3 as answered by introducing a new Tier-1 step per ramp:
--color-border-strong needed a brand-new Tier-1 step in each ramp (graphite-600, paper-400, void-600), each solved for ≥3:1 against every surface in its mode.
Measured
Contrast read from the painted cell, transitions suppressed, against all five surfaces per mode:
| Mode |
Fails 3:1 on |
| dark |
surface (2.73) |
| vibrant |
bg-elevated |
| light |
all five surfaces |
Light mode is the serious one — the token that exists specifically to be a compliant control boundary is not one, anywhere, in that mode.
Two related observations
A22 reproduced. --color-border misses 3:1 on all five surfaces in all three modes (1.0–1.29 in dark). That gate already exists and is owned; this is independent confirmation, now visible in context rather than as a number in a report.
A22 is wider than recorded. --color-thread resolves to the border value — DESIGN.md classifies it as "a line, so it tracks --color-border", target 3 — so the chat thread rail sits below the boundary bar too, in every mode. The gate names only the border.
Why this matters now
A22 is described as a brand decision because changing --color-border changes the look of everything. --color-border-strong was the compliant escape hatch — the token you reach for when a boundary must actually meet 1.4.11. If it does not clear 3:1 either, that escape hatch is not there, and A22 has no mitigation.
Reproduce
pnpm --filter @augment-it/docs-portal dev # :3020
Cycle the three modes. Boundary tokens are graded at 3:1 and failures are outlined; foreground tokens at 4.5:1.
Not fixed here — the values are a brand call, same as A22.
Found by the Phase 2a swatch page (
apps/docs-portal, :3020) on its first render — the first time the token system has been looked at in a browser.The claim
The Phase 1 handoff records A3 as answered by introducing a new Tier-1 step per ramp:
Measured
Contrast read from the painted cell, transitions suppressed, against all five surfaces per mode:
surface(2.73)bg-elevatedLight mode is the serious one — the token that exists specifically to be a compliant control boundary is not one, anywhere, in that mode.
Two related observations
A22 reproduced.
--color-bordermisses 3:1 on all five surfaces in all three modes (1.0–1.29 in dark). That gate already exists and is owned; this is independent confirmation, now visible in context rather than as a number in a report.A22 is wider than recorded.
--color-threadresolves to the border value — DESIGN.md classifies it as "a line, so it tracks--color-border", target 3 — so the chat thread rail sits below the boundary bar too, in every mode. The gate names only the border.Why this matters now
A22 is described as a brand decision because changing
--color-borderchanges the look of everything.--color-border-strongwas the compliant escape hatch — the token you reach for when a boundary must actually meet 1.4.11. If it does not clear 3:1 either, that escape hatch is not there, and A22 has no mitigation.Reproduce
pnpm --filter @augment-it/docs-portal dev # :3020Cycle the three modes. Boundary tokens are graded at 3:1 and failures are outlined; foreground tokens at 4.5:1.
Not fixed here — the values are a brand call, same as A22.