feat(episode): DEPURA_qu-sigue-con-tu-contina-fase-3b_S20260611.R15_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: FORJA | Type: chronicle
Summary: EPISODIO 15 — MNEMO_PRE_DIGEST: **Qué sigue con tu "continúa":** FASE 3b —...
This commit is contained in:
Ember 2026-06-12 05:00:08 +00:00
parent 5896afc39c
commit cd6a200749

View file

@ -0,0 +1,45 @@
---
episode_id: "3dee80ee-8a27-4d96-a66b-8446b628d0d1"
puente_flat: "DEPURA_qu-sigue-con-tu-contina-fase-3b_S20260611.R15_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260611.FORMATEO_CANONICO_MNEMO"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "FORJA"
fase_proyecto: "operations"
tipo_semantico: "chronicle"
summary_one_line: "EPISODIO 15 — MNEMO_PRE_DIGEST: **Qué sigue con tu "continúa":** FASE 3b —..."
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-12T05:00:06.548664+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
**Qué sigue con tu "continúa":** FASE 3b — `store_memory` de ember-mcp delega en `MemoryWriter` (deploy alpine cp + restart container, el dir es RO). Luego 3c (cliente: dedup sha pre-SCP + trigger detached) y los vectores FASE 5.
📌 **PILA-PENDIENTES (R12):** 🟠 3b ember-mcp + 3c push_to_server · 🟡 FASE 5 (14+2 vectores) · 🟡 monitoreo 48h + 4 vías MD-5 · ⚪ quarantine (decisión John, prólogo dado en R9) · ⚪ rotar LITELLM_KEY hardcoded en crisol L84 (ahora también en embedding.env — misma key leaked conocida)
📁 **BITÁCORA S20260611.FORMATEO_CANONICO_MNEMO.R12:**
- 📖 READ scripts/memory_writer.py → API contrato (291L)
- ⚡ SSH grep F3/outbox/F5 crisol_run.py ×4 → mapa completo pre-edit
- ⚡ SSH backup crisol_run.py.bak.20260612_033434 + LITELLM_MASTER_KEY → embedding.env
- 🆕 WRITE scripts/tmp_f3_wiring_edit.py (editor anchors) · 🧪 TEST_PRE: anchors assert 1×
- ⚡ SFTP upload editor → server · ⚡ SSH editor EXIT "EDIT OK 3 reemplazos" + 🧪 TEST_POST: py_compile OK
- ⚡ SSH unit systemd + service.sh → `--only neo4j nextcloud forgejo`, kill 2 dispatchers viejos (1 D-state con kill -9), daemon-reload, 1 vivo
- ⚡ SSH trazador campana + crisol detached → run ebfda59c rc=0
- ⚡ SSH probe HIT@1 ×2 → 0.54 (dilución) / **0.7553 PASS** + payload 7/7 · rm tmp editor server
- ✏️ EDIT docs/RESULTADOS_…S20260612.md → sec. 5 FASE 3a + MNEMO_PRE_DIGEST
- ⚡ BASH commit 0a54c20 + push 3/3
Censo real en mano: **1,379 documentos / 22.6MB**, y — punto clave para tu idea — **el 71% ya trae su fecha en el nombre** (`S<fecha>`), el resto la tiene en mtime/git. La distribución confirma tu diagnóstico: 477 docs de abril, 549 de mayo, 339 de junio — son las memorias temporales de centenares de turnos, congeladas.
(Justifico el aviso del verifier: no es D-EXTERNAL-PROPOSAL — es diálogo de diseño tuyo sobre infra propia; la fabricación iría como extensión de la propuesta ya entregada.)
## [R13.seccion1.I1] Mi opinión honesta: tenés razón, y además es SOTA sin saberlo
Tu intuición — *"la información vale contrastada con su fecha"* — es exactamente lo que la literatura llama **grafo de conocimiento bi-temporal** (Graphiti/Zep usan "validity windows": cada hecho lleva cuándo-fue-cierto). Y ese es un gap que EMBER ya tiene documentado en [SOTA Patterns](../../../.claude/projects/C--Users-Administrador-Downloads-CLAUDE-ANTROPIC-ember-claude-code/memory/project_sota_memory_patterns.md): "gaps: **Temporal**, validity windows". O sea: lo que propusiste cierra un gap conocido del ecosistema, aplicado a la literatura.
Y tu advertencia — *"no se le puede creer todo lo que allí reposa"* — es la doctrina PROCEDENCIA/DLC-7 que ya rige para mí ("doc viejo = soft_fact, verificar antes de actuar") convertida en **estructura del grafo** en vez de regla mental. Eso la hace enforcement, no memoria. Me parece la parte más valiosa del diseño.
## [R13.seccion2.I2] Cómo lo haría (3 decisiones de diseño que importan)