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 entonatiuh.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