From 082b66232aa8b9f714be157d282f7c07470ed7a6 Mon Sep 17 00:00:00 2001 From: dev Date: Sat, 11 Jul 2026 17:28:54 +0200 Subject: [PATCH] =?UTF-8?q?docs(process):=20SEM-4=20COMPLETO=20=E2=80=94?= =?UTF-8?q?=20D.6=20ya=20estaba=20vivo=20(registro=20reconciliado)=20+=20D?= =?UTF-8?q?.2=20descartado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- docs/decisions/book-deviations.md | 22 +++++++-- .../continue-cleanroom-fixes-2026-07.md | 48 ++++++++++++------- 2 files changed, 50 insertions(+), 20 deletions(-) diff --git a/docs/decisions/book-deviations.md b/docs/decisions/book-deviations.md index 250a1a0ec..435ad63ca 100644 --- a/docs/decisions/book-deviations.md +++ b/docs/decisions/book-deviations.md @@ -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. diff --git a/docs/process/continue-cleanroom-fixes-2026-07.md b/docs/process/continue-cleanroom-fixes-2026-07.md index 3124025dc..3726c1e8e 100644 --- a/docs/process/continue-cleanroom-fixes-2026-07.md +++ b/docs/process/continue-cleanroom-fixes-2026-07.md @@ -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)