feat(episode): TRAZA_todo-entregado-y-verificado-dos-veces-24_S20261016.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — SENTINEL: Todo entregado y verificado dos veces (24/24 en...
This commit is contained in:
Ember 2026-10-16 06:16:47 +00:00
parent 4b438f4cb8
commit ca3c8f60bb

View file

@ -0,0 +1,30 @@
---
episode_id: "ebc99a29-53de-46a3-afa7-1052c9f4b7d4"
puente_flat: "TRAZA_todo-entregado-y-verificado-dos-veces-24_S20261016.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20261016.SID8028C506653F"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — SENTINEL: Todo entregado y verificado dos veces (24/24 en..."
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-10-16T06:16:46.118784+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Todo entregado y verificado dos veces (24/24 en verde también tras el formateo de los hooks). Nada commiteado: lo decides tú.
> 🎯 **En una frase:** ya existe, con código y pruebas, la alternativa que la carta prometía: un "motor de decisión" donde ninguna regla se compila sin una medición que pueda refutarla.
**✅ Hice**
- Schema v0.2 cerrado (`schemas/decision_spec_v0_2.schema.json`): un campo mal escrito ya no pasa en silencio; obliga a declarar la unidad de decisión (tarjeta, configuración, asignación…), cinco versiones, evidencia con fecha y reglas con ciclo de vida HYPOTHESIS → CALIBRATED → COMPILED → STALE.
- Validador y evaluador sin `eval` (`scripts/validar_decision_spec_v02.py`): recorre el árbol de la expresión con una lista blanca y la evalúa él mismo; el desconocido se propaga como estado (lógica de tres valores), nunca como cero ni como "cumple"; la frescura vencida emite `STALE_EVIDENCE` de verdad.
- 24 tests (`tests/test_validar_decision_spec_v02.py`): los 6 casos adversariales de la carta, 9 expresiones con efectos rechazadas sin tocar el disco, bordes nan/inf/cero, y el golden contra tu Spark real: con eficiencia 0,62 las mediciones de llama.cpp/Ollama caen dentro del ±10 %; con el 0,55 de Astra, no (control negativo, y falla como debe).
- Durante la construcción los tests cazaron dos huecos míos (exponente anidado que pasaba el validador; `nan > 0` que daba `False`) y los corregí antes de cerrar.
- Documento de la spec en `docs/`, copia para el consejo junto a la carta (carpeta `spec_competidora_ember/`), memoria actualizada.
**⏳ Falta** (tuyo): GO para commitear a los 3 remotos; decidir si la unidad de decisión del caso GPU es "configuración" (mi inclinación) o "tarjeta"; enviar carta + spec a Astra. Mío con fecha: integrar el perfil en SILICIO (pasa por SENTINEL, 2026-10-30) y el transpilador a JSONLogic para Gemini/Grok (2026-11-15). No corrí la batería completa de tests del repo, solo la nueva: las piezas no tocan nada existente, pero eso está declarado, no medido.