Los guards globales, corridos antes de cerrar la sesión, encontraron una
regresión MÍA: `--names` daba **3 desviadas en 2 componentes** y
`component:audit` había pasado de 4 a **6 NEEDS-WORK**.
La causa: en `text-circular` y `text-focus` nombré tres claves con el slot
`color` (`color`, `border-color`, `glow-color`) cuando la gramática firmada el
2026-08-20 dice que **el slot de tinta es `fg` y `color` como slot MUERE**.
R-5.3 existe justamente para eso y funcionó — pero después de que yo lo
escribiera, porque el guard es de catálogo y yo verificaba `--only`.
Renombradas a `fg`, `border-fg` y `glow-fg`, con los destinos que el propio
censo indica en su salida `--names`. Value-preserving verificado: **0 diffs**
en text-circular (5.916 valores) y en text-focus (1.769), guards 5/6 y 8/8,
`--names` **DESVIADAS 0**, audit de vuelta a **162 PASS / 4 NEEDS-WORK** (los
cuatro preexistentes y ajenos al eje).
La lección para el protocolo, y va al handoff: **la propuesta §4 generada usa
el slot `color`**, así que es la cuarta manera en que falla — y como el paso 7
corre los guards con `--only`, la desviación de gramática sólo aparece al
correr `--names` GLOBAL. Ese comando ya estaba en el paso 1 del handoff; ahora
también se explica por qué no basta con el audit.
Y el HANDOFF para mañana: cifras nuevas (56 %, sin contrato 25, al 100 % 16),
la lista de los 24 componentes de F2-B con su alcance, las tres cosas que el
bloque enseñó y hay que tener delante al seguir (las cuatro maneras en que
falla la propuesta · declarar un público «de facto» puede MATAR una escala si
detrás hay un privado por talla · cuenta los nodos que ve la sonda antes de
creerte un gate verde), y la cola actualizada — con `mockup` marcado como SIN
DEMO (404) y `text-scramble` como «0 % estructural, escribe el veredicto, no
tokens».
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
`skin-media-player` 22 · `text-circular` 100 · `text-focus` 100. Más cinco
adjudicados como **0 % estructural** (`aspect-ratio`, `text-blur`, `cascade`,
`motion`, `date-picker`), la revisión adversarial §7.7, el arreglo del censo y
el test del suelo.
**Tres cosas que enseñó y conviene tener delante al seguir:**
1. **La propuesta §4 generada falla de cuatro maneras.** Hereda el
incumplimiento del CSS de partida (si ya violaba `recipe-css-contract`, lo
repite); infla hasta 4× (71 tokens para 23 knobs en `spinner`); nombra por
el primer selector de la regla y no por el nodo pintado (llamaba `root-bg` a
una guía de indentación); y **usa el slot `color` donde la gramática firmada
exige `fg`** — R-5.3 lo caza, pero después de escribirlo.
2. **Declarar un público «de facto» puede MATAR una escala.** Varios
componentes consumen `var(--c-x, <default>)` sin declarar `--c-x`. Si detrás
del fallback hay un privado por talla (`knob`), declarar el público lo mata:
el público va primero y gana siempre. Hay que subir la escala al TSC. Si no
lo hay (`text-circular`, `text-focus`), declarar es seguro.
3. **Cuenta los nodos que ve la sonda antes de creerte un gate verde.** Cuatro
componentes miden UN nodo, `picker-shell` medía CERO. Y el centinela tiene
tres puntos ciegos ya medidos: congela transiciones, su valor grande se capa
contra `min()`, y no ve lo que la demo no monta.
### 4. La cola que queda, por alcance
| componente | knobs | nota |
| --- | ---: | --- |
| `palabras` | 471 (22 %) | **el mayor del catálogo**, sin tocar; D-TH.3 decide si entra |
| `palabras` | 471 (22 %) | **el mayor del catálogo con diferencia**, sin tocar; D-TH.3 decide si entra |
| `field-langs` | 41 | espera el **mandato Field** (firma 2), que NO es tokenización: manda que los x-field incorporen el wrapper Field — cambia composición y mueve píxel |
| `avatar` | 36 (36 %) | |
| `mockup` | 29 (14 %) | además sale NEEDS-WORK en `component:audit`, preexistente |
| `knob` | 27 (29 %) | |
| `skin-media-player` | 11 | el del rojo conocido de la suite eidos |