3.2 KiB
active_architecture.md — session snapshot (May 2026)
Pulled out of src/uix/active_architecture.md so that doc reads as a timeless
architecture reference. This is the dated session framing (the "Handoff 2026-05-14"
§0 minus its contract table, which stayed as reference) plus the "Estado actual
(2026-05-17)" §10 status snapshot. Kept for traceability; the rules it fixed live
in active-uix/README (ownership/degradation) and contracts.ts (the table).
Handoff 2026-05-14 (framing)
Estado acordado al cierre de la sesión:
- No tocar componentes Eidos hasta cerrar de nuevo la arquitectura.
- Contratos mínimos fijados antes de seguir (tabla autoritativa en
src/uix/contracts.ts, validada consrc/uix/contracts.test.ts). - Regla de composition roots cerrada: solo
ActiveAppyActiveUixstandalone crean servicios compartidos.
Preguntas cerradas tras la revisión: ActiveUix expone uix.prefs bruto; Dom
standalone puede usar disabledDom, attach exige app.dom; Sema fuera de UIX
necesita dom/projector o visual:false; Eidos = ActiveEidos; Soma no
necesita ActiveSoma; langs↔prefs.language / format↔prefs.locale; prefs
es el nombre canónico; attachActiveUix exige langs+dom; la ruta docs
sincroniza prefs y no muta html[dir]/uix.langs directamente.
Hallazgos P1 resueltos: createActiveUix({dom:false}) crea disabledDom y se lo
pasa a EngineSemantic; ActiveUix.dom siempre existe; ActiveUix no proyecta
prefs al DOM (lo hace ActivePrefsDomProjection / ActiveEidos); ownership DOM
P1 cerrado (live regions, observers, foco/scroll imperativo vía ActiveDom);
SoundChannel no registra listeners globales en el constructor; Sema ya no
propaga motion/color/presence.
Hallazgos P2/P3: standalone usa createSvelteEngineBus; attach no re-suscribe
prefs.language → langs.
Contexto frontend cerrado: arts/frontend retirado; no reaparece como fuente de
locale; prefs.locale→format, prefs.language→langs, prefs.direction→
html[dir] vía ActivePrefsDomProjection.
(These rules are now stated, timeless, in src/uix/active-uix/README.md §"Reglas
de ownership y degradación".)
Estado actual (2026-05-17)
Implementado y verificado (snapshot at that date): morfo (115 components,
sium validator, ~265 archetype-classified part declarations, doctrinal event
shape); soma/morfo/runtime (part/partProps/keydown/trigger, provider
inheritance dropped, domain engines moved to src/libs); sema (EngineSemantic
chans/, 8 families × 6 intents, SoundChannel with prepare-time priming, HapticChannel opt-in);eidos(ActiveEidos, color hierarchy + intents over 12-step scales, discreteSize, recipe aliases,EidosConfigDocumentpersistence);adom;active-uix+active-app(two boot modes, Props bridge V2).
Pendiente (at that date — several since DONE): afilar EidosConfig.recipes;
reparar demos/rutas en Provider/flat-snippets; persistence field (since done);
holds-by-intent; topbar-mute → SoundChannel.masterGain; polymorphic events
(since done); a11ySemantic per event (since done).
Layers ya muertos: src/lib/, src/uix/terra/, src/uix/air/,
src/routes/test.