Ir al contenido
CodArchel mapa vivo de la arquitectura
ESEN

Roadmap

Cada milestone deja el producto funcionando y verificable. Nada de big-bang.

Hoy CodArch tiene:

  • CLI (codarch): analyze, diff, render, inspect y serve. Publicado en npm.
  • Modelo cc.json 2.x: árbol de ficheros, métricas, grafo de dependencias, ciclos, lente de migración y checksum determinista. Es la verdad del producto y la comparten todas las apps.
  • Reglas de arquitectura en .codarch.yml: capas, prohibiciones, umbrales y ciclos, con severidad y política de bloqueo.
  • MCP de solo lectura: doce consultas para agentes.
  • GitHub Action: analiza base y head del PR, comenta el resultado y bloquea si la política falla.
  • App web: mapa, inspector, vista de PR, nivel de detalle para repos grandes y análisis de una carpeta en el navegador con el mismo checksum que el CLI.
  • App de escritorio: Electron con su propia interfaz, análisis nativo con git, menú del sistema e instaladores sin firmar.

Las fases M0–M64 están cerradas (M24 descartada). M65–M76 están cerradas. M77 está abierta.

Cada fase vive en la hoja de ruta de la decisión que la trae: el ADR tiene un ## Hoja de ruta con lo abierto y lo que está en curso. Aquí solo está el índice; el detalle de lo hecho vive en el feed de la guía (/guia/). Si una fase crece, crece en su ADR, no aquí.

