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>
4 months ago
---
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: docs/theming/reference.md (eidos visual system, canonical reference)
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>
4 months ago
---
# 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 [`architecture/active-architecture.md` ](./architecture/active-architecture.md );
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>
4 months ago
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.
docs(book): F7.4 (4/4) — color-engine RFC translated; rfcs/ batch COMPLETE
COLOR_ENGINE_RFC (619 L, the largest RFC) -> rfcs/rfc-color-engine.md,
Spanish to English, same section numbering (s0 TL;DR, s6 generator +
s6.1 isomorphism + s6.2 deriveScheme/buildScheme, s7 wide-gamut
strategies, s8 APCA, s10 frozen invariants, s11 phases with 4-bis
implemented, s13 bloat-doc absorption, s14 comparison). Its
THEMING_AUDIT citation notes the audit is retired; the s25/s26 canon
citations point into theming/reference.md. decisions.md row repointed +
Status aligned (implemented through phase 4-bis); the index's naming
note rewritten — the deferred eidos-RFC rename is now DONE via stubs,
while the arts DESIGN_* docs keep their legacy names in place (their
citations were not swept).
F7.4 complete: 7 RFCs live at docs/rfcs/rfc-{scaling, structure, depth,
shape, typography, color-model, color-engine}.md; MOTION_SERVICE_RFC
stays in src (foreign/concurrent). docs:check 0 errors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
> **Naming note.** The eidos RFCs were renamed to `rfc-*` when they moved into
> `docs/rfcs/` (docs-book F7.4, 2026-07-02). The provenance anchors cited from
> source (e.g. `// (DEPTH_ENGINE_RFC §5)` across `src/uix/eidos/lib/*.ts`)
> keep resolving: every old path holds a stub pointing at the new chapter with
> the same section numbering. The arts documents (`DESIGN_*.md`, `DESIGN.md`)
> keep their legacy names in-place — same rationale, their citations (e.g.
> `DESIGN_TIMR §12.8` across `src/arts/timer/*`) have not been swept.
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>
4 months ago
---
## Eidos — expression channels (the 8 of the book)
docs(book): F7.3 (2/3) — theming/ satellites: guide + notes + channels + motion-guide + changelog
Five theming docs into the book tree:
- docs/theming/guide.md — THEMING_GUIDE (241 L, Spanish -> English): add a
component's recipe step-by-step + the three theme-definition modes.
- docs/theming/notes.md — THEMING_NOTES (168 L, Spanish -> English): the
bundle/feature comparison + the controversial-decisions FAQ (in-page
anchor to s1.bis fixed to a real THEMING link).
- docs/theming/channels.md — CHANNELS_SYNTHESIS (115 L, Spanish ->
English): the per-channel-RFC capstone (two moments, 8 expression vs 3
runtime channels, the builder sextet + applyTheme).
- docs/theming/motion-guide.md — MOTION_GUIDE (213 L, already English):
moved with frontmatter + links repointed.
- docs/theming/changelog.md — THEMING_CHANGELOG (1310 L): chronicle,
moved VERBATIM (recorded history is not translated), links repointed.
Thin stubs at all five old paths; corpus links swept (docs map E3/E4
rows, building-a-component phase 5, decisions umbrella, getting-started,
eidos chapter). docs:check 0 errors (258 docs).
Remaining in F7.3: THEMING.md itself (1499 L) + eidos-motion.md (698 L).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
[`theming/channels.md` ](./theming/channels.md ) is the umbrella:
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>
4 months ago
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 |
| --- | --- | --- |
fix(eidos-docs): the palette is 33 scales, not 31 — UI bug + docs + count guard
User-caught drift, and it was live in the UI, not just prose: the demo
harness's hand-copied PALETTE_GROUPS enumerated 31 scales — fuchsia and
steel (the two non-Radix scales) never appeared in any demo's
PalettePicker even though PALETTE_SCALES (the const, 33) and the recipe
cascade (paletteScaleDecls maps the const) resolve them fine. Fixed the
two missing entries, typed the groups as PaletteScale[], and added a
dev-time completeness assertion so growing the const without grouping
throws at module load.
Prose swept (the numbers were inherited verbatim from the pre-book
sources, which contradicted their own '33-scale library' headers):
decisions.md color-model row, demo-authoring x4 (incl. the '31-scale
palette' lede), rfc-color-engine x4 (ground-truth + templates
open-question). Where the count was incidental the text now points at
PALETTE_SCALES instead of restating a number.
Guard: docs-check I1 gains the palette count (EN + ES patterns,
~-approximation and type/space-scale exclusions; s-mark added to the
section-number skip). The check line now prints palette=33. This was
the exact class I1 already covered for families/intents/archetypes and
had not been extended to the palette.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
| [`rfc-color-model.md` ](./rfcs/rfc-color-model.md ) | RESUELTO (2026-06-02) — canon in [`theming/reference.md` ](./theming/reference.md ) §25 | The conceptual color model: rich palette (33 scales) + hierarchy roles by explicit alias + intents auto-derived from the palette (identity = step 9). Rejected the "intent = single-anchor" variant. |
docs(book): F7.4 (4/4) — color-engine RFC translated; rfcs/ batch COMPLETE
COLOR_ENGINE_RFC (619 L, the largest RFC) -> rfcs/rfc-color-engine.md,
Spanish to English, same section numbering (s0 TL;DR, s6 generator +
s6.1 isomorphism + s6.2 deriveScheme/buildScheme, s7 wide-gamut
strategies, s8 APCA, s10 frozen invariants, s11 phases with 4-bis
implemented, s13 bloat-doc absorption, s14 comparison). Its
THEMING_AUDIT citation notes the audit is retired; the s25/s26 canon
citations point into theming/reference.md. decisions.md row repointed +
Status aligned (implemented through phase 4-bis); the index's naming
note rewritten — the deferred eidos-RFC rename is now DONE via stubs,
while the arts DESIGN_* docs keep their legacy names in place (their
citations were not swept).
F7.4 complete: 7 RFCs live at docs/rfcs/rfc-{scaling, structure, depth,
shape, typography, color-model, color-engine}.md; MOTION_SERVICE_RFC
stays in src (foreign/concurrent). docs:check 0 errors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
| [`rfc-color-engine.md` ](./rfcs/rfc-color-engine.md ) | ✅ Implementado (hasta fase 4-bis) | 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. |
| [`rfc-typography.md` ](./rfcs/rfc-typography.md ) | ✅ Implementado (fases 1– 5) | Typography to reference-grade, additively behind the frozen token contract (audit → compare → extend, mirroring color). |
| [`rfc-depth.md` ](./rfcs/rfc-depth.md ) | ✅ Implementado (fases 1– 5) | The depth/presence channel: "depth is not something an element *has* , it is something that *happens* ". Two-moment model (state + event). |
| [`rfc-shape.md` ](./rfcs/rfc-shape.md ) | ✅ Implementado (fases 1– 5) | The shape channel (the book's 8th and last expression channel) as orthogonal axes on top of the untouched `--radius-*` magnitude. |
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>
4 months ago
## Eidos — structural systems
| RFC | Status | The decision it records |
| --- | --- | --- |
| [`rfc-structure.md` ](./rfcs/rfc-structure.md ) | Propuesta | Space · density · scale as state-only structural systems (the stage, not the event): rhythm, fluidity, axis composition under the open cage. |
| [`rfc-scaling.md` ](./rfcs/rfc-scaling.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. |
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>
4 months ago
## 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. |
| [`architecture/active-architecture.md` §7 + `arts/adom`/`arts/perf` READMEs ](./architecture/active-architecture.md ) | **Sec-dom — read-timing & token-resolution (2026-06-29).** The framework governs layout READS like it governs writes: `dom.measure` (coalesced post-layout reads), `eidos.resolveToken` (token→colour in JS, no `getComputedStyle` probe), the discoverable `uix.color` /`uix.perf` surfaces. Decided: **reject** a static grep-guard (too noisy across ~120 legit reads, and it can't catch the sync-read-after-write *ordering* nor cover routes) — the dev `uix.perf` detector (Long Animation Frames) is the runtime safety net instead. |