Una sola clave nueva (`invalid-border`, 39 → 40) y su veredicto §5.
RadioCards es un **skin sobre RadioGroup**: renderiza `<RadioGroup.Provider>` y
su indicador ES un radio. Por eso lee `--radio-group-item-size-*`,
`--radio-group-indicator-*` y el puente de paleta del anfitrión
(`--_radio-group-palette-*`, declarado en el host `[data-radio-group]` donde esta
tarjeta vive). El censo los marca «⤴ prestado» y el mandato de composición
(`theming-audit` §5.3-3) dice que **se teman en la ficha del dueño**: coserlos
aquí sería vocabulario paralelo y dejaría que un tema rompiera «un radio es un
radio» sólo dentro de las tarjetas.
Lo acuñado es lo que sí es suyo: el borde de la TARJETA en validación fallida.
Los dos `--radius-full` del indicador son identidad (un radio es redondo por
definición, misma clase que el `50%` de un círculo) y los cuatro literales son
geometría del glifo (el `46%` del punto interior, el `100%` del SVG).
LA LECCIÓN DE LA MEDICIÓN: la primera lectura forzada de `invalid-border` dio
«sin efecto». No era el token: la tarjeta transiciona `border-color`, y leer
justo después de escribir devuelve el valor de PARTIDA — exactamente el motivo
por el que el guard congela las transiciones. Con la congelación puesta,
`oklch(0.9555 0.0207 13.86)` → `rgb(1,2,3)`. **Una medición forzada a mano tiene
que congelar también.** Queda escrito en el veredicto y en el ledger.
Las otras cuatro adjudicaciones, con su medición: `horizontal-basis` sólo bajo
`[data-orientation=horizontal]` (192px → 1234px), `disabled-opacity` sólo bajo
`[data-disabled]` (0.4 → 0.123) y las dos de transición, que el guard congela
(0,12s → 11,5s · cubic-bezier → steps(4)).
Gates: sonda antes/después **0 diffs en 3.540 valores** (19 nodos × 7 estados) ·
centinela 35/40 con las cinco adjudicadas · censo --only 61 % · `--names` sin
desviadas · component-audit PASS · eidos-lint 0 invalid · docs:check 0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>