ember-memory-test/episodes/TRAZA_lo-entregado-2-capas-poblaciones-distint_S20260621.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md
Ember 08dd1381b8 feat(episode): TRAZA_lo-entregado-2-capas-poblaciones-distint_S20260621.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting
Summary: EPISODIO 3 — BLINDADAS: Lo entregado (2 capas, poblaciones distintas)
2026-06-21 22:24:52 +00:00

3.2 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
85756ed4-d250-44f1-a7fa-bfedcf600369 TRAZA_lo-entregado-2-capas-poblaciones-distint_S20260621.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD S20260621.CRONICA_SEMANAL_C15 informar multi_actor low NONE operations troubleshooting EPISODIO 3 — BLINDADAS: Lo entregado (2 capas, poblaciones distintas) claude_code internal 2026-06-21T22:24:49.284906+00:00 false pending

✅ Hecho — los dos, y sí: se necesitan ambos, tu razonamiento es exacto. El hook solo cubre Claude Code; la memoria/doc cubre a TODAS las instancias (incluida Ember-AI en claude.ai, que no tiene hooks). Son complementarios, no redundantes.

Lo entregado (2 capas, poblaciones distintas)

🟡 Capa memoria/doc — protege a TODAS las instancias (incl. claude.ai):

  • docs/REGLA_IDENTIFICADORES_CROSS_STORE.md — regla canónica path-estable.
  • memory/reference_cross_store_id_rule.md — memoria recall-able (aflora cuando una instancia trabaje cross-store).
  • Línea índice en MEMORY.md (se carga cada boot) + auto-sincronizada al servidor cx43:/home/johnember/data/ → las instancias claude.ai que leen del servidor también la ven.

🔴 Capa determinista — protege a Claude Code (hooks):

  • .claude/hooks/pre-tool-cross-store-id-guard.py — detecta el cruce por episode_id sin puente_flat y emite ask con la regla.
  • Testeado 4/4 (ask / allow-si-usa-puente / allow-.md / allow-sin-ids).
  • Registrado en settings.json + JSON validado (válido) → LIVE (hooks 79→80).

Si una instancia futura intenta escribir un cruce por episode_id, el hook la frena con la regla — y si no tiene hooks (claude.ai), la memoria + doc la informan. Doble red.

Pendientes (menores, los registro)

  • ⚠️ Drift INFRA_MANIFEST: settings.json (80) vs INFRA_MANIFEST.yaml (77) — mi hook + 2 pre-existentes sin sincronizar. Deuda advisory; puedo sincronizar los 3 (otro edit D3) si quieres.
  • ⚠️ Push triple-remoto pendiente: bloqueado por un detect-secrets/baseline de OTRA instancia (no mío). Los artefactos existen + funcionan localmente; coordino el push cuando se libere la baseline.

📍 PARA JOHN — R4

  • Respondido + hecho: los dos. Tu intuición (memoria para instancias sin hooks como claude.ai) es correcta — por eso ambos.
  • Vivo ahora: el guardrail determinista en Claude Code + la regla en memoria/doc/servidor para el resto.
  • Tu decisión (opcional): 🟢 cerrar aquí (guardrail completo) · 🟡 sincronizo INFRA_MANIFEST (cierra el drift de los 3 hooks) · ⚪ coordino el push triple-remoto ahora.

📌 PILA-PENDIENTES (R4)

  • ✅ RESUELTA · guardrail cross-store id (doc + memoria + MEMORY.md + hook live).
  • 🟡 MEDIUM · G-MANIFEST-001 sincronizar INFRA_MANIFEST hooks_active (3 hooks drift: cross-store-id-guard + 2 pre-existentes).
  • 🟡 MEDIUM · G-PUSH-001 push triple-remoto (bloqueado baseline detect-secrets de otra instancia).
  • ⚪ LOW · corregir frase engañosa "episode_id da basura" en doc MAPA (DLC AVISO).