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/handoffs-2026-05.md

6.3 KiB

Hand-offs — May 2026 (extracted from the layer READMEs)

These session hand-off notes used to live inline at the top of the UIX layer READMEs. They were pulled out so those reference docs read as timeless. Kept here for traceability; the rules they fixed are now reflected in the docs themselves and enforced by src/uix/contracts.ts + contracts.test.ts.

The active_architecture.md §0 hand-off (the largest one) is not here yet: it embeds the referenced "contratos mínimos" table that other docs link to, so it gets separated from its handoff framing during the architecture (E1) pass, not in this mechanical extraction.


From src/uix/README.md (intro blockquote) — 2026-05-14

Visión de conjunto: para entender las cuatro capas (morfo, soma, sema, eidos) en una sola lectura, motivaciones y articulación incluidas, ir a active_architecture.md. Este README mantiene la introducción más narrativa.

Hand-off de continuación: el estado actual de migración y los próximos pasos viven en continue.md. Handoff 2026-05-14: pausa deliberada antes de seguir programando. Los contratos mínimos entre active-uix, morfo, soma, sema, eidos, adom, langs, format y prefs quedan descritos en active_architecture.md, sección "Handoff 2026-05-14". Ya queda fijada la regla principal de ownership: solo ActiveApp y ActiveUix standalone crean servicios compartidos. La tabla ejecutable de contratos vive en contracts.ts y se valida en contracts.test.ts. La tabla de naming canónico vive en active_architecture.md#01-naming-canonico. Ownership DOM P1 queda cerrado: las escrituras gestionadas por UIX pasan por ActiveDom.

Convenciones doctrinales del API (intent ↔ color, subset por componente, root visual con partes attached en eidos, sound prepare-time priming): viven en src/docs/GUIA_IMPLEMENTACION_SEMAUIX.md. Autoritativo para todo wrapper / migración nueva.


From src/uix/morfo/README.md — Handoff 2026-05-14

Morfo debe seguir siendo declarativo: no instancia servicios y no conoce ActiveUix. Sus campos solo entran en el contrato cuando son superficie cross-layer real; si un dato pertenece a una sola capa, vive en esa capa.

Decisiones cerradas:

  • texts declara las ranuras de texto del componente como idlangrefs absolutos ('#?components.{kebab}.{key}|fallback'). El catálogo multilingüe vive en src/uix/langs/components/{kebab}.ts (fuera del morfo).
  • Textos comunes usan v.commonRef(...) o un idlangref absoluto; no se duplican en cada morfo.
  • registerMorfo(morfo) registra el contrato data-*. El catálogo de strings (componentLangs + commonLangs) lo registra ActiveUix al arrancar; el morfo nunca extiende ActiveLangs dinámicamente.
  • Si Soma, Sema y Eidos necesitan un dato compartido, pasa por morfo o por un contrato publico; no por imports laterales entre capas.
  • La regla 2-de-3 sigue vigente para extender morfo.

From src/uix/sema/README.md — Handoff 2026-05-13

Sema ya tiene contrato explicito de DOM: si el canal visual esta activo, EngineSemantic debe recibir dom o projector. Si se construye desde ActiveUix, recibe el dom de ActiveUix; si se usa directamente fuera de UIX, el integrador debe pasar un writer explicito o usar visual:false. Sema no cae a escrituras DOM directas por defecto.

Tambien queda por decidir si emit debe seguir siendo secuencial estricto de forma global o si la secuenciacion pertenece al evento/morfo. No cambiar esto sin documentar antes la tabla de contratos minimos en ../active_architecture.md.


From src/uix/soma/README.md — Handoff 2026-05-14

Soma no debe crecer ahora con ActiveSoma/EngineSoma por simetria. El contrato minimo de SomaRuntime con ActiveUix (dom, events, langs, format, prefs) queda descrito en src/uix/contracts.ts. La regla de ownership ya queda cerrada: Soma no crea servicios compartidos. Recibe dom desde el scope Soma.runtime(...); si no hay una superficie ActiveDom, falla en la raiz activa, no dentro de un componente.

Punto critico para manana: confirmar que todo atributo mutable sigue pasando por el servicio DOM activo, y que ninguna ausencia de dom hace que Soma o Sema caigan a escrituras directas.


From src/uix/eidos/README.md — Handoff 2026-05-14

Eidos queda congelado a nivel de componentes hasta reauditar la arquitectura de UIX. No tocar src/uix/eidos/components/* salvo orden explicita.

Actualización 2026-05-17: la migración de componentes se reanudó por orden explícita. La regla vigente no cambia: cada componente nuevo debe seguir components/README.md, envolver partes públicas de Soma directamente y añadir sólo superficie visual de Eidos.

Antes de seguir con wrappers o recipes por componente hay que respetar estas decisiones:

  • que contrato minimo consume Eidos desde ActiveUix;
  • ActiveEidos asume authoring, validacion, generacion CSS, persistencia y contexto visual;
  • events es el servicio perceptivo runtime y morfo.translations es el catalogo declarativo de texto owned por el componente;
  • que parte se genera desde codigo y que parte puede venir solo por CSS;
  • como se mantiene la regla de escritura DOM unica en standalone dom:false.

La referencia de arranque esta en ../active_architecture.md, seccion Handoff 2026-05-14.


From src/uix/active-uix/README.md — Handoff 2026-05-14

La regla de ownership queda cerrada:

Solo los composition roots crean servicios compartidos. Si hay ActiveApp, attachActiveUix(app) consume sus servicios y falla si falta alguno requerido. Si no hay app, createActiveUix(...) es el composition root local y crea los servicios/prefs de UIX. morfo, soma, sema, eidos y los componentes no crean dom, langs, prefs, format, clipboard ni equivalentes.

La revision de naming queda cerrada asi: events es el nombre publico del motor perceptivo en ActiveUix y tambien el nombre del servicio que defineUixServices(...) registra en ActiveApp. semantic queda reservado para el payload declarativo de morfo.events[].semantic, no para servicios runtime. morfo.translations queda como catalogo declarativo owned por el componente. prefs es el unico nombre para preferencias: ActiveUix expone el ActivePrefs bruto y las capas inferiores consumen vistas acotadas cuando no deben mutar.

Powered by TurnKey Linux.