docs(theming): la mitad gratis EJECUTADA - queda la GRANDE

Anota en next-features SS13 la ejecucion de la firma de instrumento
(codemod IIFE + huecos de la sonda) con sus numeros y las deudas nuevas que
la verificacion adversarial midio (search-field clear-trigger, asimetria de
escenario, alreadyOpen, tres lectores de base.ts), y reescribe el handoff:
la primera de las dos firmas de instrumento esta ejecutada (047464389); lo
primero del eje pasa a ser la GRANDE (cegueras 6+1+3+2, barridos S1-S3).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
alpha-0.1-background
dev 1 month ago
parent 0474643895
commit 5fb2db027b

@ -1774,7 +1774,14 @@ Lo que `chart` destapó (2026-08-22):
(`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).
que nadie investiga). **EJECUTADO 2026-08-25 («la mitad gratis»)**: la
sonda importa `COMPONENT_OVERRIDES` del centinela (exportada con guarda
de entrypoint — con `realpathSync`, o el guard muere a través de un
junction) y habla su vocabulario entero (`prepareWith` / `openBy` /
`openWith` / `openMarker`); el `catch` AVISA por stderr distinguiendo «no
hay trigger» de «el gesto falló». `editable` registra ya bloque `open`
(25 filas, 6 con `data-editing`; dos corridas sobre código idéntico = 0
diffs) y `card` sigue a 0 diffs en sus 7 bloques pre-firma.
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)
@ -1794,6 +1801,37 @@ Lo que `chart` destapó (2026-08-22):
`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`.
**EJECUTADO 2026-08-25**: `PROBE_ROLE_BOUND_SCALES` (las 9 → su rol) +
`PROBE_SAFE_SCALES` (las 24) + `assertProbeSafeScale()` en la sonda, con
la discrepancia `risk: amber` (config-types) vs `orange` (tema base)
documentada en el comentario. Guardia sin usos inventados: hoy nada en la
sonda estampa una escala; las 33 verificadas contra `PALETTE_SCALES`
(`lib/types.ts:232-270`), 0 sobras, 0 faltas.
- **Lo que «la mitad gratis» añadió a la sonda, y lo que abrió (2026-08-25).**
Ganó el pase de **FOCO** que la cabecera prometía desde siempre sin que nada
llamara a `.focus()` (recarga propia — el bucle de hover deja el puntero
aparcado y una regla `:hover` pesa más; mide foco PROGRAMÁTICO, `:focus`,
nunca mezclado con gestos), un pase **`disabled`** como bloque APARTE y
ÚLTIMO de la corrida (la trampa «montar más mide menos»: la regla de
file-upload apaga `pointer-events` del subárbol), y **`UIX_DEV_URL`** en
sonda y centinela (adiós el `:5173` clavado; el argumento explícito sigue
ganando). Deudas nuevas, medidas por la verificación adversarial de la
firma: (i) **`search-field` pierde `[data-search-field-clear-trigger]` en el
pase `open`** — la guarda «`prepareWith` sólo corre sin fila en
`DEMO_VARIANTS`» lo salta (su fila sólo clica el chip de loading) y el
centinela documenta que el ORDEN importa (el clear ha de venir ANTES);
cobertura, no regresión — antes la sonda no corría `prepareWith` en
absoluto. (ii) En los seis con `prepareWith` y sin fila (`editable`,
`rating-group`, `toolbar`, `form`, `progress`, `background`) el bloque
`open` monta capas que `rest`/`size`/`hover`/`focus`/`disabled` no ven —
comparar bloques entre sí no es comparar lo mismo. (iii) La sonda no tiene
el cortocircuito `alreadyOpen` del centinela y, tras un `openMarker`
fallido, prueba el siguiente opener sobre página ya ensuciada (no se
manifestó en lo corrido). Y un dato para la GRANDE: el no-determinismo de
`chat-message` quedó ACOTADO al bloque `rest` de la sonda (13 vs 16 nodos —
los chips de `DEMO_VARIANTS` sin cuajar al medir; `size/open/hover/focus/
disabled` dan 16/24/11/11/16 con 0 diffs), coherente con el `prepareWith`
mudo del guard que la ceguera 6 arregla.
- **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
puntual, la velocidad de paralaje y la profundidad hizo BAJAR la corrida de 17
@ -2178,7 +2216,21 @@ Lo que ABRE la firma «el árbol ARIA de `tags-input` habla UN patrón» (2026-0
bloqueo, y hoy sin urgencia (el censo `--names` da 0 desviadas, así que no
queda cola para el codemod); pero si vuelve a haber cola, esto se arregla
ANTES — son unas líneas, con el mismo dedentado que censo y centinela ya
tienen.
tienen. **EJECUTADA 2026-08-25 (firma «la mitad gratis»)**: `blocks()`
devuelve `{name, at, end, depth}` con offsets REALES del fichero (dedentar
virtualmente rompería el pase A, que edita por rango); la IIFE acota su
región al `return {`…`};` con `depth: 3` y una guarda que LANZA si no lo
encuentra. Los muros 2-3 leen por fin las **97** claves de avatar (86
públicas + 11 privadas — el codemod ve las privadas a propósito) y el pase A
renombra a `\t{depth}`: verificado en laboratorio sobre copias (duplicado
inyectado a 3 tabs DETECTADO, renombrado de una clave de avatar = 1 línea, y
la frontera `-hover` intacta). La vía de carga **SE QUEDA en tsx**: la
premisa «el censo corre con node pelado» era falsa — `theming-census`
importa `../src/uix/morfo/compile` SIN extensión y todo `src/uix/morfo` está
escrito así; alinear la vía es un barrido de `src/`, no del codemod. Queda
vivo el riesgo hermano: **TRES lectores independientes** de la estructura de
`base.ts` (este codemod, `theming-census.ts recipeBlock()` y el centinela) —
la próxima forma nueva de bloque habrá que enseñarla tres veces.
- **El centinela elige el VALOR de sonda por el NOMBRE de la clave, y D-TH.6
fabrica nombres que ese chequeo no reconoce** (hallazgo propio del ejecutor
E-avatar, 2026-08-25). `sentinelFor()` (`theming-sentinel.ts:692`) es una

@ -18,14 +18,9 @@ expedientes de §13: `d5a27b87e` (árbol ARIA de tags-input, cierra F-1) ·
### Lo PRIMERO mañana: dos firmas de INSTRUMENTO, en este orden
1. **«La mitad gratis» — PRESENTADA AL AUTOR Y SIN FIRMAR** (la sesión cerró
antes). Coste de ledger CERO medido: el codemod ciego a IIFE **y sus dos
hermanos** (`duplicateKeys` y los muros 2-3 buscan claves a DOS tabs — las
86 de avatar van a tres y nunca las han mirado) · la sonda (la puerta de
`editable` que el centinela ya declara · el paso `disabled` que file-upload
destapó · la URL `:5173` clavada en la sonda **y en el centinela `:716`** ·
las 9 escalas atadas a rol documentadas · el pase de FOCO que la cabecera
promete y **no existe**). Expediente: scratchpad de la sesión
1. ~~**«La mitad gratis»**~~ — **✅ FIRMADA Y EJECUTADA 2026-08-25**
(`047464389`; ver §«FIRMA EJECUTADA — la mitad gratis» justo abajo).
Expediente original: scratchpad de la sesión
`6314e22b…/scratchpad/bprime/exped/va/informe.md` (1.019 líneas).
2. **La GRANDE: cuatro cegueras + TRES BARRIDOS escalonados.** VA la
dimensionó con 13 corridas cronometradas: `prepareWith` falla EN SILENCIO
@ -39,6 +34,49 @@ expedientes de §13: `d5a27b87e` (árbol ARIA de tags-input, cierra F-1) ·
entradas de ledger a mano. ⚠ NO fusionar S2 y S3: 102 claves caen en las
dos clases y perderían atribución.
### FIRMA EJECUTADA (2026-08-25) — «la mitad gratis»: cegueras 4 y 5, coste de ledger CERO
**Qué se firmó** (`047464389`): las dos piezas del expediente VA que NO
compartían el coste caro — el codemod ciego a la IIFE con sus dos hermanos, y
los cinco huecos de la sonda más el sexto propio (el pase de FOCO prometido e
inexistente). Tres ficheros, **ni una entrada del ledger**. Ejecutada por
cuatro agentes (tres constructores + uno ADVERSARIAL con mandato de refutar),
con bases capturadas ANTES de editar.
**Los números**: centinela `label` 1/2 y `switch` 27/52 **byte a byte
idénticos** a las bases pre-firma; sonda de `card` **0 diffs en sus 7 bloques
viejos**; `editable` estrena bloque `open` (25 filas, 6 con `data-editing`) y
dos corridas sobre código idéntico dan **0 diffs en TODOS los bloques**;
`menubar` abre por la entrada del centinela (6 nodos → 7, con el panel) y
`chat-message` 24 filas × 2 corridas = 0 diffs; codemod 145/145 bloques,
avatar `depth 3` con **97** claves (86 públicas + 11 privadas), laboratorio
sobre copias (duplicado inyectado DETECTADO, renombrado = 1 línea); importar
el centinela: 0,85 s sin navegador.
**Las decisiones que deja escritas**:
- `COMPONENT_OVERRIDES` es **UNA tabla**: la sonda la importa y `OPEN_TRIGGER`
se poda de sus copias literales. La guarda de entrypoint lleva
`realpathSync` — hallazgo del adversarial: sin el realpath muere a través de
un junction (exit 0 sin inspeccionar nada), y este repo usa worktrees con
junctions.
- La vía de carga del codemod **SE QUEDA en tsx**: «el censo corre con node
pelado» era FALSO (todo `src/uix/morfo` importa sin extensión).
- `prepareWith` en la sonda sólo corre sin fila en `DEMO_VARIANTS` (re-clicar
APAGA los checkboxes que `prepare()` ya encendió) — y eso deja a la vista la
deuda de `search-field` (§13).
- El no-determinismo de `chat-message` quedó ACOTADO al bloque `rest` de la
sonda (13 vs 16 nodos, chips sin cuajar al medir) — dato para la GRANDE.
**Lo que quedó fuera, con su registro en §13**: el barrido de variantes de la
sonda (ensanche diferido por el propio expediente) · el clear-trigger de
`search-field` en el pase `open` · la asimetría de escenario de los seis con
`prepareWith` sin fila · el cortocircuito `alreadyOpen` que la sonda no tiene ·
y **TRES lectores independientes** de la estructura de `base.ts` (codemod,
censo, centinela — la próxima forma nueva se enseña tres veces). El `catch`
del `prepareWith` del CENTINELA sigue MUDO **a propósito**: es la ceguera 6,
S1 de la GRANDE.
### Después de instrumento — el CIERRE del eje
Deuda B (`audio-player` sin README de eidos · `palabras` · `proof-of-human`,

Loading…
Cancel
Save

Powered by TurnKey Linux.