feat(episode): TRAZA_hallazgo-al-leer-computepy_S20260621.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 2 — BLINDADAS: Hallazgo al leer `compute.py`
This commit is contained in:
Ember 2026-06-21 16:53:59 +00:00
parent 26b4cdd6ee
commit 15f2299017

View file

@ -0,0 +1,39 @@
---
episode_id: "94cc0576-0dda-45d8-9360-62b32c65b45d"
puente_flat: "TRAZA_hallazgo-al-leer-computepy_S20260621.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260621.CRONICA_SEMANAL_C15"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 2 — BLINDADAS: Hallazgo al leer `compute.py`"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-21T16:53:44.005249+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Antes de tocar el motor, lo leí entero — y encontré algo que **cambia FASE 2** (justo el valor de comprender antes de refactorizar):
## Hallazgo al leer `compute.py`
1. **C6→BLIND honesto YA ESTÁ IMPLEMENTADO.** Las líneas 275-315 ya degradan honesto: `SSH_UNAVAILABLE→STALE` (no fake OK), heartbeat caído→STALE, `pct_stale≥80%→FROZEN`. Una sesión previa (fix F3-05 + DECISION CONCILIO S20260618) ya lo hizo. **No hay que rehacerlo.** (Por eso el indicador ya muestra `C6 FROZEN/STALE honesto` desde hace turnos.)
2. **Los 6 `_check_C*` NO son clones.** CRISOL/el plan los llamó "casi-clones", pero al leerlos: C1 parsea STATE_DRIFT + penaliza `_meta` drift; C5 parsea settings.json; C6 es una cascada de 4 condiciones de wiki. Solo C2/C3 son mtime puro. **Consolidarlos en una tabla data-driven sería over-engineering riesgoso** — forzar uniformidad donde hay diversidad legítima, y un error rompe el panel. Lo descarto con justificación (PROBATOR habría marcado esto).
**FASE 2 real, recalibrada:** queda mucho menos de lo planeado. Lo seguro y con valor: `freshness-SLO` (declarar cadencia esperada por fuente) + `auto-reconcile drift` (en reality_check) + doc `CONTRACT_SDB`. Y **una sola pieza cambia tu panel**: el indicador unificado.
## EJE C — la decisión que sí cambia lo que ves (PRÓLOGO)
**Reframe:** lo único de FASE 2 que altera tu pantalla cada turno es si **añadimos 2 indicadores binarios** al panel: `gap_loop ALIVE/DEAD` + `improve_loop ALIVE/DEAD` (salud del lazo cognitivo).
**Historia:** el plan proponía un indicador "6 barras + 2 binarios". El glifo BLIND honesto ya existe (C6). Lo que falta es mostrar si el lazo que acabo de cablear (B1+B2) está **vivo** — ahora que el `report-update` y el `analyzer-trigger` corren, ver su pulso cada turno tiene sentido.
**Consecuencias:** añadirlos → ves de un vistazo si tu lazo de auto-mejora respira (útil tras el recableado). No añadirlos → el panel sigue idéntico (6 barras, familiar).
**Mi inclinación:** ligera a **prepararte un PREVIEW** del indicador con esos 2 binarios — pero es tu pantalla, no la cambio sin que la veas primero (PROBATOR C4: panel solo en preview hasta tu ACK).
**Pregunta esencial:** ¿preparo el preview del indicador +2 binarios para tu visto, o dejamos el panel como está y hago solo la parte invisible (freshness-SLO + CONTRACT_SDB)?