Skip to content

Colombia · Contenido y datos

Colombia · Sala de Crisis describe qué es la suite. Esta página escribe lo que hasta ahora vivía solo en la cabeza de quien la operaba: el modelo operativo de contenido — qué archivo alimenta qué superficie, con qué ritmo se refresca cada fuente, qué dato entra después y bajo qué reglas editoriales. Las 14 rutas del mapa de módulos consumen dos carriles de datos que no se mezclan: el carril real (public/data/colombia/real/, 24 archivos citables más el termómetro de frescura) y el carril demo (public/data/colombia/fixtures/, sintético por diseño). El detalle fuente por fuente — caveats, licencias, discrepancias sin resolver — vive en public/data/colombia/real/MANIFEST.md; esta página es el mapa de operación encima de ese inventario.

Inventario: qué dato alimenta qué superficie

Carril real

ArchivoFuenteSuperficie que lo montaQué aporta
seismic-catalog.jsonUSGS FDSNSala de Crisis (capa sísmica)Catálogo de réplicas M2,5+ con horas desde el evento
shakemap-intensity.jsonUSGS ShakeMapSala de Crisis (capa sísmica)Contornos de intensidad MMI
shakemap-departments.jsonUSGS ShakeMap + DANESala de Crisis (capa sísmica)MMI máximo por cabecera departamental
pager-estimates.jsonUSGS PAGERSala de Crisis (capa sísmica)Distribuciones probabilísticas de fatalidades y pérdidas (modelo, no conteo)
dyfi.jsonUSGS Did You Feel ItSala de Crisis (capa sísmica)Reportes ciudadanos y CDI máximo
feeds.jsonIFRC GO + GDACSBriefing («Fuentes en vivo»)Feed situacional unificado, deduplicado por URL
ifrc-appeal.jsonIFRC GOBriefing («Fuentes en vivo»)Llamamiento MDRCO036: solicitado vs. financiado (CHF)
gdacs.jsonGDACSBriefing («Fuentes en vivo»)Alerta roja y población expuesta (modelo)
external-trackers.jsoncolombiatebusca.comBriefing («Fuentes en vivo»)Contadores del rastreador ciudadano, etiquetado «no oficial»
pledges.jsonDossier de prensa 2026-08-13Fondo Milagro («Respuesta internacional»)Compromisos por donante con estatus explícito
cat-ddo-terms.jsonDossier de prensa 2026-08-13Fondo Milagro («Respuesta internacional»)Términos completos de la línea CAT DDO
trm.jsonSuperfinanciera (datos.gov.co)Fondo Milagro («Respuesta internacional»)La única tasa admisible para conversiones COP→USD
sitreps.jsonIFRC GOFondo Milagro («Respuesta internacional»)Registros del llamamiento y reportes de situación
services-status.jsonAerocivil + MinTIC + alocución + prensaServiciosRestauración por sector, cada fila con cita y as_of propios
donation-channels.jsonPrensa oficializadaVerificador de donacionesCanales autorizados + registro negativo
promesas-tecnologicas.jsonAlocuciones y plan tecnológicoReloj de promesasCompromisos con reloj de 100 días, estatus como hechos
satellite-damage.jsonCopernicus EMS (EMSR916)Reconstrucción (panel satelital)Evidencia de daño independiente del Gobierno
citations-real.json— (registro)Todas las superficies del carril realLas 42+ citas que respaldan cada cifra mostrada
data-health-colombia.json— (derivado local)Pendiente de superficieFrescura fresh|aging|stale de cada archivo del carril

Siete archivos más están horneados, tipados y con loader exportado (src/lib/colombia-real-data.ts) pero sin superficie dedicada todavía — son denominadores y contexto a disposición de cualquier stream:

ArchivoPapel esperado
seismic-events.jsonLa verdad sísmica del evento (hipocentro, magnitud mww); toda superficie que muestre profundidad debe leerlo, no la constante de fixtures
demographics.jsonDenominador por DIVIPOLA (cohorte escolar 5–16, no población total)
health-facilities.jsonDenominador para reconciliar los «179 centros de salud» (3.051 sedes IPS)
schools.jsonDenominador para las 1.819 sedes afectadas (universo con vigencia 2019)
procurement.jsonContratación real publicada: los procesos de urgencia manifiesta a vigilar
fiscal.jsonMarco fiscal (contexto, jamás impacto)
situation-reports.jsonDestino del swap FIXTURE_TO_REAL de la fixture homónima: 1 balance oficial en vez de 3 cortes

