feat(episode): TRAZA_lo-que-pas-cuando-fui-a-ejecutar-tu-a_S20260828.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting Summary: EPISODIO 1 — ember-mcp: Lo que pasó cuando fui a ejecutar tu "A"
This commit is contained in:
parent
4058778eec
commit
0aaaf145e6
1 changed files with 53 additions and 0 deletions
|
|
@ -0,0 +1,53 @@
|
||||||
|
---
|
||||||
|
episode_id: "3cf90197-b74e-4231-aafe-1002ab4f57d9"
|
||||||
|
puente_flat: "TRAZA_lo-que-pas-cuando-fui-a-ejecutar-tu-a_S20260828.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
|
||||||
|
session_code: "S20260828.SID3E411925EAA3"
|
||||||
|
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-mcp: Lo que pasó cuando fui a ejecutar tu "A""
|
||||||
|
source_type: "claude_code"
|
||||||
|
trust_boundary: "internal"
|
||||||
|
created_at: "2026-09-04T01:38:01.197302+00:00"
|
||||||
|
relectura_tagged: false
|
||||||
|
forgejo_commit_sha: "pending"
|
||||||
|
---
|
||||||
|
|
||||||
|
Todo cerrado y respaldado. Cuatro commits en los tres remotos.
|
||||||
|
|
||||||
|
—
|
||||||
|
|
||||||
|
## Lo que pasó cuando fui a ejecutar tu "A"
|
||||||
|
|
||||||
|
**No borré nada, y esa es la buena noticia.** Te pedí el GO con un diagnóstico mío que resultó falso.
|
||||||
|
|
||||||
|
### La cadena, en orden
|
||||||
|
|
||||||
|
**1. Preparé el borrado como es debido** — respaldo con vectores en dos máquinas, script con tres guards (dry-run por defecto, conteo exacto, exclusión de procedencia mixta), test-vs-oráculo verde.
|
||||||
|
|
||||||
|
**2. Al ir a ejecutarlo, la memoria estaba caída.** Un script de rotación de claves había fallado a medias a las 01:16, vaciando los ficheros de credenciales de `ember-mcp` **y** de LiteLLM. Lo diagnostiqué, me diste GO, y lo restauré desde el respaldo que el propio script había tomado 8 segundos antes del fallo. Sigue sano tres horas después.
|
||||||
|
|
||||||
|
**3. El panel adversarial me refutó.** Dos de tres lentes dijeron `NO_GO`. Lo verifiqué yo mismo, sin fiarme:
|
||||||
|
|
||||||
|
| Comprobación | Resultado |
|
||||||
|
|---|---|
|
||||||
|
| ¿Son biyectivos con `memoria_total_lockbox_v1.jsonl`? | **Igualdad exacta: `True`** |
|
||||||
|
| ¿Tienen script productor? | `scripts/ingesta_uv1.py` — escribe `U-v1:` a propósito |
|
||||||
|
| ¿Cerraron algo medido? | **`recall_literal: 0,0 → 1,0`** |
|
||||||
|
| ¿Hubo GO tuyo? | **Sí, 26-jul**: *"count 5.869→5.978, recall_literal 0.000→1.000"* |
|
||||||
|
|
||||||
|
**El `5.869 → 5.978` es exactamente el crecimiento que yo leí como "109 residuos sospechosos".** Era tu ingesta autorizada, contada al revés.
|
||||||
|
|
||||||
|
**Mi error fue de método:** miré 5 campos de los 18 del payload y de ahí inferí el origen. Los cinco eran ciertos; la conclusión, no. Los campos que lo declaraban — `origen: corpus_canonico`, `lote_ingesta: UV1_S20260726` — estaban ahí desde el principio.
|
||||||
|
|
||||||
|
### De paso, dos arreglos reales
|
||||||
|
|
||||||
|
- **B-1 cerrado**: dos veredictos nacían en 0600 porque `mkstemp` los crea así y `os.replace` conserva los permisos. Reproducido con control negativo. El panel de arranque pasa de leer 16/18 a **18/18**.
|
||||||
|
- **TOOLBOX corregido**: su runbook mandaba a un directorio que no existe, y eso me costó minutos con el servicio caído.
|
||||||
|
|
||||||
|
—
|
||||||
|
|
||||||
|
> 🎯 **En una frase:** me diste permiso para tirar 109 "sobras", fui a comprobarlo antes de tirarlas, y resultó que no eran sobras: eran algo que tú mismo mandaste guardar en julio y que funcionaba.
|
||||||
Loading…
Reference in a new issue