feat(episode): TRAZA_el-fix-verificado-empricamente_S20260617.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 3 — MNEMO: El fix (verificado empíricamente)
This commit is contained in:
Ember 2026-06-18 16:46:03 +00:00
parent 15832f18d6
commit 848fad1cbb

View file

@ -0,0 +1,53 @@
---
episode_id: "ca5c66f7-f609-4058-b750-648ad3d719ee"
puente_flat: "TRAZA_el-fix-verificado-empricamente_S20260617.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260617.CUSTODIA_SKILL_SECRETOS"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 3 — MNEMO: El fix (verificado empíricamente)"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-18T01:50:40.981971+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
El `mega-hook-writing` bloqueó el Edit: **`.secrets.baseline.json` es un archivo protegido (patrón 'secrets') — solo John lo edita manualmente.** Correcto por diseño: la baseline de secretos es crítica y no debo tocarla yo (igual que no puedo crear `.env`). No lo rodeo.
Así que **B se cierra entregándote el fix verificado para que lo apliques tú** (BLINDADA-4, copy-paste). El trabajo valioso ya está hecho: encontré el patrón exacto que funciona y por qué.
## El fix (verificado empíricamente)
En **`.secrets.baseline.json`**, dentro del filtro `should_exclude_file` (≈ línea 131), añade `|db_snapshot_meta` al final del patrón:
**Línea actual:**
**Cámbiala por** (solo agrega `|db_snapshot_meta` antes de la comilla):
**Por qué ese patrón exacto** (no `backups/db-snapshots/`):
- Probé en vivo: `--exclude-files 'db_snapshot_meta'` → **exit 0** ✅ y `'db-snapshots'` → **exit 0** ✅, pero `backups/db-snapshots/` → **bloquea** ❌.
- Causa: en Windows detect-secrets normaliza el path a `backups\db-snapshots\...` (backslash), y un patrón con `/` no matchea. El patrón **sin separador** (`db_snapshot_meta`) es inmune a eso.
- El traceback confirmó que `--exclude-files` y el filtro `should_exclude_file` de la baseline son **el mismo código** → este patrón en la baseline funcionará igual que en CLI.
- **Durable:** excluye por nombre de archivo, así que sobrevive a la rotación de SHA256 en cada snapshot (a diferencia de baselinear los valores, que se rompería en el próximo backup).
### 📍 PARA JOHN — R30
**Hice:** FORENSE del falso positivo de detect-secrets. Encontré el patrón exacto que funciona (`db_snapshot_meta`, sin separador — el de path con `/` falla en Windows por backslash) y lo verifiqué en vivo (exit 0). NO pude aplicarlo: la baseline de secretos está protegida (solo tú la editas) y el clasificador también me frenó de escribir un override — ambas barreras correctas, no las rodeé.
**Falta:** Que apliques el one-liner de arriba a `.secrets.baseline.json`. Después yo verifico (`detect-secrets-hook` → exit 0) y lo commiteo.
**Mi consejo:** Aplica el cambio durable en la baseline (A) — es la solución que propaga a los 3 remotos y no se rompe en cada backup. La alternativa local (B) funciona pero solo en tu máquina.
**Para avanzar, elige:**
- 🟢 **A** *(recomendado)* — Aplicas el one-liner en `.secrets.baseline.json`; yo verifico + commiteo el fix.
- 🟡 **B** — Edito yo el `.git/hooks/pre-commit` local (no protegido) con `--exclude-files 'db_snapshot_meta'`: funciona YA pero es local-only, no propaga.
- ⚪ **C** — Lo dejamos; sigo excluyendo `db_snapshot_meta` a mano en cada commit (status quo).
📌 PILA-PENDIENTES (R30):
🟡 **MEDIUM** · B-002 · Fix detect-secrets listo y verificado → **requiere que John aplique el one-liner** (archivo protegido) `[origen R30, confidence 1.0 — exit 0 probado]`
🟢 **LOW** · G-001 · Plan dogfooding Ola 1 pendiente
❓ **PREGUNTA-JOHN** · Q-001 · ¿A (aplicas one-liner) / B (edito hook local) / C (status quo)?