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

19 KiB

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. 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 §"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.