feat(episode): TRAZA_fase-3b-cerrada-los-dos-escritores-qdr_S20260611.R17_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: FORJA | Type: chronicle
Summary: EPISODIO 17 — ember-mcp: ✅ FASE 3b CERRADA — los DOS escritores Qdrant del ecosi
This commit is contained in:
Ember 2026-06-12 13:22:31 +00:00
parent cd6a200749
commit cb232c4c7c

View file

@ -0,0 +1,51 @@
---
episode_id: "96b5cc06-7941-42c5-985b-8e71fe0eeb12"
puente_flat: "TRAZA_fase-3b-cerrada-los-dos-escritores-qdr_S20260611.R17_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260611.GRAFO_HISTORIA_HIBRIDO"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "FORJA"
fase_proyecto: "operations"
tipo_semantico: "chronicle"
summary_one_line: "EPISODIO 17 — ember-mcp: ✅ FASE 3b CERRADA — los DOS escritores Qdrant del ecosistema"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-12T13:22:24.351734+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
# ✅ FASE 3b CERRADA — los DOS escritores Qdrant del ecosistema ya hablan el contrato único (commit `740d62a`, push 3/3)
## [R2.seccion1.I1] Checkpoint de la misión FORMATEO CANÓNICO
| Fase | Estado | Evidencia falsable |
|---|---|---|
| FASE 1 pre-flight | ✅ | 4/4 checks |
| FASE 2 formateo 3 stores | ✅ | run 3 `FAIL=0`, batería 4/4, LEXICON 542 intacto |
| FASE 4.2 HIT@1 trazador | ✅ | faro 0.7315 · campana 0.7553 · violín 0.7513 — tres sondas independientes >0.7 |
| **FASE 3a crisol F3** | ✅ | escritor único + outbox qdrant OFF + payload canónico 7/7 |
| **FASE 3b ember-mcp** | ✅ **hoy** | E2E MCP 3/3: `stored` id-sha visible → `dedup` → búsqueda #1 0.7513 |
| FASE 3c cliente | 🟠 pendiente | `push_to_server.py` (dedup sha pre-SCP + trigger detached) |
| FASE 5 vectores | 🟡 | varios ya cayeron de rebote (1,2,6,7,9 cerrados); quedan ~9 + #16/#17 nuevos |
## [R2.seccion2.P1] Lo aprendido del deploy (ya corregido en el doc)
El container ember-mcp corre **rootfs read-only** y su compose ejecuta el `server.py` **del bind del host** — `/app` es un fósil de imagen. Mi primer movimiento ("sincronizar" host←container) pisó el archivo vivo con ese fósil; el backup automático me dejó restaurar y re-aplicar la cirugía sobre la base correcta en minutos. El runbook "docker cp quick deploy" del INFRA_MANIFEST quedó documentado como obsoleto: **deploy real = editar host + `docker restart`**. Tres invariantes ahora protegen cada escritura del mcp: id determinista por sha (I-MW4), dedup pre-embed (I-MW3) y modelo por punto (I-MW2).
📄 Entregado: [RESULTADOS_FORMATEO_CANONICO_FASE2_FASE4_S20260612.md](docs/RESULTADOS_FORMATEO_CANONICO_FASE2_FASE4_S20260612.md) (sec. 6 nueva) + [tmp_3b_mcp_wiring_edit.py](scripts/tmp_3b_mcp_wiring_edit.py) (registro auditable).
**Con tu "continúa":** FASE 3c — el último invocador sin contrato (`push_to_server.py`, cliente: dedup sha contra PG antes del SCP + trigger crisol detached que mata el ciclo re-push H5) + drenar los 26 payloads LOOP_WRITE por el `store_memory` nuevo (ahora es seguro: dedup canónico en ambas vías).
📌 **PILA-PENDIENTES (R2):** 🟠 3c push_to_server (claim hooks-y-state) · 🟠 drain 26 LOOP_WRITE vía store_memory contractual · 🟡 vectores FASE 5 restantes (+#16 doble supervisión, +#17 puntos mixed-shape 03:07-03:34Z) · 🟡 monitoreo 48h + 4 vías MD-5 · ⚪ quarantine inbox (decisión John pendiente) · ⚪ rotar LITELLM master key leaked
📁 **BITÁCORA S20260612.FORMATEO_CANONICO_MNEMO.R2:**
- ⚡ BASH set_instance_tag + 🧪 TEST_PRE ast editor 3b → OK (exit-4 previo era quoting del entorno)
- ⚡ SFTP upload tmp_3b_mcp_wiring_edit.py → servidor MEMORIA
- ⚡ SSH editor → "EDIT 3B OK" + py_compile OK; docker cp **bloqueado rootfs read-only**
- 🔍 SSH md5 host↔/app + compose + sys.path vivo → descubierto: command ejecuta server.py del bind
- ⚡ SSH restore server.py.bak.host_may3 → re-cirugía → py_compile OK → docker restart → uvicorn up
- ⚡ MCP ember_authenticate + store_memory ×2 (stored→dedup) + search_memories (#1 0.7513)
- ✏️ EDIT docs/RESULTADOS_…S20260612.md → sec. 6 FASE 3b
- ⚡ BASH commit 740d62a + push origin/forgejo/sriyantra 3/3