Dos claves nuevas (20 → 22), cuatro privados renombrados, VEINTIDÓS respaldos
retirados y seis adjudicaciones medidas. Diff de computed 0 sobre 1.856 valores
en 8 estados.
SU 35 % DE DEUDA ERAN TRES DEFECTOS, NINGUNO DE DISEÑO
1. Un prefijo ABREVIADO: los privados se llamaban --_pin-cell-* dentro de un
componente llamado pin-input, así que el censo no podía reconocerlos como
suyos y los cuatro knobs que los leen contaban como deuda aunque DERIVAN de
públicos. Renombrados a --_pin-input-cell-* — el cuarto caso de esta clase
tras color-picker, metrics y time-picker.
2. Un respaldo A SÍ MISMO: font-family leía
var(--style-label-font-family, var(--style-label-font-family)), que es un
no-op con forma de defecto. Ahora es la costura.
3. La tinta del dígito iba a --color-content-primary a pelo → cell-fg.
Y LOS VEINTIDÓS RESPALDOS ESCRITOS A MANO
Cada var(--pin-input-x, <valor>) duplicaba lo que el contrato ya declara en
:root: código muerto, y retirarlos dio 0 diffs, que es la prueba. Pero UNO
MENTÍA: disabled-opacity respaldaba 0.55 cuando --opacity-disabled vale 0.4.
Es la ley de los `, 1.4` contra un --font-line-height-sm de 1.45 que este mes ya
salió en dos componentes, aquí con más deriva. Un respaldo no es una red de
seguridad: es una segunda fuente que nadie actualiza.
SEIS ADJUDICACIONES, Y DÓNDE VIVE CADA ESTADO
La demo muestra un pin vacío, editable y válido, así que los seis tokens de
estado no tenían nodo. Forzados sobre los nodos reales alcanzan los seis — con
un detalle que costó una pasada: `filled` y `active` son atributos de la CELDA,
pero `invalid` y `readonly` se estampan en el CONTENEDOR y cascadean (soma los
OR-fusiona con el Field que las envuelve). Forzarlos en la celda no hace nada.
VERIFICACIÓN
Sonda antes/después 0 diffs (1.856 valores · 8 estados · 8 nodos) · R-5.4 16/22
con las seis adjudicadas, exit 0 · component:audit PASS · censo --only 100 % ·
eidos-lint 8 morfo-backed / 0 invalid / 0 class-hooks · rtl:check 0 ·
docs:check 0 · suite eidos 439/440 (el rojo conocido) · capturas 2× antes y
después · el ledger sigue en sus 63 hunks previos.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- **Tiene eje `size`**: los tokens dimensionales van por talla (`{part}-{eje}-{k}`) apuntando al bundle `--size-{k}-*`, nunca al primitivo crudo (theming §5; el guard `recipe-css-contract` prohíbe el primitivo).
### 4.1 Tokens a declarar en `lib/recipes/base.ts` (6)
### 4.1 Tokens a declarar en `lib/recipes/base.ts` (0)
Valor **verbatim** del CSS de hoy: el default no se mueve, sólo cambia quién
puede moverlo. Nombres derivados de recipe-contract §1 (ejes lógicos, talla
@ -67,12 +64,6 @@ no distingue lo que debería — se marca `⚠`.