flowchart TD
subgraph base["Base: modelo, parser, diff"]
M0["M0 · Modelo y mapa"] --> M1["M1 · Parser TS"]
M1 --> M2["M2 · Diff y PR"]
M2 --> M3["M3 · MCP y distribución"]
end
subgraph apps["Apps: migración, web, navegador, escritorio"]
M4["M4 · Lente de migración"] --> M5["M5 · App web"]
M5 --> M6["M6 · Análisis en el navegador"]
M6 --> M7["M7 · App de escritorio"]
M7 --> M26["M26 · La UI compartida"]
M26 --> M37["M37 · La ficha del fichero"]
M37 --> M38["M38 · Las reglas tienen su pestaña"]
M38 --> M39["M39 · Tres pestañas"]
M39 --> M40["M40 · Una tabla de métricas"]
M40 --> M41["M41 · El marco del proyecto"]
M41 --> M42["M42 · Los símbolos también se pliegan"]
M42 --> M43["M43 · Todos los símbolos del módulo"]
M43 --> M44["M44 · La ficha no esconde nada"]
M44 --> M45["M45 · Cada componente su versión"]
M45 --> M46["M46 · La acción vuelve al monorepo"]
M46 --> M47["M47 · La ficha enseña el código"]
M47 --> M48["M48 · Editor y dependencias"]
M48 --> M50["M50 · Dos pestañas"]
M50 --> M51["M51 · Una lista de ficheros"]
M51 --> M52["M52 · La tabla base → head"]
M52 --> M53["M53 · Cambios desde el último commit"]
M53 --> M54["M54 · Una sola interfaz"]
M54 --> M55["M55 · Una sola sesión"]
M55 --> M56["M56 · Cambios es de git"]
M56 --> M57["M57 · Las líneas no son código"]
end
subgraph lentes["Lentes: migración, dominio, símbolos, tiempo"]
M8["M8 · La migración donde faltaba"] --> M9["M9 · Lente de dominio"]
M9 --> M10["M10 · Evolución temporal"]
M10 --> M11["M11 · Lente de símbolos"]
M11 --> M12["M12 · Vida de un símbolo"]
end
subgraph ext["Ajustes y extensiones"]
M13["M13 · Los ajustes"] --> M14["M14 · Los plugins"]
M14 --> M15["M15 · La vista 3D"]
M15 --> M16["M16 · Los addons"]
M16 --> M17["M17 · Instalar y quitar"]
end
subgraph docs["Documentos y web"]
M18["M18 · Documentos ordenados"] --> M19["M19 · Iconos y diagramas"]
M19 --> M20["M20 · La guía, en HTML"]
M20 --> M21["M21 · Versiones y actualizaciones"]
M21 --> M22["M22 · El repo, con sus papeles"]
M22 --> M23["M23 · La web del proyecto"]
M23 --> M24["M24 · Índice SQLite"]
end
subgraph delivery["Entrega"]
M25["M25 · La entrega se automatiza"]
M25 --> M27["M27 · La app web en Docker"]
M26 --> M28["M28 · El escritorio se instala y se actualiza"]
end
subgraph idiomas["Más lenguajes"]
M61["M61 · Java, Python, Go y C#"]
end
subgraph agentes["Para agentes"]
M62["M62 · El mapa, en una captura"]
end
subgraph carpeta["La carpeta"]
M63["M63 · La carpeta tiene su ficha"]
end
subgraph resto["Lo que no es código"]
M64["M64 · El mapa de lo que no es código"]
M64 --> M76["M76 · Las reglas del resto"]
end
subgraph lint["El lint"]
M65["M65 · El lint, en el mapa"]
M67["M67 · El lint es del proyecto"]
M65 --> M75["M75 · El lint se lee por hallazgos"]
end
subgraph proyecto["El proyecto"]
M66["M66 · El proyecto tiene su ficha"]
end
subgraph duplicacion["La duplicación"]
M68["M68 · La duplicación, medida"]
M69["M69 · La duplicación, en el mapa"]
M70["M70 · La divergencia, con nombre"]
M71["M71 · La duplicación, en el diff"]
end
M3 --> M4
M7 --> M8
M12 --> M13
M17 --> M18
M21 --> M25
M1 -.-> M61
M1 -.-> M62
M1 -.-> M63
M1 -.-> M64
M1 -.-> M65
M65 -.-> M66
M66 -.-> M67
M1 -.-> M68
M68 -.-> M69
M69 -.-> M70
M70 -.-> M71
M2 -.-> M71
FaseQuéEstadoDecisión
M0Modelo y mapa, sin parserscerradaADR 0005
M1Parser propio de TypeScriptcerradaADR 0003
M2Diff y PRcerradaADR 0010
M3MCP y distribucióncerradaADR 0014
M4Lente de migracióncerradaADR 0016
M5App webcerradaADR 0008
M5.1Básicos de usocerradaADR 0008
M6Análisis en el navegadorcerradaADR 0020
M7App de escritoriocerradaADR 0021
M8La migración, donde ya faltabacerradaADR 0022
M9Lente de dominio, por pasoscerradaADR 0023
M10La evolución temporalcerradaADR 0024
M11La lente de símboloscerradaADR 0025
M12La vida de un símbolocerradaADR 0026
M13Los ajustescerradaADR 0027
M14Los pluginscerradaADR 0028
M15La vista 3D, retirada en el ADR 0114cerradaADR 0028
M16Los addonscerradaADR 0029
M17Instalar y quitar plugins y addonscerradaADR 0030
M18Los documentos ordenadoscerradaADR 0031
M19Los documentos, con iconos y diagramascerradaADR 0031
M20La guía, en HTMLcerradaADR 0031
M21Las versiones y las actualizacionescerradaADR 0032
M22El repo, con sus papelescerradaADR 0033
M23La web del proyectocerradaADR 0034
M24El índice SQLite de los documentosdescartadaADR 0036
M25La entrega se automatizacerradaADR 0042
M26La UI compartidacerradaADR 0043
M27La app web en DockercerradaADR 0044
M28El escritorio se instala y se actualizacerradaADR 0045
M29Los documentos con StarlightcerradaADR 0046
M30El changelog es la guíacerradaADR 0047
M31El sitio en dos idiomascerradaADR 0046
M32El escritorio persiste en .codarch/cerradaADR 0048
M33La orquestación compartidacerradaADR 0049
M34El estado vive en el repositoriocerradaADR 0050
M35La segunda red del lintcerradaADR 0054
M36El live no repite el análisiscerradaADR 0056
M37La ficha del fichero habla de sus lentescerradaADR 0057
M38Las reglas tienen su pestañacerradaADR 0058
M39Tres pestañascerradaADR 0059
M40Una tabla de métricascerradaADR 0060
M41El marco del proyectocerradaADR 0061
M42Los símbolos también se pliegancerradaADR 0062
M43Todos los símbolos del módulocerradaADR 0063
M44La ficha no esconde nadacerradaADR 0064
M45Cada componente su versióncerradaADR 0065
M46La acción vuelve al monorepocerradaADR 0066
M47La ficha enseña el códigocerradaADR 0067
M48La ficha abre el editor y sus dependenciascerradaADR 0068
M49El lenguaje de la ficha, en todo el reportecerradaADR 0061
M50Dos pestañas: el fichero y el cambiocerradaADR 0069
M51Los ficheros del cambio, en una listacerradaADR 0070
M52La tabla de Cambios va de base a headcerradaADR 0071
M53Cambios desde el último commitcerradaADR 0072
M54Una sola interfazcerradaADR 0073
M55Una sola sesión de análisiscerradaADR 0074
M56Cambios es de gitcerradaADR 0075
M57Las líneas no son códigocerradaADR 0076
M58El diff, al abrir el ficherocerradaADR 0077
M59Balance de deudacerradaADR 0078
M60El inspector con barra de actividadcerradaADR 0079
M61Java, Python, Go y C#cerradaADR 0090
M62El mapa, en una capturacerradaADR 0091
M63La carpeta tiene su fichacerradaADR 0092
M64El mapa de lo que no es códigocerradaADR 0093
M65El lint, en el mapacerradaADR 0094
M66El proyecto tiene su fichacerradaADR 0095
M67El lint es del proyectocerradaADR 0096
M68La duplicación, medidacerradaADR 0102
M69La duplicación, en el mapacerradaADR 0102
M70La divergencia, con nombrecerradaADR 0102
M71La duplicación, en el diffcerradaADR 0102
M72El checksum es del códigocerradaADR 0103
M73El navegador lee el mismo alcancecerradaADR 0103
M74La app compara código e historialcerradaADR 0103
M75El lint se lee por hallazgoscerradaADR 0104
M76Las reglas del restocerradaADR 0105
M77El Atlas, un plugin de vistaabiertaADR 0113

