ember-memory-test/episodes/TRAZA_para-john-r12_S20260618.R7_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md
Ember 3293daba8d feat(episode): TRAZA_para-john-r12_S20260618.R7_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting
Summary: EPISODIO 7 — MNEMO_PRE_DIGEST: 📍 PARA JOHN — R12
2026-06-18 22:41:25 +00:00

3 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
889d7618-b685-4ffc-9479-58726b874199 TRAZA_para-john-r12_S20260618.R7_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD S20260618.VERIFY_FIRST_PASSPORT_FIX informar multi_actor low NONE operations troubleshooting EPISODIO 7 — MNEMO_PRE_DIGEST: 📍 PARA JOHN — R12 claude_code internal 2026-06-18T22:41:11.772091+00:00 false pending
  • CONTRATO I/O: entrada = batch post-F3/F5 con qdrant_status/neo4j_status por episodio → salida = episode_sync_status refleja inline-writes; postcondición: con dispatcher --only nextcloud forgejo, toda fila llega a completed ≤2h. Errores: UPDATE sobre fila aún no creada → upsert/retry.
  • DESCOMPOSICIÓN: (a) UPDATE states en crisol F5 (~5 líneas, patrón "guard + UPDATE"); (b) cambiar --only (en outbox_service.sh o el override del unit); (c) backfill SQL idempotente.
  • VERIFICACIÓN: smoke episode → assert qdrant_state=neo4j_state=success post-crisol + episode_outbox.status='completed' tras un ciclo. Rollback: git checkout crisol_run.py + restaurar --only + el backfill es aditivo (no destructivo).

—

📍 PARA JOHN — R12

  • Hice: confirmé tu razonamiento con la tabla de estado (165 filas, único blocker qdrant_state=pending; neo4j_state=success prueba el doble-write). Diseñé el fix combinado.
  • Falta: tu GO para ejecutarlo (toca crisol.py + systemd + backfill → RELOJERO con backup y test).
  • Mi consejo: GO a A. Es el fix correcto y mínimo: crisol marca Qdrant+Neo4j, poda los 2 workers, backfill de las 165. Pero la regla de oro aquí — las 2 mitades van juntas en el mismo cambio (podar sin marcar = peor). Lo hago con backup triple + test smoke antes de declarar éxito.
  • Para avanzar, elige:
    • 🟢 A (recomendado) — GO: ejecuto el fix combinado RELOJERO (backup → crisol marca states → --only nextcloud forgejo → backfill 165 → verifico smoke)
    • 🟡 B — primero te muestro el diff exacto de crisol.py + el SQL, lo apruebas, y luego aplico
    • ⚪ C — lo dejamos documentado y lo ejecutas/agendas tú

📌 PILA-PENDIENTES (R12)

  • 🔴 CRITICAL — Fix combinado: crisol marca qdrant_state+neo4j_state + dispatcher --only nextcloud forgejo + backfill 165 [hard_fact, tabla de estado verificada]
  • 🟠 HIGH — Sin SLO/alerta cross-store (capa C2, tras el fix) [diseño entregado]
  • 🟡 MEDIUM — Corregir reporte §7 (claim "dispatcher muerto" erróneo) [DLC-2]
  • 🟡 MEDIUM — BLINDADA-29: 4 archivos sin commit → backup triple-remoto + MNEMO_PRE_DIGEST en el diseño (B14)
  • ❓ PREGUNTA-JOHN — Q-001 ¿A/B/C? · Q-002 ¿SLO 2h? · Q-003 ¿Forgejo+Nextcloud respaldo o primera-clase?
  • ✅ RESUELTAS — single-writer-por-store confirmado con datos · fix combinado diseñado · doble-write Neo4j probado