feat(episode): EXPLORA_r7seccion1i1-qu-qued-hecho_S20260808.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: TESSERA | Type: design
Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: [R7.seccion1.I1] Qué quedó hecho
This commit is contained in:
Ember 2026-08-09 19:22:40 +00:00
parent 861b207836
commit 57f1f4fb77

View file

@ -0,0 +1,44 @@
---
episode_id: "36da2277-3042-4940-9212-364f6efb79e7"
puente_flat: "EXPLORA_r7seccion1i1-qu-qued-hecho_S20260808.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260808.MEMORIA_SOTA_BRECHA"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "TESSERA"
fase_proyecto: "operations"
tipo_semantico: "design"
summary_one_line: "EPISODIO 1 — MNEMO_PRE_DIGEST: [R7.seccion1.I1] Qué quedó hecho"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-08-09T19:22:38.485027+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
**FASE 1 cerrada y respaldada en los tres remotos.** `322ce0c6`.
## [R7.seccion1.I1] Qué quedó hecho
El objeto de memoria de EMBER ya dice de qué clase es lo que recuerda y desde cuándo es verdad. Antes no podía. Eso era la brecha estructural que midió el análisis contra el estado del arte, y está cerrada:
| Tarea | Entregable | Verificación |
|---|---|---|
| **T-02** | [`docs/SPEC_MEMORIA_CONTRATO_V2_S20260808.md`](docs/SPEC_MEMORIA_CONTRATO_V2_S20260808.md) | contrato I/O declarado **antes** del código |
| **T-03/04** | 7 claves nuevas en `tessera_pipeline.py` vía `derive_contract_v2()` | 5/5 casos de derivación · 55 passed sin regresión |
| **T-05** | [`rules/memoria-contrato-v2.md`](rules/memoria-contrato-v2.md) + su digest | MC-1..MC-8 + 4 anti-patrones |
| **T-06** | [`memory_contract_validator.py`](.claude/hooks/lib/memory_contract_validator.py) + test | 72 passed · **mordida verificada** |
Los siete campos: `epistemic_status` (9 valores) · `epistemic_confidence` · `temporal{valid_from, superseded_at}` · `lifecycle_state` (6) · `cognitive_type` (7, el segundo eje) · `derived_from` · y el sello `contract_schema_version`.
## [R7.seccion2.I2] Lo que este tramo enseña sobre verificar
Tres cosas se rompieron por el camino, y ninguna se tapó:
**El agente afirmó que su control positivo mordía.** No lo di por bueno. Neutralicé el validador y la suite pasó a **44 failed / 28 passed** — muerde de verdad. Luego lo restauré con sha256 verificado. Un claim de un agente sin evidencia propia vale lo mismo que un claim mío sin evidencia: nada.
**Había un `index.lock` de 36 horas** — residuo de mi propio commit cortado ayer. Con cinco `git.exe` vivos, borrarlo a ciegas podía corromper el índice. Lo probé **renombrándolo**, que es reversible y demuestra propiedad sin destruir: si se deja renombrar, nadie lo tiene abierto.
**El pre-commit bloqueó por un secret** en `skills/llm-memory-research-auditor/tests/`, archivo de otra instancia que ya estaba en el índice. No usé `--no-verify`. Acoté el commit por pathspec a mis seis archivos: lo mío entra, el hallazgo de seguridad sigue vivo para su dueño.
Y una decisión de diseño que vale más que el código: el default de `epistemic_status` es `inferred`, **no** `observed`. Un episodio sin declaración no es una observación verificada — lo contrario sería exactamente la promoción silenciosa de inferencia a hecho que el estado del arte lista como fallo grave. Lo mismo con `calibrated: false` siempre: calibrar exige una serie de resultados que no existirá hasta T-18.