Volver a la wiki

Sistema Supercontexto · wiki auto-mantenida con grafo D1

ADR — Sistema Supercontexto · wiki auto-mantenida con grafo D1

Contexto

CreaRack Pro es una plataforma SaaS desarrollada por un equipo de dos developers (Edu y Dani) con apoyo de un agente Claude Code por persona. El codebase ronda los ~509 endpoints Django Ninja repartidos en una docena de apps, ~3800 nodos indexados en grafo (Python + TypeScript), y una superficie funcional amplia (Rack Editor, Map Editor, Network Observatory, Signage CMS, Local Agent, Terminal SSH, CNS).

A finales de 2025 la documentación vivía dispersa en una decena de docs raíz (CLAUDE.md, README.md, ARCHITECTURE.md, BACKEND.md, FRONTEND.md, DEVOPS.md, etc.) más comentarios de código y conversaciones efímeras con Claude. Cada vez que un agente abría una sesión nueva, el contexto se reconstruía desde cero: leer 30k+ líneas de markdown, deducir relaciones entre módulos, redescubrir decisiones que ya se habían tomado meses atrás. La señal a ruido caía conforme crecía el corpus, y los devs duplicaban trabajo sin saberlo.

Tres incidentes recurrentes empujaron a formalizar un sistema:

Problema

¿Cómo se mantiene una memoria persistente, consultable y auto-curada del proyecto, accesible tanto por humanos como por agentes Claude, sin que su mantenimiento sea otro trabajo a tiempo parcial para un equipo de dos personas?

Restricciones:

Opciones consideradas

1. Status quo · docs dispersos en MD raíz crece infinito. Cero infraestructura nueva, cero coste, cero curaduría. Cero recuperación al crecer. La memoria se desborda cada 6 meses y nadie sabe qué borrar. Descartada — es lo que ya tenían y produjo los incidentes que motivan este ADR.

2. Notion / Outline / Confluence externo. Solución madura, búsqueda decente, multi-usuario. Pero rompe la regla “docs vive con el código” (no commitea, no diff, no PR), introduce un proveedor SaaS adicional con coste por usuario, no es accesible por agentes Claude sin integración custom, y la curaduría sigue siendo manual. Descartada — coste de fricción humano + dependencia externa + opacidad para agentes.

3. Obsidian local sin grafo D1 ni ingest automático. Vault markdown en repo, abre en Obsidian, da grafo visual gratis. Funciona para humanos pero no para agentes (Claude Code no consulta Obsidian) y la curaduría sigue siendo 100% manual: detectar staleness, completar related:, archivar drafts, todo a mano. Parcialmente útil — adoptada como capa visual complementaria, no como sistema completo.

4. Wiki estática Astro sin grafo ni ingest LLM. Sólo Markdown renderizado en workspace.crearack.com/wiki. Mejora consulta humana pero no resuelve drift ni cobertura. Edu/Dani siguen escribiendo docs a mano y nadie verifica que sigan siendo verdad. Descartada — resuelve presentación, no mantenimiento.

5. Sistema Supercontexto · Astro + D1 + MCP + crons GHA + ingest LLM. Wiki como contenido Astro versionado en repo, espejada en tabla bib_wiki_pages de Cloudflare D1, indexada en grafo (bib_* tables) y en Archivo Maestro vectorial (Workers AI bge-m3). Mutaciones via 12 tools MCP wiki_*. Ingest automático post-merge a main usando un pipeline LLM 3-tier (filtro pre-LLM gratis → triage Haiku → loop Sonnet con prompt caching) que crea/actualiza pages a partir de los diffs. Crons GHA de mantenimiento (Curator, Lint stale/orphans, Lint contradictions, utility_score, weekly report, catalog regen). Skills CLI bib-* y wiki-* para acciones manuales puntuales. Sensor “Bibliotecario” en dashboard del workspace + sección “Bibliotecario · 7d” en Pulse para visibilidad operativa. Seleccionada.

Decisión

Se adopta Supercontexto como sistema único de gestión del conocimiento del proyecto. El sistema se compone de cinco subsistemas que se entregaron como Fases 0-6 más Fase 7 (TypeScript Graphify):

  1. Backbone D1 + MCP (Fase 1) — 4 tablas bib_wiki_* + 12 tools MCP + schema Zod compartido + pre-commit check de front-matter.
  2. Backfill al schema (Fase 2) — 220 pages migradas con 4 subagentes Opus paralelos en sesión 17 (corpus al 100% Supercontexto, 0 legacy).
  3. Ingest automático (Fases 3 + 3.5) — workflow GHA post-merge con trigger híbrido pull_request: closed + push: main, pipeline 3-tier que abarata el coste 80% ($50/mes a ~$10/mes).
  4. Query con cierre + Lint + Métricas (Fases 4-6) — bib_ask archiva respuestas valiosas como drafts (Curator decide promote/delete), wiki_lint_bulk y wiki_lint_contradictions corren en cron, wiki_utility_recompute puntúa pages por uso real (query_hit en bib_ask).
  5. TypeScript Graphify (Fase 7) — extractor bib_ast_ts.mjs añade 669 nodos TS al grafo (3170 → 3839), cierra el gap “código TypeScript invisible para bib_search_nodes”.

Arquitectura operativa:

Reglas de Oro asociadas: Regla 0 (Biblioteca primero), Regla 19 (arranque/cierre Supercontexto), Regla 20 (push vs PR híbrido), Regla 17 (no SPOF), Regla 15 (HTTP 200 ≠ éxito).

Consecuencias

Positivas

Negativas / trade-offs honestos

Status

Accepted. Plan cerrado en sesión 22 (tag supercontext/plan-complete, 2026-04-24). En modo operativo desde entonces — backlog observacional + crons reactivos + 5 iniciativas post-audit (I1-I5) en ejecución desde sesión 26. Cualquier cambio de alcance que altere los pilares (D1 como espejo, MCP como única ruta de mutación oficial, ingest 3-tier, 6 tipos canónicos) requiere nuevo ADR y aprobación explícita de Edu.

Véase también

Subir