docs(theming): el handoff y el PLAN recogen navigation-menu — 100 %, y tres cegueras del instrumento

Registro §8 del PLAN y sección propia en el handoff, delante de «Lo primero al
entrar», porque las tres lecciones se repiten en la cola de B1:

- las partes que compone el CONSUMIDOR (los <a> desnudos de un mega-menú) no
  las ve ningún instrumento: 10 nodos y ninguno era el panel;
- un panel de HOVER lo cierra el propio guard al aparcar el puntero, y eso da
  falso negativo Y falso positivo a la vez;
- una propiedad en TRANSICIÓN devuelve el valor viejo si la lees en el acto:
  toda medición a mano congela `transition`.

Más la nota de contabilidad: el censo decide el eje `size` grepeando data-size
en el CSS, y el protocolo §7.4 ordena retirar esos bloques — todo componente
que lo aplique bien aparece «sin eje». Ya le pasa a sidebar y nav-tree.

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

@ -1,5 +1,11 @@
# CONTINUE — eje Theming «theme-reach» (handoff, act. 2026-08-23)
> **LO ÚLTIMO (2026-08-23, `85988785d`): `navigation-menu` 44 % → 100 %**, el
> primero del bloque **B1** de D-TH.4. 19 claves nuevas, una retirada
> (`indicator-x`, muerta), diff 0, R-5.4 43/44. **Y el guard cerraba el panel
> que medía** — detalle abajo, en «Lo que dejó `navigation-menu`». Global 65 %,
> **26 al 100 %**.
**Estado: EN EJECUCIÓN — F0 y F1 CERRADAS · F2 en curso, bloque F2-B CERRADO
con su revisión adversarial pasada (2026-08-22); la cola sigue abierta y
`text-gradient` ya está dentro (2026-08-22) y el **2026-08-23 entraron
@ -76,6 +82,49 @@ HTML crudo (prose) o cuyas partes no llevan atributo se mide sobre UN nodo y el
gate no significa nada. Los dos aceptan ya un selector extra
(`EXTRA_NODES` en la sonda, `extraNodes` en `COMPONENT_OVERRIDES`).
## LO QUE DEJÓ `navigation-menu` (2026-08-23) — léelo antes de seguir con B1
**Tres cosas que se repetirán en la cola, y cuestan una medición cada una:**
1. **Cuenta los nodos ANTES de creerte el gate — otra vez, y por una causa
nueva.** Las filas de su mega-menú son los `<a>` **desnudos del consumidor**,
que la receta estiliza por DESCENDENCIA
(`[data-navigation-menu-content] :is(a, …)`). Sonda y centinela filtran por
`data-{c}-*`: veían 10 nodos y **ninguno era el panel ni una fila** — 9 de
sus 19 knobs quedaban fuera del diff. Es la clase de `prose` y `onion-menu`,
pero por **composición del consumidor**. Los dos instrumentos aceptan ya el
selector extra para este componente, y el paso `open` de la sonda —que NO
honraba `EXTRA_NODES`— ahora sí.
2. **Un panel de HOVER lo cierra el propio guard.** Abre con `pointerenter` y
`pointerleave` PROGRAMA el cierre; el guard abre con clic y luego aparca el
puntero en (0,0), que es justo el gesto que lo cierra. Daba
**no-determinismo** (dos corridas del mismo código discrepando) y las **dos
caras del error a la vez**: falso negativo en los tokens de la fila y falso
POSITIVO en `content-link-padding-inline`, que leía «vivo» porque ensancha
el panel que sí se medía. Se arregla con `openBy: 'hover'`. **Regla: antes
de creer un «no effect», comprueba que la superficie seguía abierta.**
3. **`color` puede estar EN TRANSICIÓN.** Forzar `data-disabled` y leer en el
acto devuelve el valor VIEJO: tres diagnósticos falsos («ni el inline lo
mueve») hasta congelar. Es la trampa del cuentagotas del color-picker, en
otro componente y sobre otra propiedad. **Toda medición a mano congela
`transition` — el guard ya lo hace, tu script de un solo uso no.**
**Y dos de doctrina:**
- **El catálogo decide el nombre, no la §4.** Aquí falló de CINCO maneras (las
cuatro conocidas más una nueva: un aviso de capa compartida disparado por
**homonimia** — `menu-indicator` es el check de los CheckboxItem, no el
subrayado de esta barra). Contar en `base.ts` resolvió los 19 nombres.
- **Un nombre de parte que existe en OTRO sitio del mismo componente miente.**
Los gemelos llaman `item-*` a la fila del panel; aquí `item` es el `<li>` de
la barra y el `Link` de barra viste el cromo del trigger, así que ni `item-*`
ni `link-*` valen: `content-link-*` nombra el nodo por donde vive.
**Contabilidad**: el censo decide el eje `size` grepeando `data-size` en el CSS,
y el protocolo §7.4 ORDENA retirar esos bloques — así que **todo componente que
aplique bien el protocolo aparece «sin eje `size`»**. Ya le pasa a `sidebar`,
`nav-tree` y ahora a `navigation-menu`. Registrado en §13; no es deuda.
## LO PRIMERO AL ENTRAR (cinco minutos, en este orden)
1. **Comprueba que el suelo no se ha movido**:
@ -291,7 +340,13 @@ Lo que hay que llevarse de aquí:
| `chronos` | 245 (1 %) | el segundo mayor; sin abrir |
| `proof-of-human` | 95 (15 %) | escena de tono fijo firmada; lo demás son hooks de clase (eje aparte) |
| `prose` | 74 (1 %) | su superficie es la capa tipográfica: mismo caso que chart, un piso más arriba |
| `nav-tree` · `banner` · … | varios | ver el censo, `reach < 20 %` = 17 |
| `nav-tree` · `banner` · … | varios | ver el censo, `reach < 20 %` = 12 |
**Cerrado el 2026-08-23**: `navigation-menu` (44 % → 100 %). Lo que queda de B1
en la lista del PLAN ya está hecho o adjudicado; el siguiente por alcance entre
los medibles y sin bloqueo es `waveform` (55 %) / `color-field` (56 %), y el
mayor no bloqueado sigue siendo `chronos` (1 %, carril WIP de D-TH.3, tiempo =
el ÚLTIMO de D-TH.4).
`avatar` ya está al **75 %** y `knob` al 75 % (ambos hechos). `heading` /
`text` / `display` son primitivos tipográficos: su superficie es `--style-*` y

