feat(episode): TRAZA_la-lnea-divisoria-dos-preguntas-deciden_S20260618.R4_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 4 — MNEMO Pipeline: La línea divisoria: dos preguntas deciden si una es
This commit is contained in:
Ember 2026-06-18 21:55:58 +00:00
parent 307a15192f
commit c81c5cc3a0

View file

@ -0,0 +1,37 @@
---
episode_id: "ab9f9358-8005-496e-a489-5af76d7c04c8"
puente_flat: "TRAZA_la-lnea-divisoria-dos-preguntas-deciden_S20260618.R4_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260618.VERIFY_FIRST_PASSPORT_FIX"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 4 — MNEMO Pipeline: La línea divisoria: dos preguntas deciden si una escritura v"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-18T21:55:49.099366+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Confirmado en el código, John — y la respuesta es: **sí, es diferente A PROPÓSITO, y la razón es buena.** No es accidente. El dispatcher mismo cita su diseño: *"Design: outbox-pattern-design.md §3.2"*. Es un patrón de ingeniería con nombre — el **Transactional Outbox**. Te explico por qué, con lo que acabo de leer.
## La línea divisoria: dos preguntas deciden si una escritura va inline o por cola
| Criterio | Qdrant · PostgreSQL · Neo4j (inline) | Forgejo · Nextcloud (outbox) |
|---|---|---|
| **¿El retrieval lo lee?** | **SÍ** — son la fuente del retrieval | **NO** — son archivo/respaldo |
| **¿Qué operación es escribir?** | `upsert` local en DB (127.0.0.1 / `docker exec`), milisegundos, idempotente | Forgejo = **git commit + push** (red, **rate-limit 1 push / 5 s**) · Nextcloud = **WebDAV PUT** + crear directorios (red) |
| **¿Qué tan frágil?** | Local, transaccional, confiable | Remoto: auth, red, disco, conflictos de merge |
| **Consistencia requerida** | Inmediata (corrección del retrieval) | Eventual (es respaldo, puede ir atrasado) |
**Evidencia del código (verificada ahora):**
- `forgejo_worker.py`: *"commitea episodios al repo ember-memory en Forgejo via git"* + `PUSH_RATE_LIMIT_SECONDS = 5`.
- `nextcloud_worker.py`: *"renderiza episodios como Markdown en Nextcloud via WebDAV"*`PUT` a `/EMBER/episodes/{año}/W{semana}/{puente_flat}.md`.
- `crisol_run.py`: solo F3 (Qdrant) + F5 (PostgreSQL + Neo4j). Nada más.
## Por qué NO conviene "que escriba los 2 de igual manera inline"
Tu instinto es razonable ("ya hace 3, que haga 5"), pero meter Forgejo+Nextcloud inline **acoplaría el núcleo a servicios lentos y remotos**: