feat(episode): DEPURA_fase-3-wiring-completa-las-3-vas-de-es_S20260612.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — PostgreSQL: 🎻 FASE 3 wiring COMPLETA — las 3 vías de escritura del
This commit is contained in:
Ember 2026-06-12 14:50:58 +00:00
parent 8d3099d8ef
commit 8f4a03dbc6

View file

@ -0,0 +1,31 @@
---
episode_id: "2e59ccbb-5ba6-49f0-8a08-ff1f06185065"
puente_flat: "DEPURA_fase-3-wiring-completa-las-3-vas-de-es_S20260612.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260612.PIPELINE_FIXES"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — PostgreSQL: 🎻 FASE 3 wiring COMPLETA — las 3 vías de escritura del ecosi"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-12T14:50:56.479344+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
# 🎻 FASE 3 wiring COMPLETA — las 3 vías de escritura del ecosistema EMBER hablan el contrato único (commit `453a1f5`, push 3/3)
## [R5.seccion1.T1] El corazón de "perfeccionar al máximo" — cerrado
| Invocador | Antes (la enfermedad) | Ahora (el contrato) | Verificación |
|---|---|---|---|
| **crisol F3** (3a) | embed+uuid4+PUT propio, payload `body`, triple-write con outbox | `MemoryWriter(stores=qdrant)`, outbox qdrant OFF | HIT@1 campana 0.7553 |
| **ember-mcp** `store_memory` (3b) | uuid4 + payload libre | `CanonicalEpisode`: id-sha + payload canónico + dedup | E2E MCP 3/3, HIT@1 0.7513 |
| **cliente** `push_to_server` (3c) | re-push de todo + SIGHUP-kill | sha-gate dedup + trigger detached | ciclo1 **30/31 filtrados**, cola→0 |
Con esto **H2 (triple-write), H3 (sin dedup PG), H5 (ciclo re-push), H7 (payloads divergentes) están todos cerrados**. La FASE 3c además mató el bug de fondo que inflaba el inbox: el `ssh` síncrono mataba el crisol por SIGHUP a los 300s (runs reales tardan 12-15 min), dejaba el inbox a medio procesar, y el siguiente turno re-empujaba el lote completo. El sha-gate filtró los 30 que ya estaban en PostgreSQL antes de tocar la red — exactamente lo que evita el ciclo. ## [R5.seccion2.I1] Honestidad de la verificación (RELOJERO triple capa)
- **Capa estructural:** `ast.parse` OK. - **Capa property:** invariante `_sha` cliente == `sha256_normalized` de memory_writer — PASS en 5 casos. Es la propiedad de la que depende todo el dedup cross-cliente-servidor. - **Capa E2E real:** 2 ciclos en vivo — ciclo 1 filtró 30/31 y disparó detached (`TRIGGERED`, no kill); ciclo 2 convergió la cola a **0** con el manifiesto borrado. - **Trust boundary señalado (no oculto):** crisol F0/F5 indexa el sha del body **crudo** (sin `strip`) mientras el sha-gate usa `strip`.