Saltar a contenido

ADR-029: Separación de repositorios system/ y web/

Estado: aceptado

Contexto

SmallCountry opera con dos planos: documentación pública y gobernanza operativa. Se debía decidir si ambos convivían en un solo repositorio o en repositorios separados, considerando la separación de preocupaciones (gobernanza §5), la independencia operativa, y la necesidad de CI específico para cada dominio.

Decisión

Dos repositorios independientes en Forgejo:

  • smallcountry/infra-core — Documentación pública (MkDocs), fichas de servicios, manual técnico, principios. Servido en tonatiuh.duckdns.org. CI de build + deploy + validación de docs.

  • smallcountry/system — Plano de control SpecKit. Specs, reglas de ejecución, CI de gobernanza. No expuesto públicamente. CI de coherencia estructural + drift detection.

Los dos repositorios deben mantenerse coherentes mediante CI cross-repo (ver governance-ci.yml en system/).

Alternativas consideradas

Opción Por qué se descartó
Un solo repo (infra-core) Mezcla documentación pública con gobernanza interna. CI de docs y de gobernanza colisionan. Difícil separar permisos y audiencia.
Tres repos (web + system + archivo) Fragmentación excesiva. archivo_referencias/ no necesita repo propio — es histórico inmutable.

Consecuencias

  • ✅ Separación clara de responsabilidades: web = fachada, system = control
  • ✅ CI independiente para cada dominio (docs vs gobernanza)
  • ✅ system/ puede operar aunque web/ esté caído (autosuficiencia)
  • ✅ web/ no expone la maquinaria interna de SpecKit
  • ❌ Dos repos que mantener coherentes (mitigado: governance-ci.yml con cross-validation)
  • ❌ El operador debe recordar qué vive en cada repo