feat(episode): TRAZA_para-john-r42_S20260618.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — Nextcloud: 📍 PARA JOHN — R42
This commit is contained in:
Ember 2026-06-18 18:05:31 +00:00
parent efed26daac
commit 1044794b72

View file

@ -0,0 +1,43 @@
---
episode_id: "b5a6dd6d-6e3c-4fbd-8db8-687cbb31c155"
puente_flat: "TRAZA_para-john-r42_S20260618.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260618.VERIFY_FIRST_PASSPORT_FIX"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — Nextcloud: 📍 PARA JOHN — R42"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-18T18:05:21.537284+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
**Hallazgo importante — y es seguridad funcionando como debe:** el doc quedó **gitignored a propósito**. La regla `.gitignore:14 docs/*SECRETOS*` (decisión **CONCILIO S20260617 P0-B**) hace *default-deny* a docs del subsistema de secretos por ser **recon-class** — "aunque sean value-clean, describen la topología viva" (qué servicios tienen credenciales, dónde, cómo se consumen = mapa para un atacante).
Mi doc es value-clean (verifiqué: **0 valores de secreto**) pero ES recon-class (mapea la topología) → la política lo atrapó correctamente y lo mantiene **fuera de los 3 remotos**. Eso es higiene correcta: no poner el mapa del subsistema de secretos en git. Por eso mi `git commit` no lo tomó (los ignorados no se commitean).
**Estado:** el plan B-001 está **entregado y existe localmente** en [docs/PLAN_REMEDIACION_B001_SECRETOS_SETTINGS_JSON_S20260618.md](docs/PLAN_REMEDIACION_B001_SECRETOS_SETTINGS_JSON_S20260618.md) — pero **local-only** (no respaldado en remotos, por la política recon-class).
### 📍 PARA JOHN — R42
**Hice:** Documenté el plan de remediación B-001 (2 fases: scrub→.mcp.json + rotación HITL per-servicio CA-3, marco CUSTODIA, sin valores de secretos). Cero cambios a infra viva, como pediste.
**Falta decidir — persistencia del doc:** está local + gitignored **por diseño** (política recon-class CONCILIO). Eso lo protege pero también significa que **no está en los remotos** (riesgo de pérdida en este harness/instancias paralelas). No lo whitelisteo yo solo — extender la política default-deny de secretos es decisión tuya.
**Mi consejo:** Es un *plan de procedimiento* (no la topología viva en sí), y las otras 3 docs de secretos del CONCILIO SÍ están whitelisteadas (`!docs/CONSEJO/DECISION_..._secretos.md`). Por consistencia + para que un sprint futuro lo encuentre, **whitelistearlo** (1 línea `!docs/PLAN_REMEDIACION_B001_*.md` en .gitignore) sería razonable. Pero también vale dejarlo local o subirlo a Drive/Nextcloud.
**Para avanzar, elige:**
- 🟢 **A** *(recomendado)* — Whitelist en `.gitignore` (`!docs/PLAN_REMEDIACION_B001_*.md`) → trackeo + push a 3 remotos (consistente con las otras docs secretos aprobadas; verifiqué que es value-clean).
- 🟡 **B** — Dejarlo **local-only** (respeta default-deny estricto; acepto el riesgo de pérdida) + opcional backup a Drive/Nextcloud.
- ⚪ **C** — Cerrar aquí; el plan existe local, lo retomamos en el sprint de seguridad dedicado.
📌 **PILA-PENDIENTES (R42)**
**ENTREGADO** plan remediación B-001 (doc local, value-clean, marco CUSTODIA 2 fases)
**Q-B001** Persistencia del doc: whitelist / local-only / Drive (tu decisión — A/B/C)
🔴 **B-001** ejecución (scrub + rotación) — diferida a sprint dedicado (documentada, CA-3 rotación)
**PP-140** LOOP_WRITE 63 episodios pendientes push Qdrant (MCP reconectó — drenable)
🟡 **PP-180** STATE.md L980 marca LITELLM_URL/API_KEY ⚠️ (cosmético)