docs(process): SEM-4 COMPLETO — D.6 ya estaba vivo (registro reconciliado) + D.2 descartado

- 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>
menubar-v4-safe
dev 3 months ago
parent b55ca6eecb
commit 082b66232a

@ -328,8 +328,17 @@ type SemaExpressionMode = 'pack' | 'family-default' | 'delegated' | 'none';
- **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.
- **Caveat (`tree-view` / `tree-grid`) — RESUELTO (verificado 2026-07-12, SEM-4)**: la
emisión aterriza vía `fallbackTarget` en el elemento real (`branchEl` / `rowEl`) y los
packs construyen sus selectores con `onBranch` / `onRow` (`semaSelector(morfo,
'branch'|'row')`) — emisión y cascada casan de punta a punta.
- **Caveat (emisión soma) — RESUELTO (verificado 2026-07-12, SEM-4)**: los 6 providers
emiten vía `runtime.trigger` (dropdown/context: `open`/`close`/`commit-select`;
menubar/nav-menu: `commit-select`; trees: `emerge-expand`/`emerge-collapse` +
`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
vía `PickerShellHandle.setPopoverDismiss` → `popover.dismissWith('save'|'cancel')`
(delegado inyectado por el eidos PickerShell root; fallback raw para composiciones
headless). Verificado en vivo: Done → `close · commit · fulfill` · Cancel →
`close · emerge`.
- Único morfo con shape pre-polymorphic restante: el fixture sintético `prewriteFixtureMorfo` — vivo sólo para tests.
**API pública preservada** en todos: ningún cambio observable para el consumidor de los componentes.

@ -176,23 +176,37 @@
> sumó 6 morfos de texto — todos PASS) · suites pickers/popover verdes ·
> baseline propio 57 (+1 ajeno `text-blur.ts` de la sesión paralela).
## ⏭️ ARRANQUE PRÓXIMA SESIÓN → SEM-4 · SESIÓN 2 (menús/árboles + emission)
1. **D.6 — triggers de los 6 menús/árboles**: dropdown-menu y context-menu
(emerge open/close + commit select), tree-view y tree-grid
(emerge-expand/collapse — **verificar el caveat branch-vs-item**: el
morfo declara target 'item' pero el DOM usa `data-tree-view-branch`;
decidir dónde aterriza el stamp y ajustar pack o morfo), menubar y
navigation-menu (solo commit — sin open/close declarado, por diseño
D.6). Los packs YA están escritos y afinados; falta que los providers
emitan vía `runtime.trigger`.
2. **D.2 — flag `emission`** en el morfo (2-de-3: sema+auditoría) para que
"declarado pero no emitido" lo marque la máquina (A-3.x nueva o
extensión de vocab-check).
3. Verificación por stamps en navegador + gates completos.
Después: THM-2 (diseño del mecanismo universal de paleta) · media-player
Batch-4 · hotspots THM-4 · F4-D (menú GAP pendiente de scoping).
## SEM-4 · SESIÓN 2 ✅ CERRADA POR VERIFICACIÓN 2026-07-12 — D.6 ya estaba vivo
> **D.6 era otro falso positivo por registro stale** (como SEC-1 y parte de
> SOM-4): los 6 providers YA emiten vía `runtime.trigger` — dropdown/context
> (`open`/`close`/`commit-select` ×2), menubar/nav-menu (`commit-select`),
> trees (`emerge-expand`/`collapse` + `commit-select`) — y el caveat
> branch-vs-item estaba resuelto de punta a punta (emisión con
> `fallbackTarget: branchEl/rowEl` + packs con `onBranch`/`onRow`).
> **Verificado en vivo**: `open · emerge · active` y `commit-select ·
> commit · affirm` en dropdown-menu. El registro D.6/D.11 de
> book-deviations quedó RECONCILIADO (notas RESUELTO con fecha y lección:
> el registro se actualiza en el mismo pase que el cableado).
>
> **D.2 (flag `emission`) — ADJUDICADO: DESCARTAR.** Su propósito era hacer
> auditable la dormancia de D.6, que ya no existe; un check estático de
> emisión sería frágil (nombres dinámicos `trigger(eventName)`) y el flag
> sería feature especulativa sin consumidor (Simplicity First). Si una
> dormancia real reaparece, la lección anti-stale de arriba es la
> contramedida barata.
>
> Con esto **SEM-4 COMPLETO** (sesión 1 = pickers `b55ca6ee`; sesión 2 =
> verificación + reconciliación del registro).
## ⏭️ ARRANQUE PRÓXIMA SESIÓN → cola F4 restante
En orden sugerido: **THM-2** (sesión de diseño del mecanismo universal de
paleta — decisión ya tomada: cascada genérica `--palette-*` ~3-4 KB; migrar
button/toggle al slot genérico + convención de consumo + guards) ·
**media-player Batch-4** (renderProps, 35 hits/10 parts) · **quema de
hotspots THM-4** (lotes con dossier) · **F4-D** (menú GAP — pendiente de
scoping del usuario) · cascada-vs-firmas (diseño motion, cola lateral).
## (histórico) ARRANQUE F4 (iniciativas, cada una con decisión)

Loading…
Cancel
Save

Powered by TurnKey Linux.