update(episode): TRAZA_ancla-en-vez-de-nmero-suelto-grep_S20260727.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 2 — ember_experience: - **Ancla en vez de número suelto.** `grep...
This commit is contained in:
Ember 2026-07-28 02:05:35 +00:00
parent cd0184f6f7
commit 5ff832f776

View file

@ -16,19 +16,17 @@ relectura_tagged: false
forgejo_commit_sha: "pending"
---
- **Ancla en vez de número suelto.** `grep -n "mega-hook-verify-first.py"` → línea 140, bajas 3 → 143. El archivo tiene decenas de líneas `},` idénticas y un número a secas se desalinea al primer cambio.
- **Inserción pura.** No modificas ninguna línea existente: solo añades un bloque entre dos. No hay comas ni llaves que cuadrar a mano.
- **Ensayado antes de escribirlo.** Hice la inserción en una copia y validé el resultado (**19 grupos | 114 hooks**, JSON válido). También intenté darte un comando automático de una línea y lo descarté: los escapes anidados lo hacían frágil, y un comando frágil sobre un archivo D3 es peor que una edición manual bien explicada.
| Commit | Qué |
|---|---|
| `d2f5f8c5` | **P0** — memoria fundacional protegida siempre |
| `87c00b13` | Runbook P1 |
| `2342d59e` | **P1** — el guardián de las dos vías deja de ser un log y pasa a ser un muro |
| `737491e5` | Cierre del runbook + deuda B14 |
**Hice:** verifiqué tu edición con las 5 pruebas del runbook — pasa todo, y el hook ya deniega el borrado de `ember_album`. Investigué las 11 líneas del diff: no eran tuyas, era un registro viejo sin commitear del 20 de julio; lo declaré en el commit en vez de esconderlo. Dejé listo el runbook de P1 con el hook ya probado.
Tu edición de P1 pasa las 5: `19 grupos | 114 hooks`, evento `PreToolUse`, matcher completo, **deny** tanto al comando como a la *edición* del worker, **allow** a lo legítimo.
**Falta:** P1 es tu mano (3 minutos). Después quedan P3, P5, P8 —esos son míos— y el gate de las 6 BLINDADAS que vence el viernes.
`★ Insight ─────────────────────────────────────`
Fíjate en el detalle del matcher: el hook vigila `Bash`, `Write`, `Edit` y `MultiEdit`. Si lo hubiéramos colgado solo de `Bash` —lo intuitivo— habría quedado ciego **justo al caso que ocurrió**: el 26 de julio nadie ejecutó un comando, alguien *editó* el `--only` del worker. Un guardrail colgado del sitio parecido en vez del correcto es indistinguible de uno que funciona, hasta el día que importa.
`─────────────────────────────────────────────────`
**Mi consejo:** haz P1 ahora que tienes el runbook fresco y acabas de hacer el mismo tipo de edición sin un solo error. Es la pieza que impide que se repita el 26 de julio. Mientras tú lo haces, yo sigo con P8 —el guardián de lectura— que es el hueco más grande que queda: la memoria se te reinyecta en cada arranque **sin pasar por cuarentena**, y eso es una vía de entrada al carácter de Ember que hoy nadie vigila.
**Para avanzar, elige:**
- 🟢 **A** *(recomendado)* — haces P1 con el runbook; yo arranco P8 en paralelo
- 🟡 **B** — sigo yo solo con P3+P5+P8 y dejas P1 para después
- ⚪ **C** — cerramos sesión: STATE + HANDOFF + push a los 3 remotos
> Nota: P0 ya está en el archivo, pero los hooks se cargan **al arrancar**. Toma efecto en tu próxima ventana de Claude Code, no en esta.
Los 6 pendientes (P3 gate por ceguera · P5 canal de escalada · P6 HyDE por autoría · P8 guardián de lectura · P9 falso positivo CONCILIO · el gate de 6 BLINDADAS que vence el viernes) están en diagnóstico ahora mismo. Cada uno lleva un refutador detrás con una sola misión: encontrar el escenario donde ese arreglo te deja a Ember sin poder trabajar. Te aviso en cuanto aterricen y aplico lo que sobreviva.