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/CONTINUE-docs-corpus.md

127 lines
19 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# CONTINUE — reorganización del corpus de documentación
Hand-off para retomar en otra sesión. Trabajo iniciado 2026-06-13/14, rama `active-uix`.
## Objetivo
Convertir la documentación del **framework** (dispersa, ~32k líneas) en un corpus
**estratificado, claro y completo**, en inglés, que sirva de base para (a) un libro
sobre cómo construir frameworks / cómo está construido `active`, y (b) la web de
docs. **Componentes y `web/routes` quedan FUERA** (fase futura).
Diagnóstico de partida: NO es falta de contenido (204 READMEs + 38 docs ad-hoc, sin
stubs). Es **estructura** — sin entrada única, sin canon único, mezcla de
permanente/efímero, drift, dos idiomas.
## Reglas de trabajo (no negociables)
- **PROHIBIDO lanzar agentes / workflows.** Hacer el trabajo a mano. (Memoria: `feedback-no-subagents-do-it-yourself`.)
- **Responder en castellano.** Comentarios de código en inglés.
- **NUNCA tocar words/palabras** (`soma/components/palabras`, `eidos/components/palabras`).
- **Verificar staged antes de commit**: `git reset -q` → `git add` solo los míos → confirmar `git diff --cached --name-only` sin foráneos (launch/package/animations/palabras/palabras/settings.local). Commit por bloque, push.
- El libro `docs/Disenando_lo_que_ocurre_v2_3.md` (untracked, del usuario) es la **fuente editorial del canon**. NO tocarlo. Leído entero esta sesión.
## Decisiones acordadas
- **Idioma objetivo: inglés** (migración gradual; los docs de capa siguen en español por ahora).
- **Estructura híbrida**: `docs/` raíz para entrada/canon/RFCs/proceso; referencia de capa in-place.
- **`docs/process/`** = artefactos efímeros (hand-offs, snapshots, auditorías). NUNCA fuente de verdad.
- **Estratos**: E0 orientación · E1 arquitectura por capa · E2 canon · E3 decisiones/RFC · E4 guías · E5 referencia de módulo · process (efímero).
- **Canon**: destila doctrina (del libro) + **enlaza el código para los valores** (no copia tablas que driftan). Cada doc que necesite el vocabulario enlaza `docs/CANON.md`, no lo copia.
- **soma**: dos docs con roles separados (README=onboarding, SOMA_ARCHITECTURE=referencia profunda), sin retirar ninguno.
- **active_architecture**: ya hecho (§0→contratos, §10→process snapshot).
## HECHO (pusheado en `active-uix`)
- **Fase 1 — saneo**: drift de canon corregido contra el código (8 familias con `delegate`, `SEMA_FAMILY_POLICY` dos ejes, verbos reales, DATA_ATTRS "Terra"→LEGACY); hand-offs embebidos de 6 READMEs de capa → `docs/process/handoffs-2026-05.md`; §10 de active_arch. Commits `5c18a892`, `19ce90b0`, `e74a54ba`, `41c3b0f9`, `b7121054`. (+ `67cec940` timer auto-key, no-corpus.)
- **Fase 2 — canon E2**: `docs/CANON.md` (anclado al libro por capítulo + código por `file:símbolo`); 5 docs apuntan a él como autoridad + entrada lectura 0. Commits `c9032a7f`, `462d86c0`.
- **Fase 3 (2/3)**: `active-uix/README` reescrito como referencia atemporal (`633820ef`); `active_architecture` §0→"Contratos mínimos" / §10→snapshot en process (`ae49f737`).
- **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.
- **Fase 4 (3/3) — THEMING split (stubs)**: `THEMING.md` 2571→1930 L, partido renumber-safe en 3 docs-estrato: `eidos/TSC.md` (E2, §7+§18), `eidos/THEMING_GUIDE.md` (E4, §8+§9), `eidos/THEMING_NOTES.md` (E3, §15+§17). THEMING conserva stubs-puntero numerados → las 34 secciones y todas las citas `§N` del corpus/código sobreviven; §16 + `## Referencias` + §20-34 quedan in-place. Además §14 motion saneado (contradicción con eidos-motion.md). **Fase 4 cerrada.**
- **Fase 5 (1/n) — entrada E0**: nuevo `docs/README.md` — puerta única del corpus (lo pidió el usuario: "necesario para que los agentes empiecen y para cada sesión nueva"). Contiene: orientación de 60 seg, los 7 estratos, orden de lectura, mapa de docs por estrato (E1-E5 + process) y atajos task-oriented ("I want to…"). **Cableado desde `CLAUDE.md`** ("Start here", arriba de Reference Documents) para que toda sesión/agente lo lea primero. Todos los enlaces verificados. Pendiente del E0: solo adelgazar `CLAUDE.md` (ver Diferido).
- **Fase 5 (2/n) — glosario**: nuevo `docs/glossary.md` — el vocabulario inventado (las capas, morfo, soma, sema, eidos) definido en una línea cada término + puntero a la fuente autoritativa; el subset semántico (family/intent/verb/channel) **apunta a CANON, no se recopia** (sin drift). Enganchado en `docs/README.md` (estrato E0 + orden de lectura).
- **Fase 5 (6/n) — comparativa**: nuevo `docs/comparison.md` — posicionamiento honesto a nivel framework, anclado en los diferenciadores que el corpus YA documenta (morfo = contrato declarativo · sema = capa de percepción · motion de dos momentos · theme = retintar lo fijo · TSC · degradación headless/SSR) + los trade-offs reales (más que aprender · ecosistema menor · sema solo paga si la usas). NO inventa claims sobre competidores; la única concreta (Chakra colapsa presence en un eje) está sourced en eidos-motion.md. La comparativa per-componente sigue en los READMEs (doctrina). Enganchado en `docs/README.md`.
- **Fase 5 (5/n) — testing/tooling/codegen**: nuevo `docs/testing-and-tooling.md` — consolida la historia transversal de verificación (estaba dispersa en package.json / COMPONENT_GUIDE / SOMA_ARCHITECTURE): suite vitest de **2 proyectos** (client browser / server node), **validadores** (`morfo:check` · `morfo:vocabulary` · `component:audit` · `perm:check` · `smoke` · `translations:check` · eidos-lint — qué caza cada uno), **codegen** (`generate:eidos-css` · `generate:contracts-docs` + `compileMorfo`: generado vs autorado), y **postura SSR** (`dom:false`→disabledDom, ActiveDom owner-doc/iframe-safe, sema ornamental, hidratación = lo que `smoke` caza). Anclado en scripts reales de package.json. Enganchado en `docs/README.md` ("I want to… test").
- **Fase 5 (4/n) — getting-started**: nuevo `docs/getting-started.md` — el camino narrativo de cero a primer cambio: run it → modelo mental con la cadena de transcripción → **ver las 4 capas en un solo elemento del DOM** (toggle: `data-toggle`/`data-state`/`data-event-*` + el CSS de eidos) → loop de verificación con scripts reales → 3 caminos de primer cambio. Anclado en rutas reales (`/uix/components/*`, `/active`, `/temas`) y scripts reales (`check`/`test`/`morfo:check`/`smoke`/`component:audit`/`perm:check`); apunta a COMPONENT_GUIDE/THEMING_GUIDE sin duplicar. Enganchado en `docs/README.md` (callout arriba + fila "I want to"). Hay además un get-started de la app en `/active/get-started/*` (incl. ai-agents) — este es el doc-side.
- **Fase 5 (3/n) — reglas de autoría de doc**: nuevo `docs/authoring.md` — cómo se crea/edita documentación en el corpus, codificando lo que aprendió la migración: (1) linkear el canon, nunca copiarlo (la ley anti-drift); (2) cada doc tiene un estrato + dónde va; (3) docs de referencia atemporales (hand-offs/fechas/catálogos hardcoded → process o puntero); (4) una fuente por concern (roles distintos si hay 2 docs del mismo tema); (5) frontmatter; (6) ediciones renumber-safe (stub pattern para `§N` citadas, verificar links); (7) idioma EN; (8) naming `rfc-*`/`design-*`; + checklist pre-commit. Cada regla cita el fallo real que arregla. Enganchado en `docs/README.md` ("I want to… write a doc" + nota tras los estratos).
## PENDIENTE
### Fase 7 — Corpus-libro en `docs/` (ACTIVA, decisión de usuario 2026-07-02)
El usuario fijó la forma objetivo: **la referencia de capa SE MUEVE a `docs/`**
con orden de libro, en inglés (sustituye la "estructura híbrida" del kickoff);
los 189 READMEs de componente quedan fuera (E5 in-place). Plan completo por
tandas + árbol objetivo + patrón de migración (mover→traducir→stub→barrido→
docs:check): [`PLAN-docs-book.md`](./PLAN-docs-book.md). **F7.1 + F7.2
HECHAS (2026-07-02)**: `docs/architecture/` completo — los 7 capítulos E1
(overview · active-architecture · morfo · soma · soma-architecture · sema ·
eidos) movidos y traducidos a inglés (~5.4k L), stubs con mapa §N en las
rutas viejas, links del corpus barridos, `docs:check` 0 errores tras cada
capítulo. **F7.3 HECHA (2026-07-02)**: `docs/canon/` (tsc, recipe-contract) +
`docs/theming/` completo (reference §1–§38 · guide · notes · channels ·
motion §1–§19 · motion-guide · changelog verbatim) — los stubs de THEMING.md
y eidos-motion.md llevan mapa § completo (los docs más citados por §N desde
código/CLAUDE.md). **F7.4 HECHA (2026-07-02)**: `docs/rfcs/` — 7 RFCs
es→en con rename `rfc-*` vía stub (citas provenance intactas);
decisions.md realineado. **F7.5 HECHA (2026-07-02)**: `docs/guides/` —
component-guide (banner es→en) · completion-checklist (docs-check I5 +
component-audit.ts movidos en la misma tanda) · demo-authoring ·
component-audit (§5 reconciliado a link-don't-copy: 6-tab v1 → puntero a
la guía v2; canary button). **F7.6 HECHA (2026-07-02)**:
`docs/decisions/` — book-deviations + guia-semantica-historica movidos
VERBATIM en castellano (bitácora del autor / semilla histórica; exención
I2 `defaultSemantic` de docs-check sigue al archivo); barrido final
global (frontmatter `related:`, authoring E1, morfo §2.bis, README E2/E3
restos pre-F6) + TOC-libro completo en README (30 capítulos: 8
architecture + 2 canon + 7 theming + 7 rfcs + 4 guides + 2 decisions).
**F7.7 HECHA (2026-07-02, diff aprobado)**: CLAUDE.md 981→350 L. **EL PLAN
F7 ESTÁ COMPLETO** — el workstream docs (fases 1–7) queda cerrado.
Luego F7.5 guides (tocar ruta checklist en docs-check I5), F7.6 decisions +
TOC-libro, F7.7 CLAUDE.md (diff antes de commitear).
### Fase 6 — Reconciliación — **HECHA (2026-07-02)**
Las auditorías `fable_audit.md` + `fable-eidos-audit.md` (2026-07-01/02) verificaron
~14 conflictos doc↔doc y doc↔código + referencia mezclada con bitácora + espejos sin
guard. **Ejecutada completa** (6 commits, `925508c7` → cierre): los ~14 conflictos
corregidos (translations→texts barrido total, GUIA degradada a histórica con 5 fixes,
THEMING §1/§2/§3/§4 reconciliados, deps de soma, checklist con columna Enforcement +
IDs A-*, cascada sema renumerada 1·2·3·4·5a·5b, archetypes por puntero);
`eidos/THEMING_CHANGELOG.md` (THEMING 2603→~1500, stubs vigentes+puntero);
`npm run docs:check` con 6 invariantes (links en WARN). La tabla "Known traps" de
`docs/building-a-component.md` quedó **vacía** (indicador de éxito). Detalle y
desviaciones: [`PLAN-docs-reconciliation.md`](./PLAN-docs-reconciliation.md)
§"Resultado del cierre". Hallazgos derivados pendientes de decisión de usuario:
clsx fantasma (chip), THEMING_AUDIT borrado en worktree (foráneo), PENDIENTES.md
borrado (normas N-6/N-7 huérfanas), popper/ vacío.
### Fase 4 — COMPLETA (resumen en HECHO; detalle de THEMING ↓ para el registro)
- **Partir `THEMING.md`** (2571 L, **34 secciones**, multi-estrato): TSC (§7, §18) → canon visual E2; "añadir componente" (§8)/"definir theme" (§9) → E4 guía; comparación (§15)/FAQ (§17) → E3. El resto (§1-6 mental model/capas/roles/sizes/naming, §10-13 runtime/bundle/validación/sema) = E1 referencia de capa.
- **YA hecho** (commit de §14): §14 motion saneado — tenía una **contradicción** con `eidos-motion.md` (THEMING decía "motion deferred / data-motion-ref no existe / superseded por TSC event:*"; eidos-motion.md dice F1-F7 implementado + motor en `arts/motion` + el event:* scope es el obsoleto). Reescrito como puntero a `eidos-motion.md` (canónico) + conservado el token theming `--motion-scale-lift`.
- **RIESGO** (= el del rename): las secciones están citadas por `§N` a través del corpus (`CLAUDE.md` §23/25/26/27/28, RFCs §25, `arts/color/README` §26, `THEMING_AUDIT` §23) + las §25/29/30/31 solapan los RFCs de color/depth/shape/structure (ya en `docs/decisions.md`). Renumerar rompe esas citas.
- **Enfoque elegido (usuario): split con stubs** — renumber-safe, sin sweep. Extraer cada bloque a su estrato y dejar un stub-puntero numerado en THEMING manteniendo el número de sección → las citas `§N` sobreviven.
- **HECHO — TSC**: §7 (Token Scope Contract) + §18 (cobertura universal v2.2) → `src/uix/eidos/TSC.md` (canon visual E2, frontmatter como CANON.md). En THEMING quedan stubs §7/§18 apuntando a TSC.md. 2550→2271 L. Verificado: 34 headers intactos, §8/§19 limpios, anchors del TOC OK, §23/25/26/27/28 sin tocar.
- **HECHO — guías + notas**: §8+§9 → `src/uix/eidos/THEMING_GUIDE.md` (E4: añadir componente + definir theme); §15 (comparación) + §17 (FAQ) → `src/uix/eidos/THEMING_NOTES.md` (E3). Stubs-puntero en THEMING; §16 anti-patterns y `## Referencias` conservados in-place; §20-34 (datados, changelog) in-place (citados). **THEMING 2571→1930 L; split completo; 34 secciones + citas `§N` intactas.**
- **NOTA harness**: escribir un archivo EXISTENTE con PowerShell `Set-Content` o con regex (`\d+`, ` / ` sueltos) en el comando lo bloquea un analizador (lo lee como `Remove-Item path`). Funciona: `[System.IO.File]::WriteAllLines(abs, $arr, utf8NoBom)` + límites por `.StartsWith()` (sin regex). Crear archivos NUEVOS con `Set-Content` sí va. Las tools Edit/Write también.
### Fase 5 — huecos de libro (escribir nuevo)
~~Entrada E0~~ (hecho) · ~~Glosario~~ (hecho) · ~~reglas de autoría~~ (hecho) · ~~arco *getting-started*~~ (hecho) · decision-log consolidado (semilla: `src/docs/LIBRO_VARIACIONES_Y_EXTENSIONES.md`) · walkthrough "construye tu propia capa" · ~~comparativa honesta vs Radix/Ark/Mantine~~ (hecho) · ~~historia transversal SSR/testing/codegen~~ (hecho).
**Restan de Fase 5** (los más opinables/arriesgados): **decision-log consolidado** (riesgo: duplicar `LIBRO_VARIACIONES`, que YA es el decision-log impl-vs-libro; lo no-consolidado son los ~10 "Session hand-off" de CLAUDE.md → encaja mejor con el ítem Diferido "adelgazar CLAUDE.md") · **walkthrough "construye tu propia capa"** (especulativo — requiere validar que el patrón de capa se extiende limpio a una 5ª; mejor hacerlo deliberado, no de relleno).
### 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).
- **Fósiles `.md` pendientes (censo 2026-06-14, respuesta a "los .md que quedan")**:
- **`DATA_ATTRS.md`** (RAÍZ del repo) + **`scripts/generate-contracts-docs.ts`** — **ELIMINADOS (2026-06-14, orden explícita "elimina deprecated/erróneos")**. Eran un par acoplado fósil del `terra` borrado: el script importaba `src/uix/terra/utils/contracts.ts` (no existe → muerto) y escribía el catálogo deprecated `DATA_ATTRS.md`. La fuente real del contrato `data-*` es el morfo + `morfo:check`. **Pendiente menor**: `package.json` aún tiene el entry `generate:contracts-docs` apuntando al script borrado — NO lo toqué (package.json está foráneo-modificado; barrerlo arrastraría cambios ajenos). Quitar esa línea cuando se resuelvan los cambios foráneos de package.json.
- **`src/audit-opus-4-6-26.md`** (arch audit 2026-06-04) — process/efímero en ubicación de referencia, **sin citas externas** → mover a `docs/process/` limpio.
- **`src/uix/eidos/THEMING_AUDIT_2026-06-01.md`** — process/efímero, pero **citado en ~7 sitios** (CLAUDE.md ×3, THEMING.md ×3, COLOR_ENGINE_RFC) → mover requiere sweep de citas; encaja con el adelgazado de CLAUDE.md.
- **NO mover** (provenance citada, como los RFCs): `src/uix/eidos/lib/canvas-text/fix-stext.md` (citado en ~8 sitios del código canvas-text + TYPOGRAPHY_RFC). Se queda; opcional indexar en decisions.md.
- **Foráneos/concurrentes** (no tocar): `eidos/MOTION_SERVICE_RFC.md`, `eidos/components/chronos/SPEC-CHRONOS-INICIAL.md`. **Excluidos**: words/palabras.
- **Hand-offs de proceso en la RAÍZ**: `CONTINUE-icon-type-scale.md` **RETIRADO (2026-06-14)** — track icono↔tipografía ya resuelto (opción 1); su mitad inferior era el plan "1:1 total" superado (ruido), sus 2 TODOs vivos → `pendiente.md`, sus decisiones ya en `THEMING §5`. **OJO — verificación reveló drift**: §5 documentaba el caso cards STALE (iconos prominentes inflados a xl/xxl) contra el código real del recipe `radio-cards` (16/16/18/18/20, sigue el título); se corrigió §5 (`8a9a0e9c`). Lección: no afirmar "preservado en X" sin abrir X y comparar. `pendiente.md` (pendientes eidos vivos) se queda en raíz; `SYSTEM-AUDIT-2026-06-13.md` = untracked/foráneo.
- **Adelgazar `CLAUDE.md`**: mover sus ~10 "Session hand-off" embebidos a process/ — su propio paso, archivo sensible. (El índice E0 ya existe: `docs/README.md`, cableado desde CLAUDE.md.)
## Referencias
- Mapa de trabajo (scratch): `G:\tmp\docs-corpus-map.md`.
- Canon: `docs/CANON.md`. Proceso: `docs/process/`. Arquitectura: `src/uix/active_architecture.md`.

Powered by TurnKey Linux.