feat(episode): TRAZA_las-24-funciones-muertas-no-eran-cdigo-m_S20260827.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — Neo4j: Las 24 "funciones muertas" no eran código muerto
This commit is contained in:
Ember 2026-08-28 03:07:53 +00:00
parent 16c6d896de
commit 4c29ffc8bf

View file

@ -0,0 +1,46 @@
---
episode_id: "93004c68-ed17-47c9-af5a-4512b89ca0ac"
puente_flat: "TRAZA_las-24-funciones-muertas-no-eran-cdigo-m_S20260827.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260827.PIPELINE_FIXES"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — Neo4j: Las 24 "funciones muertas" no eran código muerto"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-08-28T03:07:52.351421+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Los dos frentes de **B** cerrados, y el segundo dio un resultado que no esperaba.
## Las 24 "funciones muertas" no eran código muerto
**Cero de 24 se pueden borrar.** Eso no es un resultado pobre: es un resultado que **evita un destrozo**. Borrar por la etiqueta habría roto, entre otras cosas, el protocolo de claims que el propio arranque te instruye usar.
| Grupo | Qué son de verdad | |
|---|---|---:|
| **A** | Invocada por **runbook** — el arranque imprime el comando; el AST no puede verlo | 1 |
| **B** | Escritores de Neo4j **programados y nunca cableados** — esperan el gate M5 sin firmar | 8 |
| **C** | **Documentadas y sin enchufar** — capacidad construida, nadie la conectó | 15 |
| **D** | Sin ningún rastro → **borrables** | **0** |
Lo que ese número mide no son cadáveres: es **obra parada**.
## Y la obediencia decidía sobre el 6% de la evidencia
El informe ya declaraba su punto ciego, pero **veinte líneas por debajo** del número y de su umbral —y ese umbral no es decorativo: *"<50% sostenido 3 semanas → retirar los subagentes"*. Ahora la proporción viaja pegada a la cifra:
`★ Insight ─────────────────────────────────────`
- El censo **no estaba roto: estaba viejo**. Su JSON llevaba `ts` de las 15:02 y otra instancia había añadido a las 18:34 el test que cubría una de esas funciones. Re-ejecutado, migró sola y el total bajó de 25 a 24.
- Mi primer triaje usó coincidencia por **subcadena** y dio `data_file` como "usada en 10 ficheros" — eran `metadata_file` y `check_data_files`. Un triaje laxo declara viva una función muerta: el error opuesto al que buscaba.
- El caso que mejor enseña el límite del método: `claim_and_declare`, la función que el arranque me manda teclear en cada sesión, era para el análisis estático **la más muerta de todas**.
`─────────────────────────────────────────────────`
—
> 🎯 **En una frase:** fui a buscar código muerto para borrar, encontré cero, y en su lugar encontré 23 capacidades ya construidas que nadie enchufó — 8 de ellas esperando una firma tuya.