feat(episode): TRAZA_r5seccion1i1-por-qu-se-cort_S20260719.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: [R5.seccion1.I1] Por qué se cortó
This commit is contained in:
Ember 2026-07-20 05:08:09 +00:00
parent 1cd94f67b0
commit 8d8b312192

View file

@ -0,0 +1,46 @@
---
episode_id: "411bb84a-aec2-47a3-8ee0-fb22b27a3284"
puente_flat: "TRAZA_r5seccion1i1-por-qu-se-cort_S20260719.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260719.ORACULO_RETRIEVAL_X09"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — MNEMO_PRE_DIGEST: [R5.seccion1.I1] Por qué se cortó"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-07-20T05:08:09.252976+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Los 6 redactores siguen verificando en disco (es el paso lento y es el que da valor). Mientras tanto, mi trabajo de verificación en paralelo ya dejó tres piezas del plan ancladas con evidencia. Te las paso porque dos de ellas son decisiones tuyas que ya están maduras.
## [R5.seccion1.I1] Por qué se cortó
Los 8 agentes se quedaron sin créditos de Fable 5 a mitad de vuelo, tras consumir ~913 K tokens en 147 segundos. El workflow devolvió estructuras vacías. **No hay resultados parciales que rescatar** — lo digo explícitamente porque un plan a medias presentado como completo sería peor que ninguno. Relanzado ya sobre Opus 4.8.
## [R5.seccion2.T1] Pieza 1 — El arreglo de seguridad, localizado al carácter
| Línea | Qué hay | Doble filo |
|---|---|---|
| `fused_search_cli.py:148` | contraseña de PostgreSQL en claro **como valor por defecto** de `os.environ.get()` | …y en **la misma línea** está el `127.0.0.1` que hace crashear el multi-store desde dentro del container |
| `fused_search_cli.py:157-158` | key LiteLLM `sk-ember-*` en claro como default de `LITELLM_KEY` | — |
**Alcance real:** 1 copia versionada en git + 2 copias en worktrees no rastreadas. Menos grave de lo que temía (los worktrees no viajan al remoto), pero la versionada sí está publicada en tus 3 remotos.
Lo elegante: **una sola edición cierra el agujero de seguridad y el bug T-51 del multi-store**, porque viven en la misma línea. Las otras 7 variables del archivo ya usan el patrón correcto — `NEO4J_PASSWORD` incluso tiene `""` como default, que es exactamente lo que deberían hacer las otras dos.
## [R5.seccion3.I2] Pieza 2 — La rúbrica no tiene pulso
Verificado: **cero** hooks con `rubrica` en `.claude/hooks/` y **cero** menciones en `settings.json`. `scripts/rubrica_100.py` solo corre cuando alguien se acuerda de correrlo.
Eso explica un patrón que me había extrañado: las 35 mediciones no son una serie temporal, son **ráfagas** (12 el 13-jun, 9 el 5-jul, 4 el 18-jul). El termómetro del ecosistema mide bien pero solo cuando lo sacan del cajón.
★ Insight ─────────────────────────────────────
Esto tiene una consecuencia sutil: **cada ráfaga coincide con una sesión de mejora**. Es decir, el sistema se mide justo cuando acaba de mejorar — sesgo de medición favorable. Una cadencia fija (semanal) mediría también los períodos de deriva, que es precisamente cuando el número importa.
─────────────────────────────────────────────────
## [R5.seccion4.Q1] Pieza 3 — Tus dos gates vencidos ya tienen recomendación