You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/docs/process/CONTINUE-event-name-normali...

9.8 KiB

CONTINUE — normalización de nombres de evento

Handoff de PLAN-event-name-normalization.md. ✅ EL EJE ESTÁ CERRADO (f44d1486d) y su aceptación cumplida y medida.

⛔ Lo que sigue NO es este eje, y no se ejecuta desde aquí. Son cosas que el barrido destapó; cada una necesita su propia iniciativa y su propia puerta. Esta sección existe para que no se pierdan, no para que se hagan a goteo.

El 2026-08-12 se hizo exactamente eso y salió caro: la jornada se cerró a las 03:52, y de 13:59 a 20:43 la sesión siguió trabajando el ledger como si fuera el plan — months en cuatro calendarios, defaultElement en 28 partes, Home/End en tres componentes, y al final el borrado de la librería de sonido, que el autor revirtió (0d10b983e). Ninguno de esos pasos parece un salto; el desvío es que un handoff se leyó como backlog. El trabajo salió bien y verificado — no es el punto. El punto es que nadie decidió cambiar el objetivo.

0 · Estado en una línea

{familia}-{verbo}[-{matiz}] es ley: 256 eventos declarados, 256 con prefijo, 0 ambiguos, y la puerta está cerrada con un guard en validateMorfo más un barrido que se lo pasa a los 172 morfos del repo (components + internal + fixtures). Visto fallar antes de darlo por bueno.

Commits: 6f42eebfe (el eje) · f4e414e2e (D1·D3·D4) · f44d1486d (cierre: las dos mitades que el troceado por hunks dejó al otro lado del corte, y el barrido de catálogo).

Rama compartida alpha-0.1-dir-prefs: hay trabajo de otra sesión sin commitear en el árbol (A-85, consumerWins, aria-label en el bag). No lo barras.

1 · Lo que NO se toca desde aquí

Cada punto de esta sección pertenece a otra iniciativa o a una decisión del autor. Ninguno se ejecuta sin abrir la suya, con su plan y su puerta — y el que toque el eje de sonido empieza por CONTINUE-sound-engine.md, que es lo que no se hizo el 2026-08-12.

Punto Dueño
D10 · los 3 resolvers de gesto el eje de SONIDO CERRADO 2026-08-12: retirada firmada y ejecutada desde el eje (ledger §D10)
D13 · tooltip 3 de 3 mudo CONTINUE-sema-audit.md, que ya lo tipificó como contrato muerto
D13 · virtual-list/grid handle-scroll* vocabulario de MORFO: falta un emission: 'app' que declare «lo emite la app». No es cableado
D13 · gradient-picker.commit-reset CONTINUE-sema-audit.md §S-14 (1 de 6 verbos delegados)
D14 · el foco del teclado de chronos chronos. Es de foco, no de firma, y pide medición en navegador real
§1.2 · present-rise sobre el trigger decisión de diseño del autor
§2.2 · handle-drag-progress decisión de vocabulario contra docs/CANON.md §verbos

1.1 · Los 3 resolvers de gesto — D10

Ficha completa en AUDIT-docs-code-ledger.md §D10. Resumen: el cambio del 2026-08-06 dejó resolveHandleDragSound / resolveSliderDragSound / resolveSplitterDragSound sin llamador, y cinco documentos siguen describiéndolos como vigentes — incluido PLAN-sound-engine.md §4, donde son la columna «sema conserva» de la línea de corte con $sound.

¿Se retiran o se recablean? La tabla de corte hay que actualizarla en los dos casos. De esta decisión cuelgan también el homónimo SoundContour (5 sitios, propuesto GestureContour) y los dos comentarios rancios del splitter.

Firmada (2026-08-12): SE RETIRAN — ficha §D10 del ledger, que fija además un sexto sitio a adjudicar (sema.md §per-emit payload, que aún describía el payload de la era resolver). Y EJECUTADA el mismo día desde el eje (su handoff leído primero); el ledger §D10 lleva el detalle y los 8 sitios adjudicados.

1.2 · present-rise sobre el TRIGGER

Regresión medida durante F4, no arreglada. El sello de apertura de select / combobox / navigation-menu queda anclado al trigger con fill: forwards. La causa está diagnosticada: el dialecto partido (open pelado contra emerge-open) actuaba accidentalmente como filtro, y al unificar los nombres la firma alcanza sitios que antes se le escapaban. El eje de superficie perceptual (CONTINUE-perceptual-surface.md) tiene el contexto: un sello anclado al trigger es un vestigio de la era pre — mídelo antes de razonarlo.

Lo que hay que decidir: ¿la firma de present se mueve al contenido, o el trigger se excluye por selector? Es la misma pregunta que resolvió shift al mover su sello del BOTÓN al grid.

Disposición firmada (2026-08-12): medir primero en navegador. Lo esperable es la receta F4 otra vez (open pre cuyo content no ha montado, aterrizando en el trigger — select/combobox están en la cola de F3 justo como «leer providers»), pero la medida decide, no el razonamiento.

MEDIDO Y ARREGLADO para select/combobox (2026-08-13). La medida matizó la expectativa: el open YA era post — el vestigio era el targetOverride al trigger del provider, LEGALIZADO por un allowedTargets del 2026-08-10 (el eje equivocado). ANTES: open/close sobre TRIGGER y present-rise corriendo sobre el botón; DESPUÉS: open/close sobre CONTENT, present fuera del trigger. Receta aplicada: fuera el override y el allowedTargets del open; el close declara targetFallback ([trigger] / [trigger, input]); la selección ancla por partInstance al item elegido. Queda navigation-menu (mismo síntoma declarado aquí; su sitio vive en la cola de colecciones de F3).

2 · Abierto, sin bloquear

2.1 · grid es una parte REPETIDA — CERRADO e5811e422

El sello de shift-navigate se movió del botón al grid en los cuatro calendarios; con numberOfMonths=2 había dos grid y sólo se sellaba uno (medido: junio cambiaba de fechas quieto y julio cruzaba). El arreglo no administra el sello: declara la parte que ES el sujeto — months, la vista paginada, arquetipo viewport, con targetFallback: [grid]. Medido después: los dos grids se desplazan 10 px a los 40 ms, y −10 px en RTL.

Se legalizaron de paso dos partes clandestinas (months, month-panel) que los cuatro demos fabricaban a mano y que la receta estilizaba igualmente.

La ley general quedó escrita en docs/architecture/morfo.md §A repeated part cannot be the subject of one occurrence: si el destino es una parte repetida, hay que preguntar si la ocurrencia tiene un sujeto (→ anclarla, como hace table con su fila) o todos (→ el sujeto es el contenedor, y tiene que existir). 50 de los 252 destinos del catálogo son partes repetibles; todos los demás son del primer tipo.

2.2 · handle-drag-progress

El nombre quedó así por inercia del renombrado. progress no es un verbo del canon; el canon para la emisión continua de un arrastre está sin decidir. Revisar contra docs/CANON.md §verbos antes de tocarlo.

Disposición firmada (2026-08-12): revisar, no renombrar por uniformidad. El nombre es legal bajo la ley (handle-drag-progress = familia + verbo + matiz) y el matiz del drawer puede ser deliberado — progreso hacia el umbral de dismissal, no el drag de valor del slider. Sólo se toca si la decisión de canon para la emisión continua aterriza en otro nombre.

2.3 · D5 · D6 · D7 · D8 · D9

Cuatro defectos confirmados y uno con un defecto más hondo debajo (D5: el modal promete un buffer que no existe). Fichas y evidencia en AUDIT-docs-code-ledger.md. Ninguno se toca sin que lo pidas: son código obsoleto contra documentación correcta.

3 · Lo que este eje enseñó, y hay que no repetir

  1. Un nombre partido en dos dialectos no rompe ningún test. Un preset de movimiento engancha el nombre con ^=; el dialecto pelado no casaba con ninguna firma y simplemente no animaba. Tres auditorías lo vieron, ninguna lo cerró. La invariante es la puerta — por eso el guard, y por eso verlo fallar.
  2. Un validador sin ejecutor vigila a nadie. validateMorfo no lo llamaba nada sobre el catálogo real (registerMorfo llama a compileMorfo), así que todas sus invariantes se comprobaban contra fixtures escritas a mano. Debajo había dos fixtures ilegales, verdes.
  3. Trocear un commit por hunks parte cambios lógicos por la mitad, y los check que corres son de TU árbol, no del que firmas. Dos commits seguidos salieron rotos con «tests en verde» en el mensaje. Se arregla materializando el árbol INDEXADO en un worktree y midiendo allí.
  4. «No lo referencia nadie» es una observación, no un veredicto. Ver la regla 4 del ledger, y D10, que nació de saltársela. 4b. Un handoff no es un backlog. Es la lección más cara de esta jornada y no es técnica. El ledger se creó a las 03:55 para que una sesión futura tomara los defectos con su propia puerta, y a las 13:59 esta misma sesión lo empezó a consumir como lista de trabajo. Nadie decidió cambiar el objetivo: se cambió solo, un «arregla esto» cada vez, porque cada arreglo destapaba dos hallazgos y se iban anexando filas (D11…D14) en vez de leer la lista creciente como la señal de parar que era. Terminó en el borrado de una librería de otro eje. Cuando el trabajo deje de responder al plan que lo abrió, se cierra el plan y se abre otro — no se sigue tirando del hilo.
  5. Una parte declarada sin registro en runtime es un destino inalcanzable y no chilla: el emit se rechaza en silencio (salió arreglando D3).

4 · Cómo verificar que sigue en pie

npx vitest run src/uix/morfo/schema.test.ts

82 tests. Los dos que importan: el barrido encuentra >150 morfos (un glob que deje de casar convertiría al siguiente en un no-op que reporta éxito) y los 172 pasan validateMorfo entero.

Powered by TurnKey Linux.