docs(theming): el handoff recoge la tanda de DOCE y lo que encontró supervisarla

Doce componentes cerrados por cinco sesiones en paralelo — cinco al 100 %
(chat-log, chat-composer, rating-group, toggle) y card cerrado en su 78 %,
que ES su techo. Global 66 % -> 68 %.

Y la parte que importa: los doce se supervisaron uno a uno, y la supervisión
encontró cinco cosas que la ejecución no vio. Cuatro salieron del §7.7.

Las dos primeras son de la rama, no del eje: el índice de git es COMPARTIDO
—verificar el árbol indexado no basta, porque otra sesión puede reescribirlo
entre que lo miras y confirmas— y un árbol de trabajo rancio hace mentir al
instrumento sin tocar un solo commit (el guard de card daba 0/98 por un fichero
sucio; desde HEAD limpio, 49/98 verde).

Las otras tres son del eje: la cascada de paleta se lleva también el tono por
defecto, el canal inline filtrado al contrato son cuatro claves y no dos, y la
sonda y el guard mueren con --import tsx/esm.

Queda escrito además el gate del diff cero con su matiz: dos componentes no
cerraron a cero y los dos lo declararon; los dos son ruido reproducido sobre
código idéntico. Un diff no cero no es automáticamente una regresión, pero sólo
se declara ruido reproduciéndolo.

Y dicho sin esconderlo: la demo de chat-log se tocó como instrumento.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alpha-0.1-background
dev 2 months ago
parent 5be7dabf49
commit c05349c3ff

