Ir al contenido

Índice de ADRs — IngelCoding

Registro de decisiones arquitectónicas del proyecto IngelCoding. Para el contexto del framework de ADRs ver ADR-Pipeline-V2-Framework#Fundamento teórico.

Un Architectural Decision Record es un documento corto que captura una decisión arquitectónica con su contexto, alternativas evaluadas, opción elegida y consecuencias. Es la trazabilidad del “por qué” del sistema: cuando alguien (tú dentro de 6 meses o un colaborador nuevo) se pregunte “¿por qué este proyecto hace X así?”, la respuesta vive aquí.

  • Nombre: descriptivo, sin numeración. ADR-<Tema>.md. Ejemplo: ADR-Source-Connectors.md.
  • Ubicación: 01-Arquitectura/ADR/.
  • Frontmatter obligatorio: tags, created, type: decision, status, produced_by, engram_id.
  • Estados: proposedaccepted → (eventualmente) superseded o deprecated.
  • Cada ADR aceptado/propuesto se guarda en Engram con topic_key: ingelcoding/adr/<slug> y el engram_id va en el frontmatter.
  1. Estado (Propuesta / Aceptada / Reemplazada por X / Obsoleta)
  2. Contexto — problema y situación que motiva la decisión
  3. Opciones evaluadas — alternativas reales con pros/contras
  4. Decisión — qué se elige
  5. Fundamento (opcional) — teoría o referencias que respaldan
  6. Consecuencias — positivas / negativas / neutras
  7. Ver también — links a docs relacionados
ADRTemaEstadoEngramCreadoResumen
ADR-Zonal-Gestora-DerivadaZonal Gestora derivada vs físicaAceptada#12202026-05-14Computar Zonal_Gestora en pipeline desde Control de OTs en vez de mantenerla manual en GSheets. Single source of truth
ADR-Pipeline-V2-FrameworkFramework BasePipeline + DAG 6-stageAceptada (retroactiva)#12272026-05-18Adopción formal del framework V2: 6 etapas opcionales, PipelineConfig inmutable, YAML spec externo, short-circuits estándar
ADR-Integracion-Alertas-Waypoint-DWIntegrar alertas_waypoint al Data WarehouseAceptada#1318 + #1326 (SDD archive)2026-06-01Pipeline (antes solo Excel) llevado al DW: constelación fact_alertas_waypoint + dim_vehiculo en data_warehouse.db (grano evento-vehículo, sin OT, reusa dim_calendario, geo lat/long 100%) → Supabase → Power BI. Implementado vía SDD alertas-waypoint-al-dw (36 tests, 12/12 COMPLIANT, 9/9 modularización). Documenta el flujo real pipeline→DW
ADR-Data-Warehouse-EpilogueDW build + migración Supabase como epílogo del orquestadorAceptada#1354 + #1352 (SDD archive)2026-06-03run_pipeline.py --migrate (solo —all, gate todos-OK, exit≠0 si falla) construye el DW y migra seguro (drop opt-in); dim_ot rescatado. Implementado vía SDD migracion-segura-orquestador (PR #59)
ADR-Source-ConnectorsHexagonal architecture para fuentes de datosAceptada#1228 + #1238 (F1) + #1248 (F2) + #1256 (F2.1) + #1265 (F2.2) + #1273 (F2.3) + #1281 (F2.4+F2.5) + #1289 (F2.6) + #1297 (F2.7)2026-05-18 (decisión) / 2026-05-27 (aceptada)ARCO COMPLETO: 6/6 pipelines IMAP en patrón Hexagonal directo + shim/core.ingest_imap eliminados (F2.7). R1-R7 todos ejercitados por consumidores reales (R4 multi-zonal validado por gantt). Capabilities: source-connectors + imap-connector (7 Reqs — R7 backward-compat REMOVED en F2.7). Ver Plan-Migracion-F2.2-F2.6
ADR-Costos-Metas-a-DWMigración de METAS MES (costos) a Data WarehousePropuesta2026-06-07Eliminar artefactos manuales METAS MES/MES0 de la planilla. Crear fact_costos_hh = volcado directo de costo_por_hh; METAS MES → SELECT sobre DW. Rename hb_dia_esperado→hb_dia_total, hb_dia_esperado_sv→hb_dia_prod. 5 gaps de implementación pendientes.
ADR-Portal-Multi-FrameworkPortal multi-framework Angular+Svelte por URLAceptada2026-06-16apps/portal-docs (Angular 21) = documentación/wiki; apps/portal-datos (Svelte 5 + Vite) = datos de negocio. Conviven bajo el mismo dominio por path/subdominio con links HTML normales y tokens visuales compartidos. La era agéntica elimina el costo cognitivo histórico del multi-stack.

Algunas ADRs se materializan en una capability con su propio spec en openspec/specs/<capability>/spec.md. Mapa actual:

CapabilityADR que la respaldaArchives Engram
source-connectorsADR-Source-ConnectorsF1 #1238
imap-connectorADR-Source-ConnectorsF2 #1248 + F2.1 #1256 + F2.2 #1265 + F2.3 #1273 + F2.4+F2.5 #1281 + F2.6 #1289 + F2.7 (REMOVE R7, 8→7 Reqs) #1297

ADRs pendientes (apuntados desde ADRs existentes)

Sección titulada «ADRs pendientes (apuntados desde ADRs existentes)»
ADR pendienteRazónOrigen
ADR-Orquestador-ComposicionDecisión sobre meta-orquestador (run_pipeline.py + epilogue) vs monolitoDiscusión 2026-05-18
ADR-Maturity-Levels ⚡ prioritarioDefinir 5 niveles L1-L5 de madurez del pipeline (qué metadata exige cada nivel)Discusión 2026-05-18
ADR-Data-ContractsSchema hash + freshness SLA por datasetADR-Source-Connectors §Ver también
ADR-Sink-ConnectorsPatrón Hexagonal para publishers (Drive, GSheets, SQLite analítica) — cara opuesta de Source-ConnectorsADR-Source-Connectors §Ver también
ADR-Connector-Statefulness ⚡ prioritarioCuándo se permiten connectors con estado (cache, pool, rate-limiter), qué garantías de concurrencia exigir, qué primitivas usar (threading.Lock, asyncio, queue). Relevante de inmediato para un futuro GSheetsConnector (F5) con rate-limitSpec source-connectors-f1 §Non-Functional Requirements
ADR-Ingeldata-vs-DatawarehousePor qué hay dos BDs separadas (operacional vs analítica)Auditoría DB 2026-05-18
  1. Nombre: ADR-<Tema-Descriptivo>.md en 01-Arquitectura/ADR/
  2. Copiar frontmatter de un ADR existente (mantener type: decision)
  3. Estado inicial: status: proposed
  4. Cuerpo: seguir la estructura recomendada arriba
  5. Guardar en Engram: mem_save(topic_key="ingelcoding/adr/<slug>", type="decision"|"architecture") y agregar engram_id al frontmatter
  6. Actualizar este índice: agregar fila en la tabla de ADRs vigentes
  7. Cambiar estado a accepted cuando se acepta (puede ser inmediato si es retroactiva)
Reference-BasePipeline.md ← contrato técnico (single source)
│ enlaza
ADR-Pipeline-V2-Framework ← por qué se eligió
ADR-Source-Connectors ← por qué Hexagonal
│ enlaza
Como-Crear-Pipeline-Nuevo ← cómo hacerlo (operativo)

Cada doc cumple un rol distinto (Diataxis):

  • Reference = qué es el contrato exacto
  • ADR = por qué se decidió así (con alternativas evaluadas)
  • How-to = cómo aplicarlo en el día a día