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/src/uix/eidos/CHANNELS_SYNTHESIS.md

6.2 KiB

Los canales como un solo sistema — síntesis ("Diseñando lo que ocurre")

Capstone de los RFCs por canal. La tesis del libro Diseñando lo que ocurre: una interacción no es color, ni movimiento, ni sonido — es un solo suceso perceptual repartido en N canales, bajo el modelo de dos momentos. Esto ata COLOR_ENGINE_RFC · TYPOGRAPHY_ENGINE_RFC · DEPTH_ENGINE_RFC · SHAPE_ENGINE_RFC · STRUCTURE_ENGINE_RFC. Demo vivo: /temas/orquesta (el mezclador).

1. Dos momentos, unidos por un token: sema emite, eidos lee

Un suceso fluye por dos momentos, conectados por el token:

  • Momento de sema (emisión) — sema evalúa el suceso y lo emite. Sonido + háptica los ejecuta ahí mismo (canales runtime); para lo visual, lo estampa como tokens data-event-* (family · intent · phase). Sema no conoce DOM/CSS.
  • Momento de eidos (materialización) — eidos lee esos tokens (+ data-state) y los materializa en CSS (el canal visual). Es el único dueño visual.

El token es el contrato: sema escribe, eidos lee — y por eso las capas se desacoplan (sema agnóstico del DOM, eidos sin lógica semántica).

Sobre ese eje productor → consumidor corre el eje temporal (motion F1) — qué token:

Token Naturaleza Quién lo escribe Eidos lo lee como
data-state persistente — lo que el elemento es soma / morfo presets
data-event-* transitorio — lo que ocurre (durante el hold) sema (emite) signatures

sequence (pre / coincident / post) ordena los dos.

2. Canales de expresión (libro) vs canales de sema (runtime)

El libro tiene 8 canales de expresión (dimensiones perceptuales). El framework los implementa con los canales de sema (runtime), que son 3 — y aquí está la clave que evita la confusión clásica:

Canal de sema (runtime) Cubre (expresión del libro) Quién lo materializa
visual (sema proyecta data-event-*) movimiento · presencia · profundidad · forma · color eidos — CSS sobre data-event-* + data-state
sound sonido sema (chans/sound)
haptic háptica sema (chans/haptic)

No te confundas: motion · depth · shape · color NO son "canales de eidos" — son el canal visual de sema, que sema proyecta y eidos materializa. Eidos es el materializador del canal visual, no el dueño de unos canales propios. Los RFCs de eidos (COLOR/DEPTH/SHAPE_ENGINE) describen cómo eidos materializa cada faceta visual — no canales independientes.

Más el espacio (STRUCTURE_ENGINE_RFC) — estructural, no de expresión: no "ocurre", es el escenario (solo-estado).

3. La cadena de capas (cada una con su papel)

Un suceso atraviesa las capas — no es "todo sema", y eidos no es un shim:

  1. morfo — declara el evento y su semántica (familia · intención · verbo). El contrato / DNA; TypeScript puro, sin runtime.
  2. soma — lo dispara (runtime.trigger): secuencia prewrite → sema.emit → handler → atributos de estado. Escribe data-state (el momento-estado).
  3. sema — lo emite: despacha la señal a sus canales — ejecuta sound + haptic; proyecta el canal visual estampando data-event-*. No conoce DOM/CSS.
  4. eidos — lo materializa: lee data-state (presets) + data-event-* (signatures) y los rinde con sus motores de tokens (color · motion · depth · shape · space — los RFCs). Es el sistema visual completo y el único dueño de lo visual.

Eidos no "hace visible a sema": sema aporta el qué (familia / intención semántica), eidos aporta el cómo (el vocabulario visual y su materialización). Co-capas, no una subordinada.

(Narrativa canónica completa en CLAUDE.md → "Sema: open channel registry".)

4. La composición — un evento, N canales

La firma (BUILTIN_SIGNATURES + BUILTIN_KEYFRAMES) es cross-modal: un solo keyframe lleva varias modalidades. Ejemplo real (press-squeeze, familia contact):

contact · press  →  scale 0.96 (motion)
                 +  box-shadow → plano (depth recede)
                 +  --shape-smoothing 2→3 (shape: la esquina se afirma)
                 +  tick (sema sound)
                 +  vibración (sema haptic)

Un engine.emit(...) estampa data-event-* (el canal visual reacciona — eidos lo materializa en color/motion/depth/forma) y dispara sound + haptic — desde el mismo evento. No hay sistemas coordinándose a mano; hay un suceso que se expresa por los canales de sema.

5. Builders runtime — el sexteto (jaula abierta)

Cada eje retunable en runtime, mismo patrón (semilla → bloque gestionado), opt-in sobre la escala authored:

applyColorScheme · applyTypeScale · applyDepth · applyShape · applySpacing

Y el capstone que los compone: applyTheme(seed) — una sola semilla ({ color?, type?, depth?, shape?, space? }) compone los cinco ejes en una única escritura gestionada (vs cinco apply* sueltos), de forma atómica: los ejes que das se aplican, los que omites revierten a la foundation authored. clearTheme() revierte todo. Para retoques quirúrgicos por eje, los apply* individuales siguen ahí. Ningún referente reúne los cinco ejes perceptuales bajo un único builder de tema en runtime.

6. Posición frente a referentes

Ningún referente reúne los canales bajo un modelo semántico único. Material tiene morph de forma + motion (ad-hoc, sin sonido/háptica integrados); Apple, continuidad + materiales (atado a plataforma); todos, color. La UIX los reúne —el canal visual (sema → eidos) + sound + haptic (sema)— sobre el modelo de dos momentos, disparados desde un evento, con builders runtime y registro abierto. Eso es el framework, no la suma de sus partes.

7. Demo

/temas/orquesta — el mezclador: pulsa un control y silencia cada faceta para oír su parte. Las 4 facetas del canal visual se materializan con tokens de eidos (toggleables para poder silenciarlas una a una); sound + haptic los dispara el motor sema real (EngineSemantic.emit, canales filtrados). Un evento, los canales de sema.

Powered by TurnKey Linux.