feat(episode): EXPLORA_en-espera-de-tu-eleccin-john-passphrase_S20260609.R48_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 48 — John: En espera de tu elección, John: **passphrase** para...
This commit is contained in:
Ember 2026-06-09 22:30:25 +00:00
parent d696971dc9
commit 7500834a86

View file

@ -0,0 +1,48 @@
---
episode_id: "8628064f-90cc-4a54-a38e-25d2cc6c000b"
puente_flat: "EXPLORA_en-espera-de-tu-eleccin-john-passphrase_S20260609.R48_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260609.SELFAWARENESS_MISION_CRITICA"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 48 — John: En espera de tu elección, John: **passphrase** para..."
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-09T22:30:22.929624+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
En espera de tu elección, John: **passphrase** para cerrar D-16 (83 episodios) o **runbook D-9** (rotación de key). 4 deudas ya cerradas + pusheadas esta ventana. ⏸️
Dashboard v2 entregado y verificado, John. Ábrelo y dime si está a la altura. A tu señal: **afino un gráfico** · **drifts** · **cierra**.
⛽ 🟢 ~615K · S20260609.SELFAWARENESS_MISION_CRITICA.R9 · routing: L0 await-decision
Listo, John. **Runbook D-9 entregado** (HITL para ti):
📄 `docs/RUNBOOK_D9_ROTACION_LITELLM_KEY_S20260609.md` — commit `89a4baa`, push forgejo+origin+sriyantra ✅. *(detect-secrets pasó: solo placeholders `sk-ember-VIEJA`/`NUEVA_KEY`, sin la key real.)*
## Lo esencial del runbook
🔑 **Insight clave:** **rotar neutraliza el riesgo de inmediato** — la key vieja leaked queda inválida en cuanto LiteLLM acepta la nueva. El `git filter-repo` para borrar el plaintext del historial es **higiene posterior, no urgencia**. Prioridad real: Fases 1→4.
| Fase | Acción | Quién |
|------|--------|-------|
| **1** | Generar key nueva (`secrets.token_hex`) | John (local) |
| **2** | Inyectar en `stacks/litellm/config.yaml` + `.env` → `docker compose up -d` → **verificar 401 de la vieja** | John (servidor) |
| **3** | Migrar a `.env.local` gitignored (patrón TOOLBOX) | John (local) |
| **4** | Redactar el plaintext en `MEMORY.md` L115 | **Ember** (a tu orden, tras Fase 2) |
| **5** | Restaurar `db: connected` (cierra D-10 de paso) | John+Ember |
| **6** | `git filter-repo` 3-remotos (destructivo, opcional) | John explícito |
**Criterio de cierre D-9:** Fase 2.5 (key vieja → 401) es la prueba dura de que la rotación surtió efecto.
Grounding (PROCEDENCIA): rutas verificadas de `pipeline_health.py` L60/L66-73 leído este turno; el "key ausente del container" es soft_fact (verificado SSH sesión previa, no re-verificado fresh ahora).
—
**Balance de la ventana:** 4 deudas **cerradas** (D-11, D-15, D-5, D-12/13) + runbook D-9 entregado. Quedan accionables aquí: **D-16** (necesito tu passphrase) y la **Fase 4 de D-9** (puedo redactar el plaintext de MEMORY.md cuando confirmes que rotaste). ¿Cuál sigue?