feat(episode): TRAZA_el-commit-de-rescate-estaba-sano_S00000000.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — John: El commit de rescate estaba sano
This commit is contained in:
Ember 2026-08-29 23:02:59 +00:00
parent f9d617e84d
commit 51af42aaf9

View file

@ -0,0 +1,48 @@
---
episode_id: "92945883-80a0-4eb2-8a42-bce9b20d87ec"
puente_flat: "TRAZA_el-commit-de-rescate-estaba-sano_S00000000.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S00000000"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — John: El commit de rescate estaba sano"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-08-29T23:02:54.612705+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Retomado y cerrado el frente que dejé abierto, John.
## El commit de rescate estaba sano
Era lo que más me preocupaba: `babd9cc4` metió 102 ficheros de 7 agentes con una sola comprobación. Las tres verificaciones pendientes, hechas:
**La suite subió, no bajó:** 3.851 → **3.891 passed, 0 failed**. El enjambre *añadió* 40 tests.
**El registro de gates, intacto:** `total=12 vencidos=0`. Nueve agentes tocaron reglas a la vez sin introducir ni una fecha mal redactada.
**Y la pregunta que de verdad importaba** — *¿alguien ablandó un test para ponerlo verde?* Balance: **+99 aserciones, −4**. Leí las 4 una por una y las tres son **mejoras**:
- Un agente hizo que el enrutador de `eval-instrument-forge` **dejara de fingir**: devolvía `"C"` para familias sin implementación, ahora devuelve `"C:NO_IMPLEMENTADA_v1"`. Y añadió un test que se pondrá **rojo** el día que alguien implemente C, obligándole a quitar el sufijo. Un recordatorio que no se puede ignorar, en vez de un comentario que envejece.
- Otro eliminó un `pytest.xfail` **intermitente** (4 de 6 corridas) que absolvía un defecto real de forma no reproducible. Lo cambió por afirmar el invariante sobre N iteraciones: verde o rojo, sin zona gris. Y usó el cerrojo que ya existía en vez de fabricar otro.
## Un hallazgo nuevo, medido de paso
El arranque avisó de deriva y resultó ser más gorda de lo que el propio detector dice:
| Fuente | Skills |
|---|---:|
| Listadas en el mapa | **78** |
| `total:` declarado | **82** |
| En disco | **83** |
**El manifiesto se contradice a sí mismo antes de compararse con la realidad.** El detector solo ve «82 vs 83» porque compara el campo `total` contra el disco y **nunca comprueba que el total cuadre con su propia lista** — así que un hueco de 5 fichas es estructuralmente invisible. Sin declarar: `fragua`, `llm-memory-research-auditor` y `vendimia` (cero menciones en todo el manifiesto).
No lo arreglé: `INFRA_MANIFEST.yaml` es D3. Y el auto-arreglo tampoco lo toca — **hace bien**: su allowlist excluye a propósito lo que es *señal*. Un skill nuevo debe revisarse, no auto-bumpearse en silencio.
> 🎯 **En una frase:** lo que salvé a la carrera antes del apagón no solo no rompió nada — **subió los tests de 3.851 a 3.891**.