@ -509,6 +509,51 @@ excepción abre la mano para MEDIR, no para contabilizar.
## 8. Registro
- 2026-08-24 — ** `slider` 97 % → 100 %** (`4d3ca2fd8`), contrato 39 → **39**
claves —ninguna acuñada—, centinela **32/39** con 7 adjudicadas. Llegaba con
`global` y `private` a CERO (sus cuatro privados son la escala por talla, que
ya deriva de públicos) y **un** knob fuera de alcance: el `inline-size: 100%`
del rail horizontal, que se FIRMA como identidad — un rail ocupa su
contenedor, y su suelo ya es un knob (`min-inline-size`). Mismo precedente que
`separator` el mismo día. **Lo que enseñó** : (1) **con un solo valor, el tick
ACTIVO no existe** — `data-active` se estampa sólo mientras el valor del tick
cae DENTRO de `[min(valores), max(valores)]` (`SliderTickProvider.isActive`),
así que un pulgar en 40 con ticks en 0/50/100 deja los tres inactivos y el
guard lee `active-tick-bg` como un token que miente; la marca activa **no es
un estado del tick, es una relación con el rango**, y con el chip `multiple`
(20– 80) alcanza al instante; (2) **el pickup pide el puntero MANTENIDO** —
`active-thumb-scale` / `-shadow` viven en `:active` y el pase estático del
guard aparca el ratón: medidos con un `mouse.down()` real sobre el thumb real
(scale 1.15 → 4.56); (3) **una clave que el centinela lee muerta puede ser la
que otro componente ESCRIBE** — `min-block-size` sólo la lee la orientación
vertical, que el escenario no monta, y es justo la que `media-player` fija
para su volumen vertical. Este contrato lo COMPONEN siete componentes
(`media-player`, `skin-media-player` , `waveform` —su playhead ES este thumb—,
`color-picker` , `gradient-builder` , `image-adjustments` , `time-range-picker` ),
así que ninguna clave se retira sin barrerlos. Diff de computed vacío (1.376
valores × 7 estados, 7 nodos), capturas 2× idénticas. ⚠ El único error de
`npm run check` en su fichero de demo es PREEXISTENTE (`1857c7854`).
- 2026-08-24 — ** `scroll-area` 94 % → 100 %** (`3282ef978`), contrato 13 → **13**
claves —ninguna acuñada—, centinela **10/13** con 3 adjudicadas. Llegaba con
`global` y `private` a CERO y **un** knob fuera de alcance: el `opacity: 1` de
la barra visible, que se FIRMA como identidad — deshace el `0` del estado
oculto de la regla de encima, o sea el otro extremo de un par (y el `0`
hermano el censo ni lo cuenta, así que acuñarlo habría creado una asimetría).
**Lo que enseñó** : (1) **la clave que el guard leía muerta es la más
consumida del contrato** — `auto-max-block` sólo pinta bajo `[data-autosize]` ,
que el escenario no monta, y la escriben `combobox` , `command` ,
`gradient-picker` , `select` y `palabras` sobre su propio ScrollArea para
cerrar la altura del panel: retirarla habría roto cinco componentes; (2) **la
excepción de demo de §7.8 no la abría** porque `data-autosize` lo estampa el
ENVOLTORIO de eidos desde una prop y el morfo no lo declara — se adjudica
forzando el atributo sobre la raíz real (none → 1234px, y `none` al quitar el
token); (3) el par `transition-*` es la clase ya conocida — SON la transición
que el guard congela, medidos sin congelar en barra y thumb (0.12s → 11.5s).
`thumb-bg-hover` **se queda con el modificador detrás** : es hover neutro,
excluido del codemod de D-TH.6, y su migración a la capa de estado sigue
bloqueada por morfo (`archetype: 'thumb'` no recibe velo) — el último knob de
la firma 3 sin resolver. Diff de computed vacío (896 valores × 7 estados,
4 nodos), capturas 2× idénticas.
- 2026-08-24 — ** `tags-input` 88 % → 90 % CERRADO** (`92180c390`), contrato 90 →
**91** claves, centinela **63/91** con 28 adjudicadas. Sus **cinco** knobs
fuera de alcance se clasificaron uno a uno ANTES de tocar nada: **uno** era la