Firmado por el autor tras C («arregla también /blocks»). El shell de `/blocks`
(`web/routes/blocks/+layout@.svelte`) y el boot de cada preview
(`web/routes/blocks/_lib/BootUix.svelte`) mantenían su propio `$state` de modo
y lo pasaban a eidos por `modeSource` (muerto en f875f60b9), así que su toggle
había dejado de mover a eidos — y como el sobre `uix.prefs` es compartido con
`/uix`, la divergencia estaba a UN CLIC del toggle de docs (adversarial C, R-1).
Además implementaban la DENSIDAD a mano (`:root{--density-space-scale…}` por
`uix.dom.writeStyle`) mientras eidos ya estampa `data-density` desde prefs y la
hoja generada aplica las escalas: un segundo motor de densidad.
- Shell: `mode` y `density` DERIVADOS de las ranuras de `uix.prefs`; los toggles
escriben `setIntent`; mueren `modeSource`, `modeListeners`, `DENSITY_SCALES` y
el `writeStyle`; migración ÚNICA del blob `uix-blocks-prefs` al sobre de prefs
(detalle en el cuerpo del informe / handoff).
- Preview (`BootUix`): la raíz nace con `intent` desde la URL (`mode`, `language`,
`direction`, `density`) y `storage: false` — la preview es una PROYECCIÓN de su
URL y ya no hidrata ni escribe el sobre compartido del documento padre
(contaminación cruzada latente, cerrada).
- `BlockDemo`: prosa que citaba `modeSource` corregida; los ejes de la URL se leen
de prefs.
- Ledger `check-debt.ts`: desaparecen las dos entradas de `blocks` (solo mengua).
Verificado en Chrome por el coordinador (SO oscuro sin blob ⇒ `/blocks`
coherente; toggles de modo y densidad mueven `<html data-mode/data-density>` y
el wrapper; preview `?mode=light` clara con el shell en oscuro sin tocar el sobre).
Adversarial Opus independiente (informe en el handoff). Constructor + adversarial
Opus 5; la sesión coordina.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>