v1.6.0 — dark-mode link contrast fix (#58) + info-fg defer (#59)
Lockstep MINOR — 4 npm packages → 1.6.0 (@willink-labs/tokens · tailwind-preset · react · css-tokens). No Flutter release this cycle (willink_theme stays 1.5.0 — independent cadence, ADR-0011).
Button link dark contrast fix (#58)
Button variant="link" resting color used text-brand — the fixed brand-600 primitive, which is mode-invariant (ADR-0013) — so on the dark page background it rendered 3.54:1, below WCAG AA. Reproduced by the i-willink.com production sweep on /design-system. Re-pointed to the flipping text-brand-soft-fg (light brand-700 7.10:1 / dark brand-300 10.93:1 — both AAA). Hover (text-brand-hover) already flips and stays legible (dark 4.76:1).
The same bug class (fixed brand foreground on a flipping surface) was audited DS-wide: AccordionTrigger hover:text-brand → hover:text-brand-hover (also fixed); RadioGroupItem text-brand audited and kept (8px indicator dot is a graphical object under WCAG 1.4.11's 3:1 rule, which it clears). The contrast gate gained two required pairs (brand-soft-fg/bg, brand-hover/bg) in both modes.
Light-mode resting links are now one ramp step darker (brand-600 → brand-700) — a deliberate, contrast-improving MINOR default-visual change (ADR-0010). No migration required.
info-fg upstreaming verdict (#59) — deferred
Evaluated i-willink.com's local --color-info-fg (blue) for upstreaming. Verdict NO this cycle: single usage site, no info hue/surface family in the DS for it to belong to, below the ADR-0016 promote-on-reproduction bar. #59 left open with the reasoning as a comment — a defer, not a reject.
Decisions
ADR-0017 — Button link fix rationale (both fix options weighed) + info-fg defer verdict. Roadmap: docs/roadmap/v1.7.md.
Packages
Real content in @willink-labs/react; tokens / tailwind-preset / css-tokens carry lockstep markers (the fix reuses existing roles — no new token, variable, safelist entry, or generated var).