docs(theming): registro post-B' - cinco hechos verificados entran al expediente

Pase de registro de lo que la firma B' descubrio y no arreglo (pre-existente,
simetrico antes/despues). Seis claims de agentes -> verificacion adversarial
independiente -> DOS murieron (label-inline era diseno firmado de la seccion 43;
drag-drop refutado: su forward vive y alcanza) y UNO se fusiono (el color de
`code` lo gana `[data-uix-docs] code` (0,1,1) - ES la firma pendiente 5.2 del
harness, que se ENSANCHA de radio/padding a la tinta; medido por CDP, solo dos
reglas declaran color).

Entran en next-features 13 / CONTINUE:
- El detector STALE del centinela es CIEGO a los patrones (filtra `k in ledger`,
  solo exactas): 207 claves revividas por B' y ni un aviso. Arreglo minimo
  anotado; clase re-verificar-ledger.
- El guard no mide tono+estado a la vez (raiz de TONE_UNREACHED): tono solo en
  el paso estatico, hover sin tono, solo `toggle` declara eje de estado,
  switch/button sin entrada en COMPONENT_OVERRIDES (48).
- Tres huecos de la sonda: el `open` de editable muere por CLIC sobre inputs
  ocultos (no por el localizador), button sin analogo de barrido de variantes,
  y NUEVE de las 33 escalas atadas a rol (purple slate indigo gray teal green
  orange red plum) - `plum` ES `loss`; 24 libres como reserva de sondeo.
- Divergencia de familia: `label` es el unico primitivo de tinta sin el paso
  `on-solid` (tipo y runtime, auto-consistente); decision pendiente.

Citas contrastadas contra el arbol (cuatro corregidas del verificador, incluida
la deriva de +10 lineas del diff ajeno del sentinel). docs-check 0/0 sobre 815.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
alpha-0.1-background
dev 2 months ago
parent 8244cb4a62
commit e4fa616e5d