@ -1,6 +1,28 @@
# CONTINUE — eje Theming «theme-reach» (handoff, act. 2026-08-23)
> **LO ÚLTIMO (2026-08-23, tarde): SIETE componentes.** `navigation-menu`
# CONTINUE — eje Theming «theme-reach» (handoff, act. 2026-08-24)
> **LO ÚLTIMO (2026-08-24): DOCE componentes en paralelo, con SUPERVISIÓN.**
> `chat-log` 77 → **100 %** (`fd8f01bac`) · `chat-composer` 79 → **100 %**
> (`71a097ddc`) · `rating-group` 80 → **100 %** (`f6a618328`) · `toggle`
> 81 → **100 %** (`edc019515` + `007c2af52`) · `select` 83 → **92 %**
> (`cc010f79a`) · `avatar` 75 → **90 %** (`f68bac4a6`) · `calendar` 84 → **89 %**
> (`509d1144f`) · `file-upload` 76 → **83 %** (`0c06d42aa`) · `editable`
> 75 → **82 %** (`2117d7422`) · `switch` 76 → **81 %** (`bbdc77c07`) ·
> `radio-group` 77 → **81 %** (`f5d252443`) · `card` 78 → **78 % CERRADO**
> (`f3189a05a`). Global **68 %**.
>
> **Los doce se supervisaron uno a uno, y la supervisión encontró cosas.**
> Refutación estática de los doce commits (cero líneas ajenas en el generado),
> centinelas re-corridos, y cinco hallazgos propios que están abajo. **El
> protocolo §7.7 no es un adorno: cuatro de los cinco salieron de él.**
>
> **Lo que enseñó esta tanda, en una línea cada una:**
> el ÍNDICE DE GIT ES COMPARTIDO y verificar el árbol indexado NO BASTA ·
> un árbol rancio hace MENTIR al instrumento sin tocar un commit ·
> la cascada de paleta se lleva TAMBIÉN el tono por defecto ·
> un componente puede BARRER DESCENDIENTES y comerse el token de sus huéspedes ·
> y la sonda y el guard MUEREN con `--import tsx/esm`.
> **HISTÓRICO (2026-08-23, tarde): SIETE componentes.** `navigation-menu`
> 44 → **100 %** (`85988785d`) · `waveform` 55 → **86 %** (`11b92ded6`) ·
> `color-field` 56 → **93 %** (`3c6742b9c`) · `background` 57 → **95 %**
> (`9bdc5a5d5`) · `s-text-virtual-list` 58 → **70 %** (`1f785b6f2`) · `badge`
@ -38,6 +60,95 @@ barrido del centinela sobre TODO el ledger (`REVIEW-theming-2026-08-23.md`).
única forma de saberlo es correr el guard sobre el ledger entero, no sobre los
que tocas.
## LO QUE DEJÓ LA SESIÓN DEL 2026-08-24 (doce componentes + supervisión)
Doce componentes cerrados por cinco sesiones en paralelo, cada uno con su
commit aislado, y **una pasada de supervisión sobre los doce** (refutación
estática de cada commit + centinela re-corrido + medición propia de todo claim
que no fuese trivial). Cinco componentes llegan al **100 %**; `card` cierra en
**78 %** porque ése ES su techo, y así está escrito en su ficha.
### Los cinco hallazgos de la SUPERVISIÓN (no de la ejecución)
1. **⚠⚠ EL ÍNDICE DE GIT ES COMPARTIDO** (`5be7dabf4`). Hay un solo
`.git/index` para todas las sesiones. Construir el índice desde HEAD y
comprobarlo con `git diff --cached` protege del árbol ajeno, **no de la
ventana entre mirar y confirmar**. Costó `edc019515` (salió con tres
fragmentos de `rating-group` y sin la mitad de los suyos), su reparación
`007c2af52`, y **una coma de más que dejó `theming-sentinel-exceptions.ts`
SIN PARSEAR durante cuatro commits de HEAD** (`88a208644`). El guard no
quedaba en rojo: quedaba MUERTO, y sólo se veía en checkout limpio.
**Regla nueva: verificación y `git commit` en la MISMA invocación de shell.**
2. **Un árbol de trabajo rancio hace MENTIR al instrumento sin tocar un
commit.** El guard de `card` daba `0/98` —la firma del instrumento ciego—
por un `theming-sentinel.ts` sucio con el bloque de `chat-log` DUPLICADO.
Desde copia limpia de HEAD: `49/98`, verde. **Antes de creer un `0/N`,
comprueba que el instrumento coincide con HEAD.**
3. **La cascada de paleta se lleva TAMBIÉN el tono por defecto** (`b7f5a7d75`).
El §13 decía que las `{c}-primary-*` salvan a la instancia sin `data-color`;
donde soma trata el color como valor RESUELTO lo estampa siempre y `neutral`
cae con los otros once. Medido en `switch` y `editable`.
4. **El canal inline filtrado al contrato son CUATRO claves, no dos**
(`009af3300` + `8a4bb8e0e`). Los dos de `avatar` parecían fuera porque su
bloque de `base.ts` es una IIFE que el censo no supo leer hasta `f68bac4a6`.
Re-medidos: ni el fondo del badge ni el `box-shadow` del anillo se mueven
desde `:root`, y **no puede existir instancia alcanzable** — la puerta
`data-*-custom` y la escritura inline viajan JUNTAS.
5. **La sonda y el guard MUEREN con `--import tsx/esm`** (`b4e4fe1fe`).
`ReferenceError: __name is not defined` dentro de `page.evaluate`: el
ayudante `keepNames` de esbuild no existe en la página. Van con `node` a
secas. El error no nombra ni a tsx ni a la sonda.
### Lo que enseñó cada componente
| componente | antes → después | lo que enseñó |
| --- | --- | --- |
| `chat-log` | 77 → **100 %** | el instrumento daba 15/31 y las DIECISÉIS «muertas» estaban vivas |
| `chat-composer` | 79 → **100 %** | **`file-upload` BARRE DESCENDIENTES** y se come el token del huésped |
| `rating-group` | 80 → **100 %** | una escala privada sube al contrato; el guard no fotografía `transform` |
| `toggle` | 81 → **100 %** | el guard sólo sabía barrer UN eje: 36/126 → 70/126 sin adjudicar nada |
| `select` | 83 → 92 % | el portal parte el instrumento: el estado que abre TAPA los de reposo |
| `avatar` | 75 → 90 % | su contrato era INVISIBLE para los dos lectores (una IIFE en `base.ts`) |
| `calendar` | 84 → 89 % | una entrada de receta de FAMILIA no se juzga en la ruta de UN componente |
| `file-upload` | 76 → 83 % | una clave que no pintaba en NINGUNO de sus tres botones — retirada |
| `editable` | 75 → 82 % | el guard CERRABA la superficie que medía (sale del modo con un `blur`) |
| `switch` | 76 → 81 % | su tono NEUTRAL cae con los otros once |
| `radio-group` | 77 → 81 % | su punto NUNCA ha pintado su escala (el SVG escribe `1em` inline) |
| `card` | 78 → **78 % CERRADO** | el número cerrado ES el resultado: sus 8 privados son puente y conmutador |
### Dos verdades sobre el GATE del «diff cero»
Dos componentes NO cerraron a cero, y los dos lo declararon. **Los dos son
ruido del instrumento, reproducido por la supervisión sobre código idéntico**:
- `calendar`: **28 diffs corriendo la sonda dos veces sin tocar nada**, en los
dos mismos nodos (`month-select` / `year-select`) y las dos mismas
propiedades. Empate de especificidad resuelto por orden de carga de Vite. Su
commit además era SÓLO comentarios, así que no podía mover un píxel.
- `chat-composer`: 2 diffs de `blockSize` (30 ↔ 36 px) en `[data-…-attach]`,
reproducidos en tres corridas del mismo código.
**Un diff no cero no es automáticamente una regresión — pero SÓLO se puede
declarar ruido reproduciéndolo sobre código idéntico.** Los dos lo hicieron.
### Lo que hay que saber antes de seguir
- **`card` y `radio-group` están CERRADOS por debajo del 100 %** y no es
deuda: sus privados son puente THM-2 y conmutadores por variante. Un público
encima mataría el `color=` por instancia.
- **`file-upload` es HOY el único componente con un barrido de descendientes**
(`[data-file-upload] [data-disabled]`, una sola ocurrencia en 162 recetas).
Acotarlo mueve píxel de cualquier huésped → espera firma.
- **El guard no fotografía `transform`** y ya son tres los componentes que lo
sufren (`background`, `rating-group`, `card`). Arreglarlo obliga a
re-verificar el ledger entero, así que se adjudica de uno en uno.
- **La demo de `chat-log` se TOCÓ como instrumento** (montaba tres de sus seis
partes sólo en la prosa, así que once claves no tenían nodo que pintar). Roza
la regla de que las demos quedan fuera del eje: queda dicho, no escondido.
- Quedan en la cola, por alcance: `chat-message` 84 · `fab` 88 ·
`tags-input` 88 · `chat-typing` 89 · `collapsible` 90 · `accordion` 91 ·
`toolbar` 91 · `scroll-area` 94 · `tabs` 96 · `slider` 97 · `toast` 98.
## LO QUE DEJÓ LA SESIÓN DEL 2026-08-23
**Dieciséis componentes** (11 cosidos + 6 de cola + 2 adjudicados sin tocar

Loading…
Cancel
Save

Powered by TurnKey Linux.