diff --git a/docs/process/PLAN-theming.md b/docs/process/PLAN-theming.md index 5b62861f0..48c6747ad 100644 --- a/docs/process/PLAN-theming.md +++ b/docs/process/PLAN-theming.md @@ -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