Skill: TESSERA | Type: reflection
Summary: EPISODIO 9 — LEXICON_COSECHA: ✅ Hecho, John — el contrato único ya existe como C
3.3 KiB
| episode_id | puente_flat | session_code | acto_dialogico | actor_flujo | criticidad_aegis | skill_dominante | fase_proyecto | tipo_semantico | summary_one_line | source_type | trust_boundary | created_at | relectura_tagged | forgejo_commit_sha |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| c9273ff0-b6eb-4c2d-b74f-d0fb7f9928a9 | TRAZA_hecho-john-el-contrato-nico-ya-existe_S20260610.R9_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD | S20260610.SELFAWARENESS_MISION_CRITICA | informar | multi_actor | low | TESSERA | operations | reflection | EPISODIO 9 — LEXICON_COSECHA: ✅ Hecho, John — el contrato único ya existe como CÓDIGO de p | claude_code | internal | 2026-06-11T23:00:06.984644+00:00 | false | pending |
✅ Hecho, John — el contrato único ya existe como CÓDIGO de producción: scripts/memory_writer.py (commit c913ef5, push 3/3, desplegado en el servidor MEMORIA)
El efecto alzheimer, eliminado
Tu razonamiento era exacto: sin memoria operativa, solo el código commiteado sobrevive entre instancias. Ahora el contrato no es una idea de este chat — es un módulo importable:
CanonicalEpisode— EL schema (los campos canónicos,validate()que rechaza lo que viole el contrato, yepisode_iddeterminista derivado del sha del contenido: mismo contenido → mismo id, en cualquier instancia, para siempre).MemoryWriter— EL camino único de grabación: dedup por sha antes de embeber (no gastar tokens en duplicados) → embed una sola vez → Qdrant + PostgreSQL + Neo4j con el mismo id y el mismoembedding_model_idpor punto.- Invariantes I-MW1..I-MW5 escritos y testeados — los que hoy nadie garantizaba: key canónica
content(nunca másbody/content_text), modelo desde UNA fuente env (jamás hardcode), 1 contenido = 1 punto en cada store.
Verificación (no de palabra): tests 7/7 PASS (3 propiedades Hypothesis + 4 unit) · 1 bug real cazado y arreglado durante los tests (registro sys.modules para dataclasses) · smoke en servidor: IMPORT_OK y la cadena de config resolviendo — hoy devuelve gemini-embedding-001 (el fallback correcto pre-formateo); cuando corra el formateo, leerá gemini-embedding-2 del env compartido que el paso 2 crea. Y la prueba bonita del anti-alzheimer: el mismo episodio produce el mismo episode_id (c1d13f59-…) en Windows y en Linux — el contrato es portable de verdad.
Las "reparaciones más adelante" que anticipaste son exactamente el wiring: que crisol_run.py y ember-mcp dejen sus caminos propios y llamen esta librería (pasos 7-8, coordinación R-CAT-2). El contrato ya los espera.
📌 PILA-PENDIENTES (R12): 🔴 2do GO --execute --yes-formateo (sesión fresca) · 🟠 wiring crisol/mcp → memory_writer (R-CAT-2) · 🟡 B15 LEXICON_COSECHA antes del cierre + heredados
📁 BITÁCORA S20260610.SELFAWARENESS_MISION_CRITICA.R12: 📖 READ scripts/MAP.md (gate) · 🆕 WRITE memory_writer.py (+280) + test_memory_writer.py (+90) · 🧪 TEST_POST: pytest test_memory_writer.py → ERROR colección → fix sys.modules → 7 passed · 🧪 TEST_POST: python memory_writer.py → smoke puro OK (id determinista + 16 keys) · ⚡ BASH scp → servidor + smoke IMPORT_OK model_id=...001 (fallback correcto) · ⚡ BASH commit c913ef5 + push origin/forgejo/sriyantra 3/3