From fde65af7ea8440175fb546d3871902f05ef49434 Mon Sep 17 00:00:00 2001 From: dev Date: Mon, 24 Aug 2026 04:31:48 +0200 Subject: [PATCH] =?UTF-8?q?docs(theming):=20el=20registro=20=C2=A78=20reco?= =?UTF-8?q?ge=20tabs=20y=20toast,=20con=20su=20sha=20=E2=80=94=20y=20la=20?= =?UTF-8?q?cola=20A=20CIERRA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Los dos commits de esta sesión, con sus cifras y sus artefactos: - `tabs` 96 % → 97 % CERRADO (`300153f9f`) — 79 claves, ninguna acuñada, centinela 70/79 con 9 adjudicadas. - `toast` 98 % → 100 % (`b8eccc1c4`) — 85 claves, ninguna acuñada, centinela 51/85 con 34 adjudicadas. Y con ellos la Cola A queda CERRADA: los cuatro (`scroll-area`, `slider`, `tabs`, `toast`) cerraron **sin acuñar una sola clave**. Sus contratos ya estaban enteros y lo que quedaba fuera eran literales-identidad y, en `tabs`, el canal de VALOR de soma. Cuando el número no se mueve porque no debe, eso ES el resultado — y así está escrito en el handoff. Lo que enseñaron los dos últimos, para el que siga: - §12.9 en una tarjeta PORTALADA se lleva la TARJETA ENTERA, no sólo la tipografía — 21 claves de `toast`, y con coste de producto: un toast `risk` y uno `fulfill` visten la misma tarjeta gris. Medido, adjudicado con `PLANE_SUPERSEDED` y registrado en next-features §12; sin firma no se toca. - La misma clave puede mentir en reposo y decir la verdad en animación: los `{tono}-accent` alcanzan bajo `[data-loading]`, donde el `@keyframes` del pulso gana a toda declaración normal. - Poner `openMarker` puede EMPEORAR la medición cuando la superficie se auto-descarta: tres corridas del guard discreparon sobre código idéntico. - El indicador de `tabs` es canal de valor: `MeasuredIndicator` escribe su rect en cada movimiento, y un público encima sería un knob que rompe el deslizamiento al fijarse. Guard: `docs:check` 0 · prettier limpio sobre el contenido normalizado a LF. Co-Authored-By: Claude Opus 5 --- docs/process/CONTINUE-theming.md | 38 ++++++++++++++++++---- docs/process/PLAN-theming.md | 56 ++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 6 deletions(-) diff --git a/docs/process/CONTINUE-theming.md b/docs/process/CONTINUE-theming.md index f49fd4571..5c09a4713 100644 --- a/docs/process/CONTINUE-theming.md +++ b/docs/process/CONTINUE-theming.md @@ -117,12 +117,38 @@ compone?») tiene por tanto una salida barata y ya probada: no escribir la regla REPOSO y su token nunca ha pintado. Tiene cara de defecto de a11y (un lector anuncia todas las etiquetas como seleccionadas). Toca morfo ⇒ §12. -### Cola A: quedan CUATRO - -`scroll-area` 94 · `tabs` 96 · `slider` 97 · `toast` 98. Y de la deuda B, tres: -`audio-player` (sin README de eidos donde escribir la sección), `palabras` y -`proof-of-human` (carriles propios). Más **quince pestañas `Tokens`** -pendientes, la deuda hermana que destapó saldar la B. +### Cola A: CERRADA (2026-08-24) + +Los cuatro, por dos sesiones en paralelo: `scroll-area` 94 → **100 %** +(`3282ef978`) · `slider` 97 → **100 %** (`4d3ca2fd8`) · `tabs` 96 → **97 % +CERRADO** (`300153f9f`) · `toast` 98 → **100 %** (`b8eccc1c4`). **Los cuatro +cerraron sin acuñar UNA sola clave**: sus contratos ya estaban enteros y lo que +quedaba fuera eran tres literales-identidad (un rail al 100 %, una barra al +`opacity: 1`, la lista `fitted` al 100 %, la tarjeta al `opacity: 1`) y, en +`tabs`, el canal de VALOR de soma. Cuando el número no se mueve porque no debe, +eso ES el resultado. + +**Lo que dejaron los dos últimos, en una línea cada uno:** + +- **`tabs`** — la mitad de un contrato puede vivir en las VARIANTES (40/79 → + 70/79 barriendo `data-variant` y usando las dos URL que el propio demo + ofrece), y su indicador es **canal de valor**: `--indicator-{x,y,w,h}` los + escribe `MeasuredIndicator` en cada movimiento, así que un público encima + sería un knob que un tema puede fijar — y fijarlo rompe el deslizamiento. +- **`toast`** — **§12.9 en una tarjeta PORTALADA se lleva la TARJETA ENTERA**, + 21 claves, y con coste de PRODUCTO: un toast `risk` y uno `fulfill` visten la + misma tarjeta gris, y la franja de acento no se ve nunca en reposo (el plano + declara el ATAJO `border`, que pisa el `border-inline-start`). Matiz para la + firma: los seis `{tono}-accent` SÍ alcanzan bajo `[data-loading]`, donde el + `@keyframes` del pulso gana a toda declaración normal — **la misma clave + miente en reposo y dice la verdad en animación**. Y una del instrumento: + **poner `openMarker` EMPEORA la medición** cuando la superficie se + auto-descarta (tres corridas discrepando); sin marcador el guard dispara una + tarjeta nueva antes de cada token y da 51/85 tres veces seguidas. + +De la deuda B siguen tres: `audio-player` (sin README de eidos donde escribir +la sección), `palabras` y `proof-of-human` (carriles propios). Más las pestañas +`Tokens` que queden pendientes, la deuda hermana que destapó saldar la B. ## LO QUE DEJÓ LA SESIÓN DEL 2026-08-24 (doce componentes + supervisión) diff --git a/docs/process/PLAN-theming.md b/docs/process/PLAN-theming.md index e6da65e19..9b39ef933 100644 --- a/docs/process/PLAN-theming.md +++ b/docs/process/PLAN-theming.md @@ -521,6 +521,62 @@ excepción abre la mano para MEDIR, no para contabilizar. ## 8. Registro +- 2026-08-24 — **`toast` 98 % → 100 %** (`b8eccc1c4`), contrato 85 → **85** + claves —ninguna acuñada—, centinela **51/85** con 34 adjudicadas. Llegaba con + `global`, `private` y `sistema` a CERO y **un** knob fuera de alcance: el + `opacity: 1` de la tarjeta, que se FIRMA como identidad — es el polo EN REPOSO + del par abierto/cerrado, y el que lleva tokens es el otro (`closed-offset`, + `closed-scale`). Tercer literal-identidad del día, tras `scroll-area` y + `slider`. **Lo que enseñó**: (1) **en una tarjeta PORTALADA el plano `overlay` + no se lleva sólo la tipografía — se lleva la TARJETA ENTERA, y esta vez con + coste de PRODUCTO**. El item sella `data-depth='overlay'` y el plano declara + `background`, el **ATAJO `border`** y `box-shadow` a la misma (0,1,0) y más + tarde: 21 claves (12 `{tono}-{surface,border}` + `provider-border-width` + + `accent-width` + `provider-shadow`) no mueven nada, mientras + `--depth-overlay-surface` / `-border` / `-shadow` y `--border-width` lo + repintan todo. **Un toast `risk` y uno `fulfill` visten la misma tarjeta + gris**, y la franja de acento —un `border-inline-start` que el atajo posterior + pisa en los cuatro lados— no se ve NUNCA en reposo. §12.9 sigue sin firmar, así + que se ADJUDICAN con `PLANE_SUPERSEDED` y la incidencia entra en + `next-features` §12; (2) **la misma clave puede mentir en reposo y decir la + verdad en animación** — los seis `{tono}-accent` alcanzan bajo `[data-loading]`, + donde la regla del pulso es (0,2,0) y su `@keyframes` gana a toda declaración + normal (100 fotogramas: oklab L 0.5032..0.8514 sin escribir, 0.0823..0.5032 con + el token en `rgb(1,2,3)`); (3) **poner `openMarker` EMPEORA la medición** — + primera vez: una tarjeta se auto-descarta a los 5 s, así que «¿ya está + abierta?» no tiene respuesta útil y tres corridas sobre código idéntico + discreparon en QUÉ token leía muerto. Sin marcador, el guard cae al de por + defecto (una parte que este componente no tiene) y dispara una tarjeta nueva + antes de CADA token: 51/85 tres veces seguidas. La sonda aprendió lo mismo + (`DEMO_VARIANTS`): medía UN nodo porque un toast no EXISTE hasta que algo lo + lanza. Diff de computed vacío (1.760 valores × 7 estados, 8 nodos), capturas 2× + byte a byte idénticas — por un script propio, porque su viewport es + `position: fixed` y cae fuera del recorte del escenario que usa `__shot`. +- 2026-08-24 — **`tabs` 96 % → 97 % CERRADO** (`300153f9f`), contrato 79 → **79** + claves —ninguna acuñada—, centinela **70/79** con 9 adjudicadas. Sus tres knobs + fuera de alcance se clasificaron uno a uno y los tres quedan fuera POR + DOCTRINA. **La propuesta §4.1 de su ficha es INCORRECTA y no se ejecuta**: + pedía acuñar `indicator-width` / `-height` sobre `var(--indicator-w, 0px)`, y + esas vars son el **canal de VALOR de soma** — la capa `MeasuredIndicator` + escribe el rect del trigger activo en cada movimiento, así que un público + encima sería un knob que un tema puede FIJAR, y fijarlo rompe el + deslizamiento. Es la adjudicación que `navigation-menu` ya lleva escrita para + su propio `indicator-w` (y la razón por la que su `-x` se retiró, muerto). El + tercero, el `width: 100%` de `fitted`, se FIRMA como identidad. **Lo que + enseñó**: (1) **la mitad de un contrato puede vivir en las VARIANTES** — el + escenario arranca en `line` y el guard leía 40/79; barriendo `data-variant` y + añadiendo las dos superficies de URL que el propio demo ofrece + (`perm.orientation=vertical`, `perm.disabled=true`) sube a 70/79 sin adjudicar + una clave de más; (2) **`trigger-bg` muere de una regla que existe para que se + lea la etiqueta** — la demo monta el `Indicator` y + `[data-tabs-list]:has([data-tabs-indicator]) [data-tabs-trigger]` (0,2,0) pone + el fondo transparente; sin indicador, que es la composición por DEFECTO, + alcanza; (3) `scrollable-fade` trae dos razones y cualquiera bastaría: vive + bajo un opt-in y pinta por `mask-image`, que el guard no lee. **Comprobado y + refutado**: su trigger NO compone el `Button` canónico, así que la clase «el + compuesto gana a la receta que lo compone» de `toolbar` / `form` no le aplica. + Diff de computed vacío (2.016 valores × 8 estados, 8 nodos), capturas 2× + idénticas. - 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