@ -1536,6 +1536,15 @@ Lo que `chart` destapó (2026-08-22):
dimensionan por `-height-{k}`, uno por `-min-block-size-{k}`) y la tabla del dimensionan por `-height-{k}`, uno por `-min-block-size-{k}`) y la tabla del
propio censo, que ya mapea `min-block-size → height`. Extender R-5.3 con esa propio censo, que ya mapea `min-block-size → height`. Extender R-5.3 con esa
tabla —propiedad → ranura— cierra la clase entera. tabla —propiedad → ranura— cierra la clase entera.
- **`label` es el ÚNICO primitivo de tinta sin el paso `'on-solid'`** (verificado
2026-08-24). Lo omiten a la vez SU TIPO (`label/types.ts:9`:
`ComponentColorProp | 'muted' | 'disabled'`) y su runtime (`label.svelte:38`),
así que es **auto-consistente** —no es un bug—, mientras `text.svelte:54` y
`heading.svelte:54` sí lo llevan y §43 describe el eje de la familia CON él.
Tampoco lo salva el «pues compila»: eso era el brazo de CSS crudo del tipo
abierto, idéntico en los tres. Es una **decisión pendiente**, y sólo caben dos:
o `label` gana el paso y la familia queda pareja, o se documenta la omisión
con su razón.
- **⚠⚠ EL GUARD TIENE FALSOS POSITIVOS: escribe el centinela en el `style` INLINE - **⚠⚠ EL GUARD TIENE FALSOS POSITIVOS: escribe el centinela en el `style` INLINE
de cada nodo** (medido 2026-08-23). `staticPass` escribe el token en de cada nodo** (medido 2026-08-23). `staticPass` escribe el token en
`documentElement` **y en todos los nodos del componente**, y ahí es donde vive `documentElement` **y en todos los nodos del componente**, y ahí es donde vive
@ -1585,6 +1594,62 @@ Lo que `chart` destapó (2026-08-22):
mask cambia (`at 50% 35%` → `at 11% 50%`). Añadir `maskImage` a la lista de mask cambia (`at 50% 35%` → `at 11% 50%`). Añadir `maskImage` a la lista de
propiedades del guard es una línea, pero toca el instrumento de TODOS: entra propiedades del guard es una línea, pero toca el instrumento de TODOS: entra
con su re-verificación de los componentes con ledger. con su re-verificación de los componentes con ledger.
- **El detector STALE del centinela es CIEGO a las adjudicaciones por PATRÓN**
(verificado 2026-08-24 sobre el código, tras B′). `theming-sentinel.ts:1140-1141`
filtran `k in ledger`, es decir **sólo las excepciones EXACTAS**. Las cubiertas
por `SENTINEL_PATTERN_EXCEPTIONS` sí entran en `reasonFor` (`:1129`) para
adjudicar un muerto, pero **nunca en `stale`**: una clave de patrón que pasa a
viva no dispara ni un aviso. **El coste ya está pagado**: en B′ revivieron 207
claves y el guard no dijo nada — el estrechamiento del ledger hubo que hacerlo
comparando a mano contra las 13 entradas. Arreglo mínimo: filtrar por
`reasonFor(k) !== null` en vez de `k in ledger`, e imprimir QUÉ patrón la
cubría (si no, el aviso no dice dónde ir). Es de la clase re-verificar-ledger
—tocar el guard obliga a re-pasar el ledger entero—, así que firma pequeña,
como las otras del instrumento.
- **El guard no sabe medir TONO y ESTADO a la vez** (verificado 2026-08-24; es la
raíz de `TONE_UNREACHED`, la razón nueva del ledger). El estampado del tono
vive **sólo** en el paso estático (`theming-sentinel.ts:913`, `TONES.find(...)`
→ `setAttribute('data-color', tone)`); el paso de hover (`:999`) barre los ejes
de `sweepAttr` pero **no estampa tono**. Y `sweepAttr` puede forzar un estado,
pero de los **48** componentes de `COMPONENT_OVERRIDES` sólo `toggle` declara
un eje de estado (`:635`, `data-state: off|on`) — `switch` y `button` **no
tienen entrada**. Medido: la ficha de `switch` monta **1 nodo `unchecked`** y
todas sus ranuras de paleta cuelgan de `[data-state='checked']`; la de `button`
monta **1 nodo sólido**. Consecuencia: **toda clave de tono cuya ranura esté
detrás de un estado o de un hover se mide A MANO**, y por eso son 146 las que
siguen adjudicadas tras B′ y no cero. Arreglo: estampar el tono también en el
paso de hover, y dar eje de estado a los componentes cuyas ranuras lo exigen.
- **Tres huecos de la SONDA** (`scripts/__theming-probe.ts`, verificados
2026-08-24), independientes entre sí:
1. **El pase `open` de `editable` no muere por el localizador: muere por el
CLIC.** El localizador (`:324-326`) SÍ casa `[data-editable-input]` (3
nodos), pero esos inputs están `hidden` / 0×0, así que
`trigger.click({ timeout: 2000 })` (`:330`) expira **dentro del `catch`
vacío** (`:359`) y el pase se pierde **EN SILENCIO**. La puerta real es
`[data-editable-preview]` + foco, que el CENTINELA ya declara
(`theming-sentinel.ts:214-221`: `openBy: 'focus'`, `openWith`) y la sonda
no. Dos arreglos, y conviene hacer los dos: copiar la puerta, y que el
`catch` **avise** en vez de tragar (un pase perdido en silencio es un 0/N
que nadie investiga).
2. **La sonda no tiene análogo del barrido de variantes.** `DEMO_VARIANTS`
(`:139-202`, **10 claves**: avatar, audio-player, text-gradient, badge,
image-picker, search-field, chat-composer, chat-message, chat-typing, toast)
**TRUECA de demo, no barre**: mide un estado en lugar de otro. Por eso
`button`, que monta un solo botón sólido, no tiene sondeadas sus otras
variantes. Es el hermano exacto del hueco del guard de arriba.
3. **Dos alias de escala hacen sondas DÉBILES.** `affirm: 'teal'`
(`lib/config-types.ts:95` y `lib/themes/base.ts:40`): estampar `teal` como
escala «cruda» computa **idéntico** a estampar el rol `affirm` en los 10
slots, así que una sonda que crea estar probando la vía de escala puede
estar midiendo la de rol. Y su hermana, medida: `risk: 'orange'`
(`themes/base.ts:42`), de donde **`risk ≡ orange`** y **`risk ≠ amber`** —
ojo, que la convención canónica del libro nombra `amber` mientras el tema
base mapea `orange`. **No son dos casos: son NUEVE de las 33 escalas**, las
que el tema base ata a un rol — `purple` (primary), `slate` (secondary),
`indigo` (tertiary), `gray` (neutral), `teal` (affirm), `green` (fulfill),
`orange` (risk), `red` (threat) y `plum` (loss). Para barridos futuros: usar
una escala sonda de las **24 libres** (`fuchsia`, `steel`, `sand`… ) y NO
`plum`, que a primera vista parece neutra y es el rol `loss`.
- **Montar MÁS capas puede medir MENOS** (medido 2026-08-23 en `background`). - **Montar MÁS capas puede medir MENOS** (medido 2026-08-23 en `background`).
Al enseñar al guard a encender las capas opt-in del componente, añadir el foco Al enseñar al guard a encender las capas opt-in del componente, añadir el foco
puntual, la velocidad de paralaje y la profundidad hizo BAJAR la corrida de 17 puntual, la velocidad de paralaje y la profundidad hizo BAJAR la corrida de 17

