- book-deviations: los caveats de D.6 (emisión dormida + branch-vs-item) marcados
RESUELTOS con verificación en vivo 2026-07-12 (los 6 providers emiten; packs con
onBranch/onRow casan con los targets reales) — el párrafo stale fue citado por la
clean-room como evidencia de dormancia: lección anotada (el registro se actualiza
en el mismo pase que el cableado). D.11: párrafo de pickers actualizado al cierre
real (delegado closeWith→dismissWith, b55ca6ee).
- continue-cleanroom: SEM-4 sesión 2 cerrada por verificación (stamps
open·emerge / commit-select·commit·affirm en vivo); D.2 (flag emission)
DESCARTADO — el gap que auditaba ya no existe y el check estático sería frágil
(Simplicity First). Arranque siguiente = cola F4 restante (THM-2 diseño universal ·
media-player Batch-4 · hotspots THM-4 · F4-D).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- **emerge.close (menús, collapse)**: `emerge.exit.soft` (gain 0.05, descending) — disciplina de dirección compartida con dialog/drawer/popover.
- **commit.select (item de menú, nodo de árbol)**: `form.commit.subtle` (gain 0.03) + `tap` leve. Más sobrio que radio-group porque la cascada típica es "menú cierra + item commit + nueva superficie aparece" — tres señales en milisegundos, hay que repartir intensidad.
- **Coherencia**: dropdown-menu y context-menu comparten firma idéntica (el usuario no debe aprender dos "sonidos de menú"). Tree-view y tree-grid idem. Menubar y navigation-menu se quedan en solo `commit.subtle` porque no tienen evento de open/close declarado en el morfo (la apertura es de un dropdown adyacente).
- **Caveat (`tree-view` / `tree-grid`)**: el morfo declara `target: v.partRef('item')` para `emerge-expand` / `emerge-collapse`, pero a nivel DOM las branches usan `data-tree-view-branch`, no `data-tree-view-item`. Cuando soma cablee la emisión, hay que verificar dónde aterriza el `data-event-*`; si va a branch, el pack necesita usar `branch` en el selector. Anotación para auditoría soma.
- **Caveat (emisión soma)**: a fecha de este commit, los 6 morfos NO emiten vía `runtime.trigger` (búsqueda en `src/uix/soma/components/*/`). Las cascades del pack son correctas contra el contrato morfo pero quedan dormantes hasta que soma las cablee. Documentado como follow-up sin urgencia.
`commit-select`). Verificado en vivo: stamps `open · emerge · active` y
`commit-select · commit · affirm` en el navegador. Este párrafo quedó STALE varias
semanas y una auditoría clean-room (2026-07-10) lo citó como evidencia de dormancia —
lección: el registro se actualiza EN EL MISMO PASE que el cableado.
### D.7 Sonido canónico y samples
@ -670,7 +679,14 @@ Detalle del refactor:
**Resultado del rollout polymorphic completo**:
- **3 overlays** (Dialog / Drawer / Popover): polymorphic close cabledado al runtime (providers disparan vía `dismissWith`).
- **5 pickers** (color / date / date-range / time / time-range): polymorphic close declarado en morfos, providers aún no cabledados (toggle de `opts.open` directo, sin trigger). Migración futura del provider para que use `runtime.trigger('close', { semantic })` queda abierta.
- **5 pickers** (color / date / date-range / time / time-range) — **CERRADO 2026-07-12
(SEM-4, `b55ca6ee`)**: tras la reconciliación de-dialoged (2026-06-27) sus morfos ya no
declaran `close` propio (`expression: 'delegated'` — la firma pertenece al Popover
compuesto); el cierre programático (commit/cancel/select-close) ahora enruta por causa