feat(episode): TRAZA_b-el-interruptor-existe_S20260822.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: B — El interruptor existe
This commit is contained in:
Ember 2026-08-22 18:42:05 +00:00
parent 0c772b403e
commit d225fedfb3

View file

@ -0,0 +1,44 @@
---
episode_id: "f3d02dcc-04d6-4deb-a876-7305d134ad4f"
puente_flat: "TRAZA_b-el-interruptor-existe_S20260822.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260822.PIPELINE_FIXES"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — MNEMO_PRE_DIGEST: B — El interruptor existe"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-08-22T18:42:01.037032+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Hecho: **B y C completos**, commit `37193c9b` en los tres remotos.
## B — El interruptor existe
Tu tesis —*"apagar sin borrar"*— dejó de ser una intención declarada y es una palanca que funciona:
| Prueba | Resultado |
|---|---|
| Idempotencia sobre el `settings.json` **real** | `diff --perfil frontier-full`**0 líneas** |
| Suite del interruptor | **5 passed, 1 xfailed** (control positivo muerde) |
| Perfil `local-small` generado | **94 de 122 entradas sobreviven, 28 apagadas (23%)** |
| `settings.json` vigente | **intacto, 26.900 bytes** — el generador nunca puede escribirlo (`exit 3`) |
Y un bug cazado en el camino que valía la pena: el `diff` mostraba **18 líneas de ruido** por reordenar `matcher` antes de `hooks`. En una herramienta cuyo propósito es que *revises qué va a cambiar antes de aplicarlo*, ese ruido esconde el cambio real. Corregido a 0.
**Lo que no hice a propósito:** los perfiles `frontier-opus` y `frontier-fable` nacen **vacíos**. Apagarle compensatorios a Opus "porque ya no los necesita" sería exactamente la apuesta sin datos que R-8 prohíbe. Primero SHADOW, después medición, después apagado.
`★ Insight ─────────────────────────────────────`
Un hook me avisó de que mi `arnes_shadow_log.jsonl` nacería huérfano — sin lector, como los 314 de 525 que medí esta mañana. En vez de declarar un `consumed_by` y seguir, **construí el lector en el mismo acto**: `arnes_off_condition.py` cuenta las sesiones en sombra sin intervención y dicta si el componente es apagable. Eso cierra el bucle entero de tu tesis: *clasificar → sombra → medir → apagar*. El emisor y su consumidor nacieron juntos; era la única forma coherente de no fabricar el artefacto huérfano número 315 mientras documentaba la plaga.
`─────────────────────────────────────────────────`
## C — El criterio, derivado y con una corrección incómoda
No inventé la cifra: la **derivé por análisis de potencia** — y el cálculo destapó un problema del borrador.
Con McNemar pareado, α=0,05 y potencia 0,80, **n=40 sólo detecta efectos de ~24 puntos o más**. El borrador proponía exigir **Δ ≥ 20 con n=40**: infrapotenciado. Habría producido un "no significativo" incapaz de distinguir *"el arnés no sirve"* de *"no había datos suficientes"* — la peor clase de resultado, porque **parece un veredicto y es una laguna**.