docs(corpus): add docs/decisions.md — the RFC/design decision index

A single E3 entry point cataloguing the design rationale: the 7 eidos RFCs
(color model/engine, typography/depth/shape/structure engines, scaling), the
3 arts subsystem design docs (connection/timer/session), and the cross-cutting
decision logs (LIBRO_VARIACIONES, GESTURES). Each entry gives status + the one
decision it records, linking the document for the full argument.

This delivers the "naming único" goal at the index level. The physical file
rename (*_RFC -> rfc-*, DESIGN_* -> design-*) is deferred: those names are cited
as provenance anchors in ~30 source files (eidos/lib/*.ts, arts/timer/*,
arts/color/*, tests), so a rename only pays off if every citation is swept in
the same pass. The index gives consistent naming without that churn.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
active-uix
dev 4 months ago
parent 3c9ad7391d
commit 5cda75da71

@ -0,0 +1,75 @@
---
title: UIX Decision & RFC Index
type: index
audience: human + agent
authority: navigational — the single entry point to the design/RFC corpus
status: current
related:
canon: docs/CANON.md (semantic vocabulary)
theming: src/uix/eidos/THEMING.md (eidos visual system, canonical reference)
---
# UIX Decision & RFC Index
This is the **entry point to the framework's design rationale** — the RFCs, the
per-subsystem design documents, and the decision logs. It is the E3 stratum of
the corpus: *why it is built the way it is*. Architecture (how the layers fit)
lives in [`src/uix/active_architecture.md`](../src/uix/active_architecture.md);
the semantic vocabulary lives in [`CANON.md`](./CANON.md); this file collects the
*decisions*.
Each entry gives the document, its status, and the one decision it records. Open
the document for the full argument — this index never copies it.
> **Naming note.** The filenames below are inconsistent (`*_ENGINE_RFC.md`,
> `*_RFC.md`, `DESIGN_*.md`, `DESIGN.md`). They are kept as-is on purpose: each
> name is cited as a provenance anchor in the source it governs (e.g.
> `// (DEPTH_ENGINE_RFC §5)` appears across `src/uix/eidos/lib/*.ts`, and
> `DESIGN_TIMR §12.8` across `src/arts/timer/*`). Renaming the files would drift
> ~30 of those citations. This index is the consistent surface; the filenames
> stay load-bearing. A physical rename is deferred until those citations are
> swept in the same pass.
---
## Eidos — expression channels (the 8 of the book)
[`CHANNELS_SYNTHESIS.md`](../src/uix/eidos/CHANNELS_SYNTHESIS.md) is the umbrella:
the conceptual synthesis of the book's eight expression channels (time · motion ·
presence · depth · shape · color · sound · haptic). The engine RFCs below take the
visual channels to reference-grade, one at a time, "breaking the model of the
references rather than copying it — with the cage open".
| RFC | Status | The decision it records |
| --- | --- | --- |
| [`COLOR_MODEL_RFC.md`](../src/uix/eidos/COLOR_MODEL_RFC.md) | RESUELTO (2026-06-02) — canon in THEMING §25 | The conceptual color model: rich palette (31 Radix scales) + hierarchy roles by explicit alias + intents auto-derived from the palette (identity = step 9). Rejected the "intent = single-anchor" variant. |
| [`COLOR_ENGINE_RFC.md`](../src/uix/eidos/COLOR_ENGINE_RFC.md) | PROPUESTA (2026-06-04) | The *physical* layer of color: OKLCH · P3 wide-gamut · APCA contrast · 1-seed generator. Changes how the color variables are produced, not which exist or what they mean. |
| [`TYPOGRAPHY_ENGINE_RFC.md`](../src/uix/eidos/TYPOGRAPHY_ENGINE_RFC.md) | PROPUESTA (2026-06-05) | Typography to reference-grade, additively behind the frozen token contract (audit → compare → extend, mirroring color). |
| [`DEPTH_ENGINE_RFC.md`](../src/uix/eidos/DEPTH_ENGINE_RFC.md) | Propuesta | The depth/presence channel: "depth is not something an element *has*, it is something that *happens*". Two-moment model (state + event). |
| [`SHAPE_ENGINE_RFC.md`](../src/uix/eidos/SHAPE_ENGINE_RFC.md) | Propuesta | The shape channel (the book's 8th and last expression channel) as orthogonal axes on top of the untouched `--radius-*` magnitude. |
## Eidos — structural systems
| RFC | Status | The decision it records |
| --- | --- | --- |
| [`STRUCTURE_ENGINE_RFC.md`](../src/uix/eidos/STRUCTURE_ENGINE_RFC.md) | Propuesta | Space · density · scale as state-only structural systems (the stage, not the event): rhythm, fluidity, axis composition under the open cage. |
| [`SCALING_RFC.md`](../src/uix/eidos/SCALING_RFC.md) | ✅ IMPLEMENTADO (2026-06-02) | Splits global zoom (`scaling`: 90/95/100/105/110) from density. Scales space + control-height + font-size + icon-size; radius/border/shadow/line-height excluded on purpose. |
## Arts — subsystem design documents
Exhaustive design-and-implementation records for the harder runtime artifacts.
Each predates the 2026-05-14 directory-rename sweep and carries a historical-note
header about the old short names (`conn`/`timr`/`sess`).
| Document | Subsystem | The decision it records |
| --- | --- | --- |
| [`DESIGN_CONN.md`](../src/arts/connection/DESIGN_CONN.md) | `connection` | Realtime connection registry: transports, reconnect, heartbeat, request/reply, channels, session bridge. |
| [`DESIGN_TIMR.md`](../src/arts/timer/DESIGN_TIMR.md) | `timer` | Deterministic timer scheduler: clock injection, the race-safety contract (§12.8), one-shots, intervals, backoff. |
| [`DESIGN.md`](../src/arts/session/DESIGN.md) | `session` | Session lifecycle consultation: adopt/revoke/refresh, profile loading, SSR via cookie reader. |
## Cross-cutting decision logs
| Document | The decision it records |
| --- | --- |
| [`LIBRO_VARIACIONES_Y_EXTENSIONES.md`](../src/docs/LIBRO_VARIACIONES_Y_EXTENSIONES.md) | The running log of where the implementation deviates from (or extends) the book's editorial canon — verbs, adoptions, clusters, and the D.x architectural decisions. The seed for a consolidated decision-log. |
| [`GESTURES.md`](../src/uix/soma/layers/gesture/GESTURES.md) | The soma gesture layer design: `Gesture.base`/`drag`/`resize`, velocity ring-buffer, axis lock, deferred pointer capture. |

@ -35,17 +35,18 @@ permanente/efímero, drift, dos idiomas.
- **Fase 1b cierre — arts hand-offs**: los "## Handoff 2026-05-14" de `arts/README` + `arts/adom/README` + `arts/format/README` extraídos a `docs/process/handoffs-2026-05.md` y quitados de los READMEs (mismo patrón que 1b).
- **Fase 3 (3/3) — soma de-dup**: `soma/README` 1057→400 L (ahora onboarding/guía: propósito, pertenencia, morfo slim, patrón de componente + composición, checklist, inventory por puntero) y `SOMA_ARCHITECTURE` 969→1043 L (referencia profunda; absorbió mergeProps · KEYS · focus/roving · boolean-helpers · `context()` · type-aliases reactivos en el nuevo §8.bis). Renumerado limpio del README, cero solape, cross-refs verificadas. **Fase 3 cerrada.**
- **Fase 4 (1/3) — checklists**: el diagnóstico "3 copias" era erróneo. `COMPONENT_GUIDE` = checklist de **autoría** (pasos 1–40 + reglas A1–A37); `COMPONENT_COMPLETION_CHECKLIST` = **matriz de aceptación** machine-auditada (atada a `scripts/component-audit.ts`, `npm run component:audit`). Son complementarios, NO duplicados — fusionarlos a un archivo rompería el binding del script. Consolidación real: una fuente **por concern** + cross-links bidireccionales con roles nítidos; `soma/README §9` (la única copia-resumen real) reducido a puntero a ambos. Pendiente menor (flagged, fuera de scope): drift `7 familias`→8 en `COMPONENT_COMPLETION_CHECKLIST` M-3.3.
- **Fase 4 (2/3) — índice de decisiones**: nuevo `docs/decisions.md` — entrada única E3 que cataloga los 7 RFC de eidos (color-model/engine · typography/depth/shape/structure engines · scaling) + 3 design docs de arts (connection/timer/session) + decision-logs (LIBRO_VARIACIONES, GESTURES), cada uno con estado + la decisión que registra. El **rename físico** de los ficheros se DIFIRIÓ (ver Diferido): los nombres `*_RFC`/`DESIGN_*` están citados como provenance en ~30 archivos de código; el índice da el naming consistente sin tocar las citas.
## PENDIENTE
### Fase 4 — naming + partir (checklists ya hecho, ver HECHO)
- **Naming único** de RFCs/design: `DESIGN_CONN.md` / `DESIGN.md` (session) / `DESIGN_TIMR.md` → `design-*`; `*_ENGINE_RFC.md` / `*_RFC.md` → `rfc-*`. Crear un índice de decisiones.
### Fase 4 — partir (checklists + índice ya hechos, ver HECHO)
- **Partir `THEMING.md`** (2571 L, multi-estrato): TSC → canon visual E2; "añadir componente"/"definir theme" → E4 guía; comparación/FAQ → E3. §14 motion solapa `eidos-motion.md`.
### Fase 5 — huecos de libro (escribir nuevo)
Glosario del vocabulario inventado · arco *getting-started* · decision-log consolidado (semilla: `src/docs/LIBRO_VARIACIONES_Y_EXTENSIONES.md`) · walkthrough "construye tu propia capa" · comparativa honesta vs Radix/Ark/Mantine (hoy dispersa en THEMING §15, eidos-motion §16) · historia transversal SSR/testing/codegen.
### Diferido (decisión del usuario)
- **Rename físico de RFCs/design** (`*_ENGINE_RFC`/`*_RFC` → `rfc-*`; `DESIGN_CONN`/`DESIGN`/`DESIGN_TIMR` → `design-*`): los nombres actuales están citados como provenance en ~30 archivos de código (`eidos/lib/*.ts` ×~20, `arts/timer/*`, `arts/color/*`, `arts/session/types.ts`, tests) + ~10 docs + CLAUDE.md. `docs/decisions.md` ya da el naming consistente a nivel índice sin tocar nada. El rename físico solo vale la pena si se barren TODAS las citas en el mismo pass (si no, drift) — decisión del usuario por el coste/beneficio (cosmético vs ~40 archivos + `check`). De paso: ruta mala `soma/layers/GESTURES.md` (real: `layers/gesture/GESTURES.md`) en SOMA_ARCHITECTURE/old-README.
- **Poda física** de las copias de vocabulario (Fase 2): hoy tienen puntero de autoridad pero conservan la lista; reemplazar por el puntero. Opcional.
- **Commitear el libro v2.3** (hoy untracked → el enlace de `CANON.md` no resuelve en remoto). Decisión del usuario.
- **Migración de idioma** coordinada (docs de capa es→en).

Loading…
Cancel
Save

Powered by TurnKey Linux.