@ -106,6 +106,19 @@ guarda `active-eidos-config.test.ts` · ledger `scripts/theming-sentinel-excepti
`gradient-picker` (36), `emoji-picker` (3). **Salida barata ya probada**: `gradient-picker` (36), `emoji-picker` (3). **Salida barata ya probada**:
`toolbar` cede el cromo al `Button` y no pierde ni una clave, porque su `toolbar` cede el cromo al `Button` y no pierde ni una clave, porque su
receta no escribe la regla. receta no escribe la regla.
**Se ENSANCHA a la TINTA (verificado 2026-08-24)**: la misma firma §5.2 del
harness cubre ya el `color` de `code`. Medido por CDP
(`getMatchedStylesForNode`): sobre `[data-code]` **sólo DOS reglas declaran
`color`** — `[data-code]` (0,1,0) y `[data-uix-docs] code` (0,1,1,
`web/routes/uix/uix.css:792`, `var(--uix-text)` = `rgb(24,24,27)`) — y gana
el harness. Con `data-color='risk'` estampado, `--_code-palette-text` y
`--_code-color` SÍ se mueven, pero `color` no: la cadena del componente
funciona y la pisa la del harness al final. **No es entrada nueva**: es el
mismo expediente que el ledger ya cita para `code.radius`
(`theming-sentinel-exceptions.ts:665`) y `code-block.pre-padding` (`:676`),
y que reaparece por tercera vez en `prose.code-bg` / `code-radius` /
`code-font-family` (`:862-865`). Lo que cambia es el ALCANCE de la firma:
de radio / padding / tipografía **a incluir también la tinta**.
3. **`file-upload` barre DESCENDIENTES** (`[data-file-upload] [data-disabled]`) 3. **`file-upload` barre DESCENDIENTES** (`[data-file-upload] [data-disabled]`)
y se come el token de sus huéspedes. Única ocurrencia en 162 recetas. y se come el token de sus huéspedes. Única ocurrencia en 162 recetas.
4. **Las cuatro claves de `avatar` fuera de gramática** (`*-color-custom*`, 4. **Las cuatro claves de `avatar` fuera de gramática** (`*-color-custom*`,

Loading…
Cancel
Save

Powered by TurnKey Linux.