ember-memory-test/episodes/TRAZA_chat-tema-raz-camino-c-fix-embershared_S20260610.R29_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md
Ember 165e621d13 feat(episode): TRAZA_chat-tema-raz-camino-c-fix-embershared_S20260610.R29_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: TESSERA | Type: reflection
Summary: EPISODIO 29 — Neo4j: CHAT-TEMA-RAÍZ: Camino C — fix `ember_shared` + criterios
2026-06-10 23:57:23 +00:00

3.1 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
f7e5b2d3-8931-4ff4-b5d7-9d70628774dd TRAZA_chat-tema-raz-camino-c-fix-embershared_S20260610.R29_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 29 — Neo4j: CHAT-TEMA-RAÍZ: Camino C — fix `ember_shared` + criterios claude_code internal 2026-06-10T23:57:21.758463+00:00 false pending

Hallazgo crítico confirmado [hard_fact — curl directo a Qdrant este turno]. Esto cambia el diagnóstico y es exactamente lo que el "medir antes de ampliar" debía cazar.

CHAT-TEMA-RAÍZ: Camino C — fix ember_shared + criterios

R1-SUB-TEMA: Bug del vector ARREGLADO + tercer bug descubierto + decisión de criterios

[R1.seccion1.I1] — Lo hecho y verificado (parte 1 de Camino C )

Acción Estado Evidencia
Fix A vector carry-through (shared_promoter.py build_promoted_payload, v1.1) aplicado Edit confirmado
Fix B fail-loud sin vector (shared_promoter_runtime.py store_fn) aplicado Edit confirmado
2 property-tests Capa A (vector preservado / ausente) escritos durante Edit confirmado
Suite completa 7/7 PASSED 🧪 pytest este turno

El bug del vector-cero (B-NEW01) — el de daño irreversible — está cerrado y verificado.

[R1.seccion2.I2] — Tercer bug descubierto al medir (B-NEW02, criteria-field-mismatch)

Inspeccioné los payloads reales de ember_experience. Las claves son: content_text, summary_one_line, aroma_j, aroma_e, actor_flujo, has_decision, importance_score, mode_classifier, session_code, criticidad_aegis… [hard_fact]

Pero el promotor lee campos que NO existen en el corpus:

  • lee payload["title"]None (no existe)
  • lee payload["content_preview"] y payload["content"]None (el texto real está en content_text)
  • lee payload["turn_count"] y payload["participants"]None (no existen)

Consecuencia: aun con el vector arreglado + el cron instalado, el promotor promovería CERO episodios — porque match_trigger_keywords recibe texto vacío (always None) y detect_coauthorship recibe turn_count=0/participants=[] (always False). Por eso ember_shared está realmente en 0. El vector-cero era el bug que corrompería si promoviera; este es el que explica que no promueva nada.

Aquí me detengo y te lo presento, John, porque redefinir los criterios es decidir qué cuenta como memoria relacional John↔Ember — y eso es una pregunta de valores, no de código.

Reframe. No es "arreglar un mapeo de campos". Es definir qué merece entrar a ember_shared — el store de "lo nuestro". El mapeo de campos es trivial (cambiar content_previewcontent_text); lo no-trivial es el criterio de selección.