Los tres salieron de la adjudicacion docs<->codigo del 2026-08-11, y los tres tienen la misma forma: el morfo declara el evento, el boton esta en pantalla, y entre medias no hay nadie. D1 · AlertDialog era mudo. Action y Cancel llamaban a `dialog.handleClose()`, que solo voltea `open` y nunca alcanza `dismissWith`. Medido: pulsar cualquiera de los dos sellaba unicamente el `contact-activate` del Button compuesto, `data-last-action` quedaba null y no habia `emerge-close`. Escape, que si pasa por `dismissWith`, tenia firma — el teclado era expresivo y los botones no, y confirmar una accion destructiva era indistinguible de cancelarla. Ahora: Action cierra con causa `save`, Cancel con `cancel`. Y `dismissWith` gana un `opts.intent`: la causa es vocabulario cerrado —QUE paso— pero el peso es por instancia, porque confirmar «guardar cambios» y confirmar «borrar la cuenta» son la misma causa con distintas consecuencias. Es el eje que el morfo ya liga en `emerge-open` con `intent.fromProp`, asi que la aparicion y la salida toman el tono del mismo sitio. Medido: Action → commit/risk/saved, Cancel → emerge/cancelled. D3 · El boton Clear era mudo en los cinco pickers. `commit-reset` declarado y jamas disparado: `clear()` solo asignaba el valor. El hermano generico (`picker-provider.svelte.ts:201`) ya traia la forma correcta. Y al empezar a disparar salio una segunda averia debajo, invisible mientras el evento no existia: date-picker y date-range-picker apuntaban `commit-reset` a la parte `calendar`, que NINGUN componente registra en el runtime (solo `provider` lo esta). El destino no resolvia y el emit se rechazaba en silencio. Retargeteados al `provider`, como color-picker — el terminal se sella donde vive el valor, y lo que se borro es el valor del picker, no el del calendario que lo mostraba. Una parte declarada sin registro en runtime es un destino inalcanzable. D4 · El swatch y el eyedropper del ColorPicker commiteaban en silencio, pese a que el morfo lo promete con todas las letras («fires on pointer release (area thumb / channel slider / swatch click / eyedropper pick)») y el pack de sema lo repite. Solo el Area disparaba: `commitChange()` ejecuta el callback del consumidor, que no es la senal perceptual. Medido con raton real y rAF vivo: los cinco Clear disparan `commit-reset` (commit/neutral) y el swatch dispara `commit-set` sobre el provider. El eyedropper NO es medible aqui — la API `EyeDropper` no existe en headless — pero su codigo es la misma linea en el mismo sitio. check en su linea base con 0 errores nuevos · 522 tests del alcance en verde · docs:check 0/0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>alpha-0.1-dir-prefs
parent
6f42eebfe8
commit
f4e414e2ee
Loading…
Reference in new issue