feat(episode): TRAZA_camalen-vivo-obra-al-60_S20260711.R46_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 46 — MNEMO_PRE_DIGEST: CAMALEÓN VIVO — obra al 60%
This commit is contained in:
Ember 2026-07-12 15:16:24 +00:00
parent ca7bcb5c09
commit 0881c06192

View file

@ -0,0 +1,56 @@
---
episode_id: "9872c170-1e75-42e5-ac78-dfd381f492ae"
puente_flat: "TRAZA_camalen-vivo-obra-al-60_S20260711.R46_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260711.SHERPA_BRIEFING_FABLE"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 46 — MNEMO_PRE_DIGEST: CAMALEÓN VIVO — obra al 60%"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-07-12T15:16:09.768188+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
`efd11fe9` triple-remoto (y el hash de sriyantra volvió a alinearse — la divergencia anterior fue un push intercalado de la instancia paralela; resuelto).
## CAMALEÓN VIVO — obra al 60%
| Fase | Estado |
|---|---|
| **F1 completa (4/4)** | ✅ regla + cajones (escribiéndose solos ya) + chrome→strip + linter |
| **F2.5 clasificador T0T3** | ✅ lib determinista, 8/8 tests (D-*→T3, sustantivo→T2, fail-safe conservador) |
| F2.6 inyección de forma a T=0 | ⬜ siguiente — cablear el clasificador a UserPromptSubmit (toca settings.json D3: protocolo completo) |
| F2.7 re-anclaje deny H4 | ⬜ siguiente — editar `panel-analitico` con sus 5 tests previos verdes |
| F3 pintura C + contrafirma | ⬜ bloqueada por tu oráculo (¿ves el bloque 🧠 T=N tras mis respuestas?) |
### 🎨 PRÓXIMO TURNO — vía libre (silencio = continúo)
1. **F2.6**: hook ligero UserPromptSubmit que inyecta la forma esperada a T=0 ("turno T2 — tu cierre: PARA JOHN 4 campos + markers") — registro en settings.json con backup+override (D3).
2. **F2.7**: re-anclar el deny PROBATOR al clasificador (cierra H4) — leo `_deny_skip_guards` + corro sus 5 tests antes y después.
3. Con eso, checklist §8 queda 6/8 y solo faltará F3 (tu oráculo) + tu GO final.
🗂️ detalle: [cierres/S20260711.md](generados-por-claude/cierres/S20260711.md) *(el cajón se escribe solo — míralo crecer)*
🎉 **0.3 cerrado y respaldado** (`20a4f5a2`, ×3). *(La advertencia DLC sobre 5 docs archive es falso positivo — matchea "forense" en el commit; son bugs viejos distintos, no mi claim.)*
## Estado de la Ola 0
| Ítem | Estado | Nota |
|---|---|---|
| **0.3** revivir hook STATE.md | ✅ **DONE (no era bug)** | Hook vivo; falso positivo del diagnóstico corregido (AVISO DLC-2). Cero fix de código. |
| **0.1** rotar 4 secretos | 🔒 **TU MANO (CA-3)** | Yo NUNCA roto secretos ni edito `settings.json` con valores. Runbook listo (abajo). |
| **0.2** `.py`→env + borrar `.bak` | 🔒 **preparado, espera tu GO** | Riesgo real: cambia scripts server-side (dependen de `LITELLM_KEY` en env). |
**La Ola 0 es, por diseño, mayormente tu HITL** — el daño vivo son secretos, y esos solo los tocas tú (CA-3). Lo automatizable (0.3) resultó ser un no-bug. Aquí va lo que necesito de ti:
### 🔒 0.1 — Rotación de los 4 secretos (tu acción)
Runbook: **`docs/RUNBOOK_ROTACION_SECRETOS_JOHN_S20260623.md`**. En claro en `.claude/settings.json`: `NEO4J_PASSWORD` (:559), `MEILI_MASTER_KEY` (:595), `KARAKEEP_API_KEY` (:603), `PAPERLESS_API_KEY` (:615). Pasos: rotar cada uno en su sistema (Neo4j/Meili/Karakeep/Paperless) → pegar el nuevo valor en settings.json (tú) → verificar viejo muerto. Cuando termines, yo corro la verificación **value-blind** (`grep -c` de los valores viejos = 0, sin imprimirlos).
### 🔒 0.2 — Migración `.py`→env (tu GO)
Comando value-blind listo (yo NO veo/tipeo el secreto — regex por patrón):
**Caveat que exige tu GO:** estos scripts corren **server-side**; tras la migración, `LITELLM_KEY` DEBE existir en el env de ejecución o se rompen. → confirma que el env lo provee (o lo verifico por SSH antes) y te doy el GO. Los 5 `.bak_scrub` con secretos en claro son **locales, no pusheados** — recomiendo borrarlos, pero no lo hago unilateralmente (rollback-policy).