feat(episode): DEPURA_r15-el-prototipo-funciona-y-ya-dio-su-p_S20260823.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — Ember: R15 · El prototipo funciona y ya dio su primer resultado
This commit is contained in:
Ember 2026-08-24 06:20:28 +00:00
parent b35a12559e
commit 533c4d7877

View file

@ -0,0 +1,34 @@
---
episode_id: "1eb83ef1-a226-4ed0-934b-8c536c22f7e2"
puente_flat: "DEPURA_r15-el-prototipo-funciona-y-ya-dio-su-p_S20260823.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260823.SID2AEA91FA85F2"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — Ember: R15 · El prototipo funciona y ya dio su primer resultado"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-08-24T06:20:16.717573+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
# R15 · El prototipo funciona y ya dio su primer resultado
🧪 **TEST_POST final:** `9 passed in 1.03s` (control negativo incluido) · **censo real: 2.180 funciones, 10.428 aristas, 0 omitidos, 2,9 segundos** sobre 218K líneas. ## [R15.seccion1.T1] Lo que dice el primer censo de llamadas de EMBER
| Estado | Cuántas | Qué significa |
|---|---|---|
| INVOCADA | 722 | Otro módulo de producción la usa |
| SOLO_INTERNA | 828 | Solo la llama su propio archivo — uso legítimo |
| SOLO_TESTS | 592 | Solo la nombran sus tests: viva pero no en servicio |
| **NO_INVOCADA** | **38** | **Nadie la nombra en ningún sitio del repositorio** |
Entregables: [callgraph_census.py](scripts/callgraph_census.py), [test_callgraph_census.py](scripts/test_callgraph_census.py) y el JSON completo en `.claude/hooks/data/callgraph_census_S20260824.json`. ## [R15.seccion2.I1] Dos errores míos que los tests cazaron — y por qué importan
**No te presento esto como un camino recto, porque no lo fue.** El instrumento falló dos veces antes de decir la verdad:
**Primero**, el control negativo reventó con un error de rutas: el censo no sabía analizar árboles fuera del repositorio, y su propio test fue el primer caso. Bug real, cazado antes del primer uso. **Segundo, y más grave:** la primera corrida sobre el repo real reportó **866 funciones "que nadie llama"** — y al leer la lista vi `activity-logger.py::log_activity`, que obviamente la llama el `main()` de su propio archivo. Había copiado de `libs_census` la regla *"nadie se cuenta a sí mismo"*, que es correcta entre módulos y **falsa entre funciones**. El instrumento estaba mintiendo en la dirección peligrosa: marcando como muerto código en servicio. Añadí el estado `SOLO_INTERNA`, y el número cayó de **866 a 38**.