feat(episode): TRAZA_lo-que-se-cerr-5-arreglos-todos-medidos_S00000000.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — Ember: Lo que se cerró — 5 arreglos, todos medidos antes y después
This commit is contained in:
Ember 2026-08-29 05:06:42 +00:00
parent 2fc05b00a8
commit 413c76bc2f

View file

@ -0,0 +1,42 @@
---
episode_id: "6eba144c-8c19-49b3-9eb8-94d28837fb80"
puente_flat: "TRAZA_lo-que-se-cerr-5-arreglos-todos-medidos_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 — Ember: Lo que se cerró — 5 arreglos, todos medidos antes y después"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-08-29T05:06:40.961365+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Parte para ti, John. Los dos enjambres siguen produciendo la lista (13/14 y 8/15 carriles); mientras tanto, esto es lo que ya está **arreglado y verificado**.
## Lo que se cerró — 5 arreglos, todos medidos antes y después
| # | Qué estaba roto | Antes → Después | Commit |
|---|---|---|---|
| 1 | **2.764 tests invisibles.** Un `sys.exit()` a nivel de módulo en `test_frontier_generator.py` abortaba la recolección entera | `1.329 + INTERNALERROR` → **`4.093 recolectados`** | `cabdb8c7` |
| 2 | **811 pasaportes sin propósito.** El generador escribía un marcador con el comentario *"Ember llena esto"* | **591 rellenados** con extracción determinista | `180529f6` |
| 3 | La **fábrica** seguía encendida: cada fichero nuevo nacía con ~3 marcadores | El generador ahora **deriva**; el marcador queda solo de fallback honesto | `ddf25183` |
| 4 | **El arranque perdía 81,5 s** en un N+1: 9 censos completos donde bastaba 1 | **8,3 s** (9,8×), registro idéntico | `37d3f944` |
| 5 | `_normalize` **contaba el mismo enlace dos veces** (no idempotente) | Punto fijo; 16 tests + 200 muestras Hypothesis | `4f9ade3f` |
**Baseline real de la suite, por primera vez:** 3 de 4 turnos cerrados → **2.991 passed**. De los 3 fallos, 2 los arreglé (corrieron antes del fix) y 1 era el bug de `_normalize`. El cuarto turno va por el 24%.
## Dos cosas que debo decirte aunque no queden bien
**Causé una regresión y la arreglé de raíz.** Al rellenar el pasaporte de `artifact-guard.md`, su propósito real pasó a contener la palabra «Gate» — y el detector leyó la línea vecina `CREATED: 2026-06-10` como un gate vencido de 79 días. El registro publicó un fantasma. La salida fácil era quitarle la palabra «Gate» a mi texto; eso es maquillar al detector. Corregí el **instrumento**: una fecha en un campo de metadatos nunca es un plazo. Con test de control positivo *y* de evasión.
**Mi primer arreglo de `_normalize` fue insuficiente.** Puse una lista de caracteres a mano y Hypothesis lo tumbó otra vez con `'0\x1f\'`. Estaban conviviendo dos nociones distintas de «espacio» en la misma función. Añadir ese carácter habría tapado el caso dejando viva la clase.
## Restricciones externas (no son fallos de diseño)
- **Fable está sin créditos.** El enjambre murió en su primer agente. Sustituí el orquestador por Opus y lo declaro (RM-4).
- **Rate limit 429** tumbó un agente trabajador. Los enjambres siguen con el resto.