@ -478,6 +478,39 @@ devuelve el estilo del ELEMENTO.
## 8. Registro
- 2026-08-23 — **`navigation-menu` 44 % → 100 %** (`85988785d`), bloque B1.
Contrato 26 → 44 claves: **19 nuevas y UNA retirada**. Diff 0 sobre 2.752
valores en 8 estados; R-5.4 43/44 con una adjudicación.
**Los nombres los dio el catálogo**: los gemelos cerrados el mismo día
(`dropdown-menu`, `context-menu`) para `content-{min-width,padding,radius,fg}`
y `chevron-{size,stroke}`; `accordion` para `trigger-font-family` y
`disabled-trigger-fg`. Las CUATRO recetas que declaran un chevron lo
dimensionan con un literal — un glifo no es un paso de la escala de espacio —,
y al revés el subrayado: su `2px` ES `--border-width-medium`.
**La §4 generada falla de CINCO maneras, una nueva**: llamaba `trigger-width`
/ `trigger-height` al CHEVRON (colisionando con la altura del control, que ya
existe), fundía dos nodos en `content-radius`, cruzaba `content-padding-*`
(era de la FILA) y llamaba `content-width` a un `min-inline-size` — y abría
exigiendo consumir la capa `menu-indicator`, que es **homonimia**: esa capa es
el check de los CheckboxItem, no el subrayado de esta barra.
**Las filas del panel no son `item-` ni `link-`**: aquí `item` es el `<li>` de
la barra y el `Link` de barra viste el cromo del trigger, así que esos nombres
prometerían un nodo que no alcanzan. `content-link-*` nombra el nodo por donde
vive. **El privado era una ESCALA** (tres fuentes por talla), y sube al TSC.
**`indicator-x` era declaración muerta** — soma escribe el rect inline y la
receta lee sólo `-w`/`-h`; retirada, 0 diffs.
**El instrumento, dos cegueras y una trampa** (§13): sonda y centinela no
veían el panel ni sus filas (los `<a>` desnudos del consumidor: 10 nodos y
ninguno era el panel — 9 de 19 knobs fuera del diff); **el guard cerraba el
panel que medía** (abre por `pointerenter`, y el aparcado del puntero en (0,0)
dispara el cierre) dando falso negativo Y falso positivo a la vez; y `color`
está EN TRANSICIÓN en esta parte, así que forzar `data-disabled` y leer en el
acto devuelve el valor viejo — la trampa del cuentagotas, en otro componente.
- 2026-08-23 — **`audio-player` 37 % → 56 %** (3 claves) **y el instrumento
medía CERO nodos**. El 44 % restante es préstamo con dueño (ocho filas
`--media-player-*`): es la piel de audio de ese chasis y se tema en su ficha.

Loading…
Cancel
Save

Powered by TurnKey Linux.