feat(episode): TRAZA_qu-qued-firmado_S20260822.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — BLINDADAS: Qué quedó firmado
This commit is contained in:
Ember 2026-08-22 05:09:07 +00:00
parent 439a1490ba
commit 06640f05d7

View file

@ -0,0 +1,40 @@
---
episode_id: "a6002e8d-811b-4044-a6a1-5cb7573c02fb"
puente_flat: "TRAZA_qu-qued-firmado_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 — BLINDADAS: Qué quedó firmado"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-08-22T05:08:52.876341+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Aprobación sellada y verificada en el remoto (`13693cd2`, los 3 sincronizados).
## Qué quedó firmado
**194 entradas pasaron de `propuesta` a `aprobada`** — pero no todas con el mismo respaldo, y esa distinción quedó grabada por entrada:
| Base de la aprobación | Cuántas | Qué significa |
|---|--:|---|
| **Evidencia** (`evidencia_R1..R5 / D1..D4`) | **143** | una regla del árbol disparó sobre una señal real del texto |
| **Default sin señal** (`default_sin_senal`) | **51** | 37 reglas + **14 BLINDADAs** sin enforcement declarado → `compensatorio` por defecto |
Las 14 BLINDADAs que descansan en el default son **B-1, B-3, B-4, B-5, B-7, B-8A, B-8B, B-9, B-13, B-14, B-15, B-16, B-20, B-22**. Su clasificación como *compensatorio* es defendible —son doctrina que el modelo lee, sin muro propio declarado— pero es una **inferencia, no una medición**, y ahora el manifiesto lo dice en voz alta. Si alguna te chirría, `B-9` (INTEGRIDAD DE DATOS) es la que más me haría dudar: su espíritu es de verificador aunque su enforcement sea advisory.
Las otras 17 BLINDADAs sí tienen evidencia: **9 verificadores** (B-10, 17, 18, 24, 26, 27, 28, 29, 30 — todas con `bloquea`/`deny` en su texto), 7 compensatorios con señal explícita, y B-2 constitutivo por `backup`.
**Los 31 de confianza baja NO los toqué** — no los aprobaste, y aprobarlos "de paso" habría sido exactamente lo contrario de lo que este ciclo construye. Siguen `pendiente` bajo la allowlist residual: el muro los tolera, pero **no los cuenta como clasificados**. Son los que el catálogo describe de forma ambigua (`mega-hook-read.py`, `mega-hook-session.py`, `mega-hook-response.py`, `shadow_hook.py`…). Verlos requiere abrir el archivo, no la glosa.
`★ Insight ─────────────────────────────────────`
El manifiesto ahora distingue tres cosas que suelen confundirse: **qué es** un componente (`clase`), **con qué evidencia** lo sabemos (`regla`), y **quién y sobre qué base** lo firmó (`aprobado_por` + `base_aprobacion`). Sin el tercer campo, dentro de seis meses las 51 clasificadas por defecto serían indistinguibles de las 143 medidas — y alguien construiría encima creyendo que todas pesan igual. Es la misma enfermedad que este ciclo entero persigue: *presencia ≠ correctitud*.
`─────────────────────────────────────────────────`
**Hice** — apliqué tu GO: 194 aprobadas con procedencia por entrada, 31 intactas, commit `13693cd2` en los 3 remotos, suites en verde (`10 passed, 2 xfailed`). Rollback disponible en un comando (`/tmp/manifest_pre_aprobacion.json` + `git checkout HEAD~1`).