Auditoría interna · Confidencial
Este documento explica qué tiene Futuros hoy, cómo opera, qué está incompleto, y qué se debe hacer a continuación. Es un mapa, no una declaración. Lo que aquí aparece como "live" está en producción; lo que aparece como "stub" o "in-flight" requiere trabajo concreto identificado más abajo.
Futuros pasó en seis meses de un blueprint en Markdown a una plataforma operacional con cuatro capas: (i) contenido editorial-grade en blueprint + research + pilots + stakeholders, (ii) un sistema de agentes Claude con 18 especialistas y 9 skills que produce contenido autónomo cada 12 minutos, (iii) un portal público en futuros.xyz con 179 páginas (atlas + ontología + grafo + dossiers país + dashboards), (iv) infraestructura de provenance (citations registry + validador CI) que captura errores antes de roadshow.
El estado actual permite empezar el roadshow del Compacto Soberano con Paraguay como Anchor 0 y abrir la ronda de funder Anillo 0 con Coefficient Giving. Lo que aún no permite es: deploy CI automático del portal, prevención automatizada de errores red-team-flagged que sobreviven entre ticks, ni publicación de la API REST que existe en api/main.py pero no está expuesta.
Futuros137) — Atlas mapa, blueprint, anchor 0 PY, anillo 0, ontología, grafo, comparar, explorar.tools/citations.py CI-grade..claude/agents/*.md (18) y agents/specialists/*.py (19) no están sincronizados; meta-improver flaggeó este patrón como "systemic risk".api/main.py existe pero no está expuesta — ningún consumo desde portal.| Dominio | Files | Tamaño | Estado |
|---|---|---|---|
| blueprint/ | 19 | 184 KB | Activo 15 caps + 3 pilares + changelog |
| research/ | 49 | 1.1 MB | Activo países + peer-initiatives + sectors + instruments + sources |
| stakeholders/ | 47 | 488 KB | Activo 23 individuals + 7 multilateral + 4 private + 4 regional + 2 sedes + 2 civil |
| pilots/ | 20 | 364 KB | Activo 18 candidates + templates |
| kpis/ | 4 | — | Mínimo framework + 3 dashboards |
| agents/ (Python) | 41 | 488 KB | Funcional orchestrator + base + 19 specialists + memory + tools |
| .claude/agents/ (Markdown) | 18 | — | Activo Claude Code subagent definitions |
| .claude/skills/ | 9 | — | Activo futuros-tick + 8 specialized flows |
| tools/ | 17 | — | Activo CLI + ingest + validate + citations + telemetry |
| portal/ | 261 | 170 MB | Live 40 source pages → 179 built |
| outputs/ | 59 | 820 KB | Activo briefings + audits + digests + instruments |
| state/ | 51 | 336 KB | Activo queue + cycle-log + PLAN + decision-calendar + twins |
| tests/ | 27 | — | Funcional smoke + safety + observability + quality gate |
| agent-memory/ | 16 | — | Activo persistent memory por país + individual |
| ops/ | 9 | — | Activo launchd plists + daemon supervisor |
| api/ | 3 | — | Stub FastAPI scaffold; sin deploy |
| financial-model/ | 5 CSV | — | Embrión instruments + costs + sensitivity, no notebook |
| Mandato | Markdown | Python | Notas |
|---|---|---|---|
| Operator (dispatcher) | operator.md | orchestrator.py | md/py divergencia documentada |
| Country research | country-researcher.md | researcher.py | Md activa en ticks |
| Coherence check | coherence-checker.md | coherence_checker.py | |
| KPI audit | kpi-auditor.md | kpi.py | |
| Costing | costing.md | costing.py | |
| Pilot designer | pilot-designer.md | pilot_designer.py | |
| Stakeholder map | stakeholder-mapper.md | stakeholder_mapper.py | |
| Risk | risk.md | risk.py | |
| Geopolitics | geopolitics.md | geopolitics.py | |
| Validator (read-only) | validator.md | evaluator.py (proxy) | Builder/validator split |
| Red team (adversarial) | red-team.md | — | Sin contraparte Python |
| Meta-improver | meta-improver.md | — | Solo en Markdown |
| Decision-maker mapper | decision-maker-mapper.md | decision_mapper.py | |
| Counter-narrative | counter-narrative.md | counter_narrative.py | |
| Briefer | briefer.md | briefer.py | |
| Influence tracker | influence-tracker.md | influence_tracker.py | |
| Data fetcher | data-fetcher.md | data_extractor.py | |
| Researcher (general) | researcher.md | — | |
| Editor | — | editor.py | Solo Python |
| Translator | — | translator.py | Solo Python |
| Meeting prep | — | meeting_prep.py | Solo Python |
| Docgen | — | docgen.py | Solo Python |
18 Markdown ↔ 19 Python. Los Markdown son los que se invocan vía Claude Code subagents (vivos en ticks); los Python son la versión library/API. La divergencia es real y systemic — flaggeada por meta-improver el 2026-05-03 como "md/py divergence is systemic risk".
El blueprint es el centro editorial del proyecto. Todo cruza por aquí.
| Cap | Título | Estado |
|---|---|---|
| 00 | Overview | v0.3 tesis 1-página |
| 01 | Visión 2035 | v0.1 5 afirmaciones (human-only por guardrail) |
| 02 | Contexto 2026 | v0.2 con AGI capital flow table |
| 04 | Roadmap | v0.1 3 fases hacia 2035 |
| 05 | Impacto + KPIs | v0.2 incluye GW grado-tratado, compactos, anillo 0 |
| 06 | Preguntas abiertas | v0.2 13 preguntas (8 originales + §9-§13 AGI) |
| 07 | Diferenciadores | v0.2 10 puntos (sharpened §6/§7/§8) |
| 08 | Funding | v0.2 8 instrumentos novedosos |
| 09 | Ética + inclusión | v0.1 |
| 10 | Riesgos | v0.2 R1-R21 + R-A1-R-A6 |
| 11 | Escenarios AGI 2026-2032 | v0.1 3 escenarios + triggers re-escenarización |
| 12 | Renewable AI Host | v0.1 5 GW anchor + Atacama re-anchor |
| 13 | Compacto Soberano | v0.1 bilateral grado-tratado |
| 14 | Paraguay Anchor 0 | v0.1 depth-first decision + 9 gates |
| 15 | Anillo 0 program | v0.1 reconciled MATS-extension model |
| — | 3 Pilares operativos | v0.1 sectors + foundations + governance |
| ID | Título | Sector | Capex 5y (USD) |
|---|---|---|---|
| P-001 | Cerrado precision ag | Brasil · Agro/Clima | 80M-130M |
| P-002 | Tutoría rural | Colombia · Educación | 60M-95M |
| P-003 | Telesalud andina | Perú · Salud | 70M-110M |
| P-004 | SAT pyme co-piloto | México · Productividad | 50M-80M |
| P-005 | Grid renovable | Chile · Infraestructura | 90M-140M |
| P-006 | Identidad digital v2 | Uruguay · Gobernanza | 35M-60M |
| P-007 | Fiscalía analytics | Centroamérica · Seguridad | 60M-100M |
| P-008 | Climate alerts commons | Caribe · Clima | 75M-120M |
| P-009 | SMB export co-piloto | Andina · Productividad | 40M-65M |
| P-010 | Aduana fraud | MEX+COL · Fiscal | 45M-75M |
| P-011 | Modelos lenguas indígenas | BOL+GTM+PRY+MX+PER | 30M-55M |
| P-012 | NE-BR renewable AI host | Brasil · Infra+Cómputo | 1.7B-3.5B |
| P-013 | Vaca Muerta fuel cell | Argentina · Infra+Cómputo | 0.85B-1.8B |
| P-014 | Identidad digital CELAC | Regional · Gobernanza | [VERIFY] |
| P-015 | Paraguay-Itaipú 1 GW | Paraguay · Infra+Cómputo | 10B-15B |
| P-016 | Anillo 0 fellows (v1+v2) | Regional · Talento | 5.3M-8.6M / 24m |
| P-017 | CSIRT-AI regional | Regional · Seguridad | 8.5M-13.5M / Año 1 |
Dos arquitecturas paralelas que cumplen funciones complementarias:
.claude/agents/) — invocados por skills durante ticks. Inheritance del system prompt + tool restrictions per-agent. 18 agentes activos.agents/specialists/) — library/API + base agent con prompt caching, retry, structured logging, observability. Soporte para FastAPI gateway. 19 specialists.futuros-tick — operador autónomo. Decide qué hacer cada 12 min basado en cadencia (ingest 24h / weekly 6d / audit 3d / drain queue / fallback country research).futuros-decision-brief — produce 5 deliverables (memo, deck, talking-points, elevator, objections) para un (target, ask) específico.futuros-design-pilot — pilot-designer + costing + risk + coherence → bankable pilot.futuros-audit-blueprint — coherence + kpi-auditor + risk sobre blueprint completo.futuros-review-country — researcher + stakeholder-mapper + risk país.futuros-ingest-feeds — RSS + arXiv + gov press releases.futuros-bilingual — ES + EN garantía.futuros-ab-prompt — A/B test prompt variants.tools.cli — entry-point principal, requiere ANTHROPIC_API_KEY. validate / synthesize / publish.tools.citations — registry audit (audit/integrity/orphans/show). No requiere API key.tools.ingest + tools.ingest_sources — feed pull + embedding.tools.data_sources — World Bank / OECD / IDB / OWID adapters.tools.validate — coherence checks (frontmatter, orphan KPIs, country mismatch).tools.shadows + tools.triggers — counter-narrative shadows + decision-calendar triggers.tools.coalition + tools.alert_digest — coalition mapping + weekly alerts.tools.telemetry + tools.email_blast + tools.publish — observability + distribution.tools.memory_bootstrap + tools.seed_country_memory — agent memory init.tools.autonomy — daemon health + verdict.40 source pages, 179 built (incluye dynamic routes /o/{Type}/{id}).
| Categoría | Páginas |
|---|---|
| Atlas + interfaz exploratoria | / (mapa interactivo), /comparar, /explorar, /regiones, /matriz, /o, /o/graph, /preguntar |
| Blueprint chapters | /blueprint, /escenarios, /host-renovable, /compacto-soberano, /paraguay-anchor, /anillo-0 |
| Provenance + KPIs + financiamiento | /provenance, /kpis, /financiamiento |
| Stakeholders + actors | /actores, /decisores/[slug], /coaliciones/[slug], /alertas |
| Otros | /pilotos, /paises, /etica, /geopolitica, /gobernanza, /talento, /hubs, /preguntas, /metodologia, /metodos, /sobre, /contacto |
| EN | /en (single page; ~5% bilingüe coverage) |
| Auto-generated | /sitemap.xml, /rss.xml, /objects.json |
outputs/briefings/_private/): santiago-pena/ (5 deliverables decision brief), paraguay-anchor-0/track-II/ (5 memos confidenciales: Anthropic, GDM, Itamaraty, Cancillería PY, ANDE+MITIC), gustavo-petro/, alvaro-soto/, coefficient-giving/.research/sources/_citations.yml — 17 citaciones activas + 4 deprecadas (con supersede).tools/citations.py — 4 subcomandos (audit, integrity, orphans, show), corre sin API key./futuros/provenance — vista web pública del registry (gated por contraseña como el resto del portal).energy-, compute-, talent-, jurisdiction-, agi-.state/queue.md — append-only work queue (50+ items hoy).state/cycle-log.md — append-only ledger de cada tick (cadence engine).state/PLAN.md — 30-day priorities, regenerado mensualmente.state/decision-calendar.md — fechas críticas con shadows + triggers.state/feeds.yaml — fuentes de ingest activas.state/triggers.json + trigger-log.jsonl — automated event detection.state/twins/ — country digital-twins JSON.state/shadows/ — counter-narrative storage.state/improvement-log.md — meta-improver proposals + outcomes.state/notion-targets.md — allowlist de Notion DBs (control de write surface).state/recipients.md — email distribution list.state/telemetry.json — daemon health JSON.agent-memory/countries/*.md — facts ledger por país (Brasil, México, Costa Rica, Argentina, Paraguay).agent-memory/individuals/*.md — signal log por decision-maker (Petro, Cartes, Sheinbaum, Lula, etc.).agent-memory/anchor-0-paraguay.md — strategic memo cross-tick.tick=ingest > 22h → pull feeds + embed.tick=meta > 28d AND no PRs abiertos → propose 1-3 improvements as PRs.tick=weekly > 6d → ship rotating briefing.tick=audit > 3d → run coherence-checker.state/queue.md tiene pending → process oldest.1. Bootstrap: read cycle-log + queue + PLAN
2. Decide which rule applies → choose work units
3. Fan-out wave: up to 5 specialists in parallel (single message, multiple Agent calls)
4. Wait for wave to complete
5. Integrate outputs (file writes already happened by specialists)
6. Append cycle-log row with: started_at, finished_at, outputs, errors
7. git add + commit + push (if changes)
8. Exit cleanly
Cada output pasa por validator + red-team con contexto fresco. Validator verifica formal (frontmatter, schema, citations); red-team ataca el contenido (find bias, omissions, hallucinations). Findings se escriben como footers al archivo y se abren gh issues si CRÍTICO.
Patrón sistémico observado: errores red-team-flagged previos no propagan correcciones automáticas. X8 Cloud "50 MW" sobrevivió 3 ticks consecutivos hasta corrección manual q-31. Atacama "$2.5/MWh" propagó del g42-microsoft-compacto al blueprint cap. 12 antes de detección manual q-29.
Cada cifra cuantitativa en blueprint, pilots, briefings se registra en research/sources/_citations.yml con id, claim, value, source.url, verified_by. tools/citations.py corre 3 chequeos:
Edit(blueprint/01-vision.md) — denied. Vision es human-only.gh pr merge — denied. Auto-merge nunca permitido.git push --force, git reset --hard, rm -rf — denied.Edit(.env*), Read(.env*) — denied (env-guard)..claude/agents/{validator,meta-improver}.md — denied (auto-preservation: el agente no puede editarse a sí mismo).
El portal es estático (Astro). El usuario reportó que está live en futuros.xyz. La inferencia más probable: Cloudflare Pages con auto-deploy desde main (build command: cd portal && npm install && npm run build, output dir: portal/dist). El commit 043a830 "domain: cut over to futuros.xyz at root" sugiere que la cutover ya pasó. Sin embargo, no existe workflow de CI/CD en .github/workflows/ que lo documente — solo agents-ci.yml (Python tests) y lint-content.yml (markdown). El deploy es opaco.
El portal va live por Cloudflare Pages presumiblemente, pero ningún workflow en repo lo documenta. Si Cloudflare se cae o el cutover se pierde, no hay recovery procedure. Acción: añadir .github/workflows/portal-deploy.yml que (a) build el portal en cada push a main, (b) publish a gh-pages branch como backup, (c) dispare alerta si build falla.
18 agentes Markdown ↔ 19 Python specialists. Cuando meta-improver edita un agent prompt, solo cambia el Markdown — la versión Python queda obsoleta. Resultado: la versión "library" sirve outputs basados en prompts viejos. Acción: o (a) eliminar la rama Python (mantener solo Markdown como single source of truth, accesibles vía Claude Code subagents) o (b) auto-generar Python desde Markdown en CI.
Errores red-team-flagged previos no propagan correcciones automáticas. X8 Cloud "50 MW" sobrevivió 3 ticks. Atacama "$2.5/MWh" propagó al blueprint. Acción: pre-tick check obligatorio que lee gh issues abiertos con label red-team-critical y bloquea producción de nuevos outputs hasta corrección de issue afectando misma área.
Citations audit reporta 546 quantitative claims sin anchor a citation registry. La mayoría son legacy claims del blueprint pre-Mayo 2026. Acción: extender registry de 17 → 100+ entradas Q3 2026, priorizando los claims más usados en briefings de stakeholders. Q-46 ya en queue.
P-014 vs P-015 collision documentada en cycle-log; P-016 v1 + v2 coexisten con costing contradictorio (USD 6.77M v1 vs USD 5.78M v2 vs USD 5.3-8.6M canonical post-q-47). Acción: marcar v1 explícitamente como SUPERSEDED-DEPRECATED en frontmatter.
api/main.py tiene endpoints diseñados (search, chat, stream, twin/ask, ingest) pero ningún deploy. El portal no consume ningún endpoint dinámico — todo es estático. Acción: deploy uvicorn api.main:app en Cloudflare Workers o Fly.io; conectar /preguntar y /o/Country/{iso3} a endpoints reales.
Solo /futuros/en existe (single page). El blueprint, briefings, KPIs son ES-only. CLAUDE.md mandata bilingüe; skill futuros-bilingual existe pero no ha procesado outputs activos. Acción: ejecutar futuros-bilingual sobre los 6 capítulos emergentes (11-15) + decision brief Peña + funder memo Anillo 0.
5 CSVs en financial-model/ (instruments, costs, sensitivity, country_absorption, financing_mix) pero sin notebook ejecutable, sin sensitivity tables que se actualicen automáticamente, sin DSCR/IRR computados. Acción: convertir a notebook Python o spreadsheet vivo; tie a citation registry.
3 dashboards definidos (regional_outcome.md, sector_output.md, agi-readiness.md) pero ninguno tiene data feed real. Los KPIs son aspiracionales: GW grado-tratado online, fellows Anillo 0, compactos firmados. Hoy todos = 0. Acción: setup pipeline de actualización trimestral. Sólo se necesitan 5-10 indicadores con baseline para empezar.
27 tests existen (smoke, safety, observability, quality_gate, country_twin, knowledge_loader, base_agent, specialists). Lo que NO se testea: full tick execution, queue draining, validator+red-team gate sobre outputs reales. Acción: integration test que ejecuta un tick fake completo en sandbox.
stakeholders/by-country/) tiene solo 1 archivo. Plan original: 1 archivo por país anchor.stakeholders/governance/ tiene solo 1 archivo. Falta estructuración Mesa Futuros / CELAC / IDB / CAF.data/compatibility-matrix.json existe pero no se documenta su uso en portal.state/decision-calendar.md) tiene 1 row STATUS=needs-verify (CELAC PPT 2026-03-21).outputs/status.html, status-telemetry.html) pero no se enlazan desde portal nav.| Riesgo | Probabilidad | Impacto | Mitigación pendiente |
|---|---|---|---|
| Hallucination propagation — un sub-agent inserta una cifra inventada → próximo tick la consume como verdad → llega a stakeholder | Alta | Crítico (reputacional) | M3 (red-team feedback loop) + M4 (orphan numerics → 0) |
| Daemon collapse — launchd KeepAlive falla, daemon muere, cycle se rompe sin alerta | Baja | Alto (días sin output) | healthcheck plist + alerta a email; existe pero falta verificar funciona end-to-end |
| Branch drift — Stop-hook auto-pushed mid-run causó force-with-lease recovery; documentado en cycle-log | Media | Alto (lost work) | Pre-push hook que valide branch state; aún no implementado |
| Sub-agent unauthorized actions — agentes abriendo gh issues sin autorización (security warning x4 en cycle-log) | Alta | Medio (drift de governance) | Permission tightening por skill; meta-improver task pendiente |
Stakeholder leak — repo privado pero outputs/briefings/_private/ en repo plano, no encriptado |
Baja | Crítico (reputacional + jurídico) | Soft: confiar en repo privacy. Hard: encrypt-at-rest with git-crypt; aún no. |
| Decision lag — q-47 reconciliation blocker estuvo pending 24h antes de resolución manual; durante ese tiempo, MoU MATS y funder memo divergían | Media | Medio (rework) | Reconciliation-blocker label en queue → stop production until resolved |
Password gate trivial — Futuros137 está en HTML inline, cualquiera con DevTools lo ve |
Alta (sería trivial) | Bajo (es un soft-gate consciente) | Diseño aceptado. Si requerimos seguridad real → server-side auth con FastAPI gateway. |
| Cartes-OFAC delisting — el cambio de status (sancionado → US-favored) propaga lentamente; q-48 corrigió 8 archivos pero quedan referencias en research/countries y agent-memory | Alta | Medio (incoherencia narrativa) | Sweep dedicado de "sancionado OFAC" en todo el codebase |
Priorizado por desbloquear roadshow Q3 2026: lo que más afecta la firma del primer Compacto Soberano + el cierre de funder Anillo 0 va arriba.
outputs/briefings/_private/ (git-crypt o sops).gh issue create a meta-improver únicamente.Futuros/ ├── agents/ # Python: orchestrator + 19 specialists + memory + tools + twins + base + safety + observability ├── agent-memory/ # Persistent memory cross-conversation: countries/, individuals/, anchor-0-paraguay.md ├── api/ # FastAPI gateway (scaffolded; no deploy) ├── blueprint/ # 15 chapters + 3 pillars + _changelog ├── data/ # cache/, memory/, compatibility-matrix.json ├── financial-model/ # 5 CSVs (embrión) ├── kpis/ # framework + 3 dashboards ├── ops/ # daemon supervisor + launchd plists + healthcheck ├── outputs/ # briefings (incl. _private/), audits, digests, instruments, programs, alerts, coalitions ├── pilots/ # 18 candidates + templates ├── portal/ # Astro 4 site (live at futuros.xyz) │ └── src/ │ ├── data/, lib/, layouts/, components/, pages/ # 40 source pages ├── research/ # countries/, peer-initiatives/, sectors/, instruments/, sources/_citations.yml ├── stakeholders/ # individuals/, multilateral/, regional-bodies/, governments/, private-sector/, civil-society/, by-country/, sedes-anillo-0/, governance/ ├── state/ # queue, cycle-log, PLAN, decision-calendar, feeds, triggers, twins/, shadows/, recipients ├── tests/ # 27 Python tests (smoke, safety, observability, quality_gate, country_twin, etc.) ├── tools/ # 17 Python CLI tools (citations.py, cli.py, ingest.py, validate.py, etc.) ├── .claude/ │ ├── agents/ # 18 Markdown agents (Claude Code subagents) │ ├── skills/ # 9 active skills (futuros-tick + 8 specialized) │ └── settings.json # Hard guardrails ├── .github/workflows/ # agents-ci.yml, lint-content.yml (no deploy workflow) └── CLAUDE.md # Project instructions
| Comando | Uso |
|---|---|
launchctl load ~/Library/LaunchAgents/xyz.odisea.futuros.daemon.plist | Arrancar daemon |
launchctl list | grep futuros | Verificar daemon corriendo |
FUTUROS_CYCLE=tick claude -p "/futuros-tick" | Single tick manual |
python3 -m tools.citations integrity | Validar registry |
python3 -m tools.citations orphans | Find unanchored claims |
cd portal && npm run build | Build portal local |
cd portal && npm run dev | Dev server local |
python3 -m tools.cli validate | Coherence + LLM (requires API key) |
git log --oneline | head -10 | Ver últimos ticks |
tail state/logs/daemon.log | Daemon heartbeat |
cat state/cycle-log.md | tail -20 | Últimos ticks ledger |
CLAUDE.md — instrucciones del proyectoblueprint/00-overview.md — tesis 1-páginablueprint/01-vision.md — visión 2035blueprint/14-paraguay-anchor-0.md — depth-first decisionblueprint/_changelog.md — historia versionadastate/PLAN.md — 30-day prioritiesstate/queue.md — work queue activastate/cycle-log.md — daemon ledger.claude/skills/futuros-tick/SKILL.md — cómo opera el daemontools/citations.py — truth infrastructure| Versión | Fecha | Hito |
|---|---|---|
| v0.1.0 | 2026-05-01 | Initial blueprint (10 caps + 3 pilares) |
| v0.2.0 | 2026-05-03 | Situational Awareness integration (caps 11-13) |
| v0.3.0 | 2026-05-03 | Paraguay Anchor 0 + Anillo 0 + Truth infrastructure (caps 14-15) |
| v0.3.1 | 2026-05-04 | q-47 reconciliation + Cartes-OFAC inversion |
| HEAD | 2026-05-04 | 77658e6 — current |