Carril demo

Todo lo que llega a nivel de persona u operación individual es sintético, lleva synthetic: true y monta el banner DATOS DE DEMOSTRACIÓN:

FixtureSuperficieNota
situation-reports.jsonSala de Crisis, BriefingTrae 2 cortes reconstruido_demo que no cruzan al carril real
affected-zones.jsonSala de Crisis (mapa)Reparto municipal demo sobre agregados reales
promises.jsonSala de Crisis («Lo prometido»)Los 17 compromisos del discurso
fondo-ledger.jsonFondo MilagroEl libro mayor encadenado por hashes — el Fondo no tiene ledger público real
reconstruction-projects.jsonReconstrucción + ficha de obra83 obras demo; la contratación real es procurement.json
relief-programs.jsonAliviosLos 5 programas anunciados como reglas legibles
households.jsonRegistro, AliviosNunca tendrá equivalente real: datos a nivel de persona, la plataforma no ingesta PII
missing-persons.jsonBuscador de personasIgual: nunca tendrá equivalente real
shelters.jsonRed de alberguesSin API pública conocida
aid-shipments.json, collection-points.jsonLogísticaSin API pública de la operación «Colombia Un Solo Corazón»
citations-colombia.json(registro fixture)Citas del carril demo

Cadencia de refresco

Cada fuente tiene su propio ritmo, y el ritmo está declarado — en el MANIFEST como prosa y en bake-colombia-health.ts como umbrales numéricos. Tres mecanismos:

  • script (API en vivo)bun run scripts/colombia/ingest-*.ts la consulta y re-hornea; idempotente, con caché de respuestas crudas.
  • manual reverificado — cifras transcritas de fuentes oficiales, pero el script sondea las fuentes en cada corrida (frases de carga de Aerocivil/MinTIC, cadenas del dossier en pledges, índice del Banco Mundial) y registra lo observado.
  • manual — curado contra comunicados; se actualiza cuando la fuente publica.
ArchivoMecanismoUmbral fresh / aging (días)¿Candidato a cron?
seismic-events.json, seismic-catalog.jsonscript (ingest-seismic*.ts)2 / 7Sí — el candidato n.º 1 (auto-refresh de réplicas)
shakemap-*.json, pager-estimates.json, dyfi.jsonscript (ingest-seismic-deep.ts)3 / 14Sí (misma corrida que las réplicas)
feeds.json, ifrc-appeal.json, gdacs.json, sitreps.jsonscript (ingest-feeds.ts, ingest-sitreps.ts)2 / 7Sí, diario mientras la operación siga abierta
trm.jsonscript (ingest-pledges.ts)1 / 4Sí, diario (día hábil)
procurement.jsonscript (ingest-procurement.ts)1 / 3Sí — re-pull frecuente durante urgencia manifiesta (ver hoja de ruta)
external-trackers.jsonscript (ingest-feeds.ts)1 / 3Sí, diario
satellite-damage.jsonscript (ingest-satellite.ts)2 / 7Sí mientras haya productos pendientes de EMSR916
demographics.json, schools.json, fiscal.jsonscript90 / 365No — fuentes anuales; corrida trimestral de verificación basta
health-facilities.jsonscript30 / 90No — corte periódico del registro
services-status.jsonmanual reverificado (ingest-services.ts)2 / 7Parcial: el sondeo sí; la consolidación es juicio editorial
pledges.json, cat-ddo-terms.jsonmanual reverificado (ingest-pledges.ts)3 / 14 · 7 / 30Parcial: la validación de cadenas sí; filas nuevas son curaduría
situation-reports.jsonmanual (transcripción citada)2 / 7No — reemplazar por el boletín UNGRD es la vía, no un cron
donation-channels.jsonmanual7 / 30No — cambia solo si Presidencia publica canales
promesas-tecnologicas.jsonmanual7 / 30No — se actualiza por hito del reloj (próximo: día 30)

El patrón de cron (referencia, sin adoptar todavía)

El repositorio ya tiene el mecanismo: vercel.json declara crons de Vercel (hoy uno, { "path": "/api/alerts-digest", "schedule": "0 13 * * 1" }). Ese es el patrón a seguir cuando se automatice el refresco — no se agrega ninguno en esta ola, porque las ingestas de Colombia son scripts de repositorio que escriben archivos horneados y commiteados: un cron de Vercel solo invoca una ruta serverless, así que automatizar exige primero decidir entre (a) una ruta /api/ que re-ingiere y sirve desde caché sin tocar el árbol, o (b) un job programado de CI que corre ingest-all.ts y commitea el diff (que gracias a la idempotencia solo existe cuando la fuente se movió de verdad). Esa decisión es de arquitectura, no de contenido, y queda registrada aquí como pendiente.

El termómetro: data-health-colombia.json

bun run scripts/colombia/bake-colombia-health.ts lee los 24 archivos del carril, junta la marca ingest.retrieved_at de cada uno con su cadencia declarada y hornea la clasificación fresh | aging | stale por archivo (más el rango de as_of por fila donde existe, como en services-status.json). Los umbrales son por fuente: una TRM de hace 3 días está vencida, una serie anual del Banco Mundial de hace 3 meses está fresca. El archivo declara citations: [] porque es derivado local — no hay fuente upstream que citar.

Registro pendiente en el gate. data-health-colombia.json aún no figura en los SPECS de scripts/colombia/check-real-data.ts. La razón original —que otra rama de la misma ola editaba ese archivo— quedó atrás con la integración de la ola 4; lo que queda es una decisión de diseño del gate: registrarlo obliga a abrir una exención a la regla genérica «filas ⇒ al menos una cita» para archivos derivados con citations: [], y una exención al gate se abre a propósito y con su propio PR, nunca de paso en una integración. Hasta entonces, el checker de MANIFEST no lo exige y el bake corre por fuera del prebuild.

Hoja de ruta: próximos datos

Priorizada por impacto sobre esfuerzo. «Compuerta» nombra lo que tiene que pasar fuera del repositorio para que la fila sea posible.

#CandidatoQué desbloqueaEsfuerzoImpactoCompuerta
1Boletín UNGRD / EDAN legible por máquina, cuando se publiqueReemplaza la alocución transcrita como fuente de registro del balance oficial — el reemplazo n.º 1 declarado en el MANIFEST. Con dos o más cortes, la Sala de Crisis dibuja tendencia real en vez de un puntoBajo–medio (la forma SituationReport ya existe)AltoQue la UNGRD publique; hoy la cadena documental termina en el discurso
2Re-pulls SECOP II durante urgencia manifiesta + banderas OCDSLa línea base es 2 procesos de urgencia manifiesta al 2026-08-11; el pico llegará con la contratación directa de los 12 meses del Decreto 1171. Re-pull frecuente + banderas rojas del estándar OCDS (oferente único, adjudicación ultrarrápida, concentración por contratista, precio desviado de la mediana) sobre datos reales — hoy el motor de riesgo corre sobre fixturesMedio (ingest-procurement.ts existe; faltan cadencia y reglas)Alto — es la superficie anticorrupción centralNinguna: SECOP II es público
3DANE población municipal totalCierra la brecha n.º 1 de REAL_DATA_GAPS: denominadores reales por municipio en vez de la cohorte escolar 5–16Medio (descarga de hoja de cálculo, no API: parser + cita de la vigencia)AltoNinguna, pero es ingesta manual versionada
4Auto-refresh de réplicas (USGS en cron)El catálogo deja de envejecer entre corridas manuales; la capa sísmica de la Sala se mantiene solaBajo (script idempotente ya existe; falta el mecanismo del patrón de cron)MedioDecisión de arquitectura (a)/(b) de arriba
5Comunicados de Medicina LegalContadores forenses (cuerpos recibidos / identificados / entregados, com. 06: 230/205/140) como manual_cited, para que el Buscador de personas reconcilie las cuatro cifras paralelas de desaparecidos — oficial 287–496 vs. 4.211 del rastreador ciudadanoMedio (sin API; transcripción citada por comunicado)Medio–altoQue Medicina Legal siga publicando comunicados numerados
6Alertas IDEAMCapa de amenaza secundaria (lluvias/deslizamientos sobre los 5 departamentos) para Logística y Albergues — los 24+ derrumbes que aislaron el epicentro son el precedenteMedioMedioAPI/feed del IDEAM alcanzable desde el host de ingesta
7Capas censales granulares del DANE (manzana/sección)Planificación fina de albergues y registro: densidad y vulnerabilidad bajo cada AOI satelitalAlto (geodatos pesados, cruce espacial)Alto a mediano plazoNinguna, pero exige tooling geoespacial nuevo
8Cruce Registraduría / SISBÉN para dedup del RUDEl chokepoint señalado por la investigación: el RUD es manual, offline, sin dedup, corrido por 403 municipios, y compuerta de todo beneficio por hogarAltoAltoCompuerta dura: convenio (MOU) con el Estado. No son datos públicos y la plataforma no los ingesta — esta fila existe para decir explícitamente que solo procede dentro de un piloto oficial con acceso reglado. Hasta entonces, el dedup demo del Registro sigue siendo demo

Dos brechas conocidas siguen abiertas por fuera de esta tabla porque no dependen de nosotros: el catálogo del SGC (endpoints inalcanzables desde el host de ingesta — restauraría la sismicidad M2–M4 que USGS no ve) y el appname de ReliefWeb (trámite humano de OCHA; aprobado, la cobertura vuelve sin tocar código). Ambas están medidas con citas propias.

Principios de contenido

Estas son las reglas editoriales del carril real. Todas están impuestas por el gate (check-real-data.ts) donde una máquina puede imponerlas; donde no, están escritas aquí y en el MANIFEST.

1 · Dos carriles, cero mezcla

Real y demo viven en directorios separados con la misma envoltura de esquema. synthetic nunca se infiere; el banner de demostración lo lee de la envoltura. Un archivo del carril real con filas y sin cita registrada rompe el build. La consecuencia operativa: migrar una superficie es cambiar una ruta (FIXTURE_TO_REAL), nunca copiar filas de un carril al otro — los cortes reconstruido_demo de la fixture de balances jamás cruzan, y el checker lo verifica.

2 · sin_datos es un estado de primera clase

Un resultado vacío es un hallazgo. Chocó con 3 procesos en SECOP es el dato (el departamento del epicentro es el de menor capacidad contractual del país), no un error de consulta; 9 de los 33 activos de servicios se hornean sin cifra porque circularon en la sala de crisis sin fuente citable, y el validador rechaza una fila sin_datos que lleve cifra igual que una fila con cifra sin cita. Rellenar un hueco con un sustituto plausible destruiría lo único que la plataforma vende. Una superficie que necesita un dato que no existe muestra la brecha (REAL_DATA_GAPS).

3 · Ofertas no son recibos

Todo compromiso financiero lleva estatus explícito: ofrecido, confirmado, desembolsado, denegado. El gate rechaza cualquier fila multilateral o bilateral marcada desembolsado porque ningún desembolso al Estado consta en el registro — los USD 1.300 millones de titulares son ofertas. La disciplina se extiende a la moneda (todo monto lleva currency + unit; «mil millones» jamás se traduce «billones») y a los agregados de prensa, que viven como contexto y nunca como filas sumables. La oferta denegada (las 100 t de El Salvador) se hornea con su cita: un rechazo también es parte del balance.

4 · Procedencia de citas: el caso «cada peso»

El caso de estudio que fija la regla. El titular de Infobae del 13 de agosto — «cada peso girado quedará expuesto» — circuló como si fuera un compromiso de transparencia del Gobierno. No lo es: la frase es de Lorena Gutiérrez, decana de la Universidad de San Buenaventura, describiendo cómo funciona el artículo 215 (revisión automática de la Corte, control del Congreso, jurisdicción de los órganos de control). El Gobierno no ha hecho ningún compromiso de tablero, datos abiertos, veeduría ni auditoría para el Fondo Milagro. La cita que sí es del Presidente es anterior al sismo: el 23 de julio, sobre un traslado a la UNGRD, exigió «garantizar la trazabilidad de cada peso» (El Universal). Confundir las dos habría puesto en boca del Gobierno una promesa que no existe — y habría regalado el argumento de la plataforma, que es precisamente que esa promesa falta.

La regla que queda: toda cita textual lleva autor, cargo, fecha, medio y enlace; un titular nunca se atribuye al citado; y la paráfrasis se marca como tal. En los datos, esto es el campo de cita textual de promesas-tecnologicas.json y las citas por fila de services-status.json y pledges.json; en la prosa, es esta disciplina.

5 · Citas vivas

Una cita no es un adorno estático: lleva retrieved_at, URL y licencia, y donde la fuente es alcanzable se reverifica en cada corrida — los boletines de Aerocivil contra su frase de carga, las filas del dossier cadena por cadena, el índice de documentos del Banco Mundial en cada bake de pledges. Si el texto de un boletín cambia, la corrida lo marca en vez de sostener la transcripción en silencio. Las fuentes inalcanzables (INVIAS 403, ReliefWeb sin appname) mantienen su cita registrada precisamente para que la brecha sea medible. data-health-colombia.json es la agregación de esta disciplina: la edad de cada bake contra el ritmo de su fuente.

El plan del Día 30 — 2026-09-06

El plan tecnológico del Gobierno corre con un reloj de 100 días; el corte de los días 1–30 («Encender el motor») vence alrededor del 6 de septiembre de 2026, con cuatro entregables anunciados: el Decreto de Transparencia Digital, el piloto de blockchain en Ecopetrol, Ana IA activada y el inventario nacional de conectividad. La investigación de agosto lo llamó la señal binaria más limpia sobre si este Gobierno construye infraestructura de transparencia o la narra. Ese día la suite tiene que capturar el resultado, sea cual sea.

Qué debe capturar el reloj (/colombia/reloj)

PasoDetalle
1 · Veredicto por promesaCada compromiso con vencimiento día 30 pasa a cumplido (con el instrumento como cita: número de decreto, evidencia del piloto, URL del inventario) o a vencido (con la búsqueda del instrumento registrada y fechada — la ausencia también se cita)
2 · Sin estados intermedios sin citaen_curso el 6 de septiembre exige evidencia publicada de avance; «se dice que avanza» no es un estado
3 · Casos ya conocidosAna IA ya «existe» en dominio de un proveedor sin presencia gov.co ni aviso de privacidad — si eso se presenta como cumplimiento, la fila lo registra con esa nota, no con un check
4 · Bake el mismo díapromesas-tecnologicas.json se actualiza y hornea el 6 de septiembre, no después; la fecha de la actualización es parte del registro

Qué debe capturar el briefing (/colombia/briefing)

  • El veredicto del día 30 como bloque principal: qué se prometió para los días 1–30, qué instrumento apareció, qué no.
  • El reloj del artículo 215: si el decreto de emergencia económica se publicó (al 13 de agosto su número seguía sin publicarse), su ventana de 30 días ya venció o está por vencer — y con ella la condición previa del CAT DDO (promulgación del decreto), que toca cat-ddo-terms.json y pledges.json.
  • La tendencia de urgencia manifiesta: re-pull de SECOP II contra la línea base (2 procesos al 11 de agosto); a un mes del sismo, el conteo y su curva son el indicador anticorrupción más legible de la suite.
  • Los productos satelitales de Chocó: las entregas de Quibdó e Istmina se esperaban el 14 de agosto — para el día 30, o están en satellite-damage.json o su ausencia es un hallazgo que el briefing dice.
  • El estado del reemplazo del balance: ¿ya existe boletín UNGRD legible por máquina o la fuente de registro sigue siendo un discurso de tres semanas atrás?
  • La financiación del llamamiento MDRCO036 (CHF 0 financiados al corte de agosto) y la trayectoria de restauración de servicios.
  • El termómetro completo: esa mañana se corre ingest-all.ts + bake-colombia-health.ts; ningún dato del briefing del día 30 puede salir de un bake stale.

La corrida del día

bash
bun run scripts/colombia/ingest-all.ts --refresh   # todas las fuentes en vivo
# curaduría: promesas-tecnologicas.json · services-status.json · pledges.json
bun run scripts/colombia/bake-colombia-health.ts   # frescura del carril
bun run scripts/colombia/check-real-data.ts        # el gate, antes de publicar

Cada cifra con su fuente — la trazabilidad es el contrato.