Ítems abiertos que no son fase todavía. Viven aquí (no como casillas sueltas en cada ADR) hasta que nazca su fase. Cada línea enlaza la decisión donde se decidió.

  • Decidir si la caché de parseo se comparte entre el análisis del escritorio y serve — ADR 0056
  • Medir si el churn al añadir o borrar un fichero puede pedir solo los caminos nuevos — ADR 0056
  • Red de seguridad del vigilante ante desbordes de avisos (p. ej. Windows) — ADR 0056
  • Reglas que tocan un símbolo (no solo el fichero), cuando el reporte sepa la línea — ADR 0057
  • Enseñar la evolución del fichero en Lentes cuando el historial tenga más de una foto — ADR 0057
  • Filtrar Reglas por severidad u origen y buscar por nombre — ADR 0058
  • Catálogo de reglas configuradas que no se violan — ADR 0058
  • Recordar la última sección abierta de la ficha al cambiar de celda — ADR 0059
  • Agrupar imports bajo un pliegue si la tabla de métricas crece — ADR 0060
  • Atajo para plegar o desplegar todas las secciones — ADR 0061
  • Filtrar símbolos por nombre en ficheros con lista enorme — ADR 0062
  • Distinguir el valor de una variable (texto, número, objeto) en la fila — ADR 0063
  • Espacios de nombres y código suelto, solo si aparecen en un repo real — ADR 0064
  • Claves de objetos, como detalle de una variable — ADR 0064
  • Elegir el editor (VS Code, Cursor, otro) en los ajustes — ADR 0068
  • Enseñar el tipo de arista (import normal, type-only, dinámico) — ADR 0068
  • Añadir action.yml en la raíz del monorepo si se quiere GitHub Marketplace — ADR 0066
  • Rehacer las capturas de la webapp y de primeros pasos con el marco nuevo — ADR 0082
  • Rehacer las capturas del engranaje y del rail/dock — ADR 0083
  • Checklist de la captura del mapa (carpetas, rojo dominante, hallazgos sin zoom, selección sin color, blanco y negro) — diseño del mapa
  • Lente rest.links con la línea del enlace (queda fuera de v1 de M76; reabrir solo si el snapshot del resto guarda la lente) — ADR 0105
  • Una fase nace en la hoja de ruta de su decisión (## Hoja de ruta del ADR); aquí solo se le añade la línea.
  • Una decisión que crece agranda su hoja de ruta y deja lo hecho en la guía, no en este fichero.
  • Las ideas que todavía no son fase viven en el backlog de este fichero (con enlace al ADR) o en la guía, por orden cronológico.
  • El índice de las decisiones —con su fecha y su estado— está en docs/adr/index.md.