feat(episode): EXPLORA_sigo-esperando-que-el-workflow-wlxcj22ui_S20260714.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 2 — EMBER: Sigo esperando que el workflow `wlxcj22ui` termine —...
This commit is contained in:
Ember 2026-07-14 23:22:23 +00:00
parent c654883c05
commit 4e1a4d88cf

View file

@ -0,0 +1,51 @@
---
episode_id: "ca48549c-6571-4b07-94d9-f26b0d16934c"
puente_flat: "EXPLORA_sigo-esperando-que-el-workflow-wlxcj22ui_S20260714.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260714.NEO4J_REVIVE_WRITEPATH"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 2 — EMBER: Sigo esperando que el workflow `wlxcj22ui` termine —..."
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-07-14T23:22:14.305454+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Sigo esperando que el workflow `wlxcj22ui` termine — corre en background y me notifica al completarse; no hay nada que decidir ni reportar hasta entonces. (La nota de PRÓLOGO del hook aplica a decisiones nuevas que yo abra; ahora mismo no estoy abriendo ninguna, solo aguardo los resultados para ensamblar la suite.)
En cuanto vuelva, ensamblo `tests/test_gates_actually_deny.py` + el informe con el número clave: cuántos de los 26 gates enforzan de verdad.
⛽ 🟢 GREEN ~837K
**`cc49b917` → 3 remotos exit=0.** Auditoría asegurada.
—
# 🔬 Lo que encontró la auditoría
Auditamos, John — y el resultado es más importante que cualquier fix individual: **la mentira de los instrumentos es una CLASE, no un accidente.**
**6 instancias confirmadas de la misma raíz** ("mide el proxy, no el hecho"):
| Mentían "sano cuando roto" | Mentían "roto cuando sano" | Contaban lo que no es |
|---|---|---|
| heartbeat wiki · C6 scorer | probe Neo4j · detector PROBATOR · C1 scorer | C5 scorer (tests como hooks) |
Y el dato que lo sella: **el ecosistema ya había arreglado 2 (C5 y C6) en un sprint de junio (F3-05) — sin nombrar el patrón.** Hoy sumé 4 más. No es mala suerte; es un **modo de falla estructural** que reaparece cada vez que alguien fabrica un sensor sin preguntarse *"¿esto mide el hecho o una sombra del hecho?"*.
**El instrumento que consumo cada boot (scorer C1-C6) quedó auditado y su survivor arreglado:** C1 medía el `mtime` del manifest (65.7h → "STALE") ignorando que el drift real (STATE_DRIFT, medido hace 5.8h) dice **155/179 OK**. Ahora dice la verdad: `DRIFT 155/179 OK + 4 drift`. Verificado contra oráculo externo.
**El principio que extraje** (y que vale más que los fixes): `mtime` es un proxy **legítimo** para artefactos *generados* (mtime = cuándo se midió) y **mentiroso** para artefactos *sincronizados* (un `rsync` toca el mtime sin cambiar nada). Esa es la línea que separa un sensor honesto de uno que miente.
**La regla de fondo** (§7 del doc): *todo hook que emite un veredicto debe tener un test contra un oráculo externo — no solo "¿ejecuta?".* Sin eso, **un ecosistema con sensores no validados no tiene self-awareness: tiene fe.**
### 📖 La decisión que te dejo (con su historia)
**Reframe:** no es "¿auditamos más hooks?". Es **¿cómo cerramos la clase — de raíz o a parches?**
**De dónde viene:** hoy tropecé con 6 sensores mentirosos **sin buscarlos**. Tienes ~89 hooks registrados; casi todos emiten algún veredicto; **ninguno tiene un test que contraste su salida contra la realidad.** Los 6 de hoy salieron por accidente — los demás siguen sin mirar.