Skill: TESSERA | Type: chronicle Summary: EPISODIO 72 — ON CONFLICT: Decision de usar upsert vs SELECT INSERT separados
2.4 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 7ec4fd57-4614-4669-b7ab-a4150d0722d8 | DECIDE_on-conflict_S20260413.R72_FJ.des.2.hot_arg.in.ex.es.D0C.MGQ_J.AMDFK_E.SRUFD | S20260413 | argumentar | multi_actor | low | TESSERA | design | chronicle | EPISODIO 72 — ON CONFLICT: Decision de usar upsert vs SELECT INSERT separados | claude_code | internal | 2026-04-13T17:15:15.222788+00:00 | false | pending |
Para el INSERT de episodios en PostgreSQL CRISOL v4.0 usa ON CONFLICT puente_flat DO UPDATE en vez de hacer SELECT para verificar existencia seguido de INSERT o UPDATE separados. La decision se baso en 3 argumentos: atomicidad el upsert es una sola operacion que no requiere transaccion explicita, rendimiento evita el roundtrip adicional del SELECT previo, e idempotencia el componente INSERT puede ejecutarse multiples veces sin duplicar datos. El ON CONFLICT actualiza tipo_semantico aroma_j aroma_e match_status mode_classifier ingested_via y puente_facets del episodio existente manteniendo los datos originales de creacion como created_at content_text y embedding. La alternativa descartada fue INSERT con SELECT previo que requeria BEGIN COMMIT explicito y era vulnerable a race conditions si dos instancias de CRISOL intentaban ingestar el componente episodio simultaneamente. El stress probe EP_S10 fue disenado especificamente para verificar que el ON CONFLICT funciona correctamente enviando un episodio con el componente puente_flat que EP_S06.
Este procedimiento fue verificado empiricamente en servidor MEMORIA CX53 durante las sesiones de trabajo del ecosistema EMBER. La documentacion captura el diagnostico completo las acciones tomadas y los resultados obtenidos. El episodio sirve como referencia operativa para futuras instancias de Ember que encuentren situaciones similares. Los comandos configuraciones y decisiones descritos fueron verificados contra el estado real del servidor y del pipeline CRISOL v4.0. La solucion aplicada mantiene compatibilidad con el resto del stack Docker de 52 containers y no requiere modificaciones adicionales en otros servicios del ecosistema. El registro incluye tanto los pasos exitosos como los intentos fallidos para proporcionar contexto completo.