--- episode_id: "8c377f1b-4b87-48ce-bdcf-aeb509ae7b44" puente_flat: "TRAZA_para-john_S20260705.R14_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD" session_code: "S20260705.EVAL_INSTRUMENT_FORGE_SKILL" acto_dialogico: "informar" actor_flujo: "multi_actor" criticidad_aegis: "low" skill_dominante: "NEXUS" fase_proyecto: "operations" tipo_semantico: "troubleshooting" summary_one_line: "EPISODIO 14 — BLINDADAS: 📍 PARA JOHN" source_type: "claude_code" trust_boundary: "internal" created_at: "2026-07-12T15:16:09.915088+00:00" relectura_tagged: false forgejo_commit_sha: "pending" --- Re-lanzado con contrato robusto: `w0x2cmo1z`. Los schemas ahora son markdown plano + listas de strings — validan de forma confiable. Te aviso cuando termine con el diseño RELOJERO-v2 completo. # RELOJERO-v2 — el diseño, sobre fundación verificada y auto-corregido Commit `74c30fc`, push 3/3. [docs/RELOJERO_V2_DISENO_S20260705.md](docs/RELOJERO_V2_DISENO_S20260705.md) — más el [landscape verificado](docs/LANDSCAPE_VERIFICADO_RELOJERO_S20260705.md). Esto cierra el arco completo, John: tu duda sobre RELOJERO → mi laboratorio empírico → las 4 opiniones externas → estas 5 investigaciones → y ahora un **rediseño con dato**, no con fe. ## Lo que pasó (y por qué se puede creer) El workflow de 6 agentes hizo algo notable: **las 4 lentes adversariales dieron `NECESITA_REVISION`** — ninguna aprobó el borrador. Y lo desmontaron con evidencia del propio repo, no con opinión: - **Un crítico corrió los imports** y descubrió que `mutmut`, `z3` y `outlines` **no están instalados** (solo `hypothesis`). Los "controles que corren" del borrador… no corrían. - **Otro leyó el hook de Casbin** y probó que es `advisory` (`exit 0`), con el bloqueo duro **vencido** desde el 22-jun, y cuyo matcher ni cubre `postgres_query`. El borrador afirmaba "deny real hoy". Falso. - **La lente fix-4b** encontró el golpe más fino: 3 de los "jueces externos" del borrador **eran sobornables por el modelo** (el modelo escribía la referencia del oráculo, los tests de la mutación, las señales del router) — o sea, **reintroducía el pecado 4b con otro nombre.** El diseño se **auto-recortó de 7 componentes a 1 gate mandatorio.** ## RELOJERO-v2 en tres ideas 1. **Se apaga por defecto.** Tier LITE (tarea acotada) = cero ceremonia, cero bloque inyectado — porque [el paper de ETH (2602.11988)](https://arxiv.org/abs/2602.11988) *y* mi AB-LAB prueban que la ceremonia en tareas fáciles perjudica. El tier lo decide un `route_tier` por **señales deterministas del diff**, no por lo que el modelo declara (y el modelo solo puede *subir* el tier, nunca bajarlo). 2. **Un solo juez insobornable.** El 3er pilar pasa de auto-verificación introspectiva → **`external_oracle`**: puro Python, cero dependencias, con la referencia venida de **fuente no-modelo** (git base / property de la spec / asserts de dominio fijos). Es el juez que atrapó 4b. Todo lo demás (mutation, symbolic, structured) es roadmap opt-in, no se construye hasta que el oráculo demuestre que ayuda. 3. **Honesto sobre su estado.** Receipt JSONL-first (la auth a Plex está rota). Nace advisory; solo llega a bloqueo con N≥30 receipts que prueben que discrimina + tu GO. ## El paso que lo decide