feat(episode): RESUELVE_postgresql-apostrophe-insert-failure_S20260413.R6_FJ+AG.ops.4.hot_inf.pr.cc.en.DRC.HNQ_J.PMDFK_E.CGNFD
Skill: NONE | Type: reflection Summary: EPISODIO S10 — POSTGRESQL: intentional duplicate PUENTE to test ON CONFLICT DO U
This commit is contained in:
parent
f5dc2b375b
commit
83cd9eeee8
1 changed files with 25 additions and 0 deletions
|
|
@ -0,0 +1,25 @@
|
||||||
|
---
|
||||||
|
episode_id: "46a94837-22b2-4a85-8217-fb81f28ba89f"
|
||||||
|
puente_flat: "RESUELVE_postgresql-apostrophe-insert-failure_S20260413.R6_FJ+AG.ops.4.hot_inf.pr.cc.en.DRC.HNQ_J.PMDFK_E.CGNFD"
|
||||||
|
session_code: "S20260413"
|
||||||
|
acto_dialogico: "informar"
|
||||||
|
actor_flujo: "ember_to_user"
|
||||||
|
criticidad_aegis: "high"
|
||||||
|
skill_dominante: "NONE"
|
||||||
|
fase_proyecto: "operations"
|
||||||
|
tipo_semantico: "reflection"
|
||||||
|
summary_one_line: "EPISODIO S10 — POSTGRESQL: intentional duplicate PUENTE to test ON CONFLICT DO UPDATE"
|
||||||
|
source_type: "chat_ember"
|
||||||
|
trust_boundary: "private"
|
||||||
|
created_at: "2026-04-13T12:55:30.404285+00:00"
|
||||||
|
relectura_tagged: false
|
||||||
|
forgejo_commit_sha: "pending"
|
||||||
|
---
|
||||||
|
|
||||||
|
This episode is an intentional duplicate of EP_S06. It shares the same tipo_semantico (troubleshooting), actor_flujo (e2u), titulo_semantico (postgresql-apostrophe-insert-failure), session date, and respuesta_num as EP_S06. This means gen_puente will produce an identical PUENTE string for both episodes. The purpose is to stress-test the F5 store phase PostgreSQL ON CONFLICT behavior.
|
||||||
|
|
||||||
|
When CRISOL F5 attempts to INSERT this episode into the episodes table, the puente_flat unique constraint should detect the collision. The ON CONFLICT (puente_flat) DO UPDATE clause should then execute an UPDATE instead of failing with a duplicate key violation. The UPDATE should overwrite the existing row with the new episode content while preserving the original created_at timestamp.
|
||||||
|
|
||||||
|
This tests several critical behaviors. First, the puente_flat computation: does crisol_run.py correctly strip underscores from the PUENTE string to create the flat deduplication key? If the stripping is inconsistent between INSERT and conflict detection, the duplicate will slip through as a new row. Second, the UPDATE behavior: which fields are overwritten and which are preserved? The spec says created_at is preserved, updated_at is set to NOW(), and all content fields are overwritten. Third, the Qdrant side: does F5a detect the existing point_id and upsert the vector, or does it create a second point? The point_id should be deterministic (derived from puente_flat hash) so that duplicate PUENTEs map to the same Qdrant point.
|
||||||
|
|
||||||
|
Expected outcome: EP_S10 overwrites EP_S06 in PostgreSQL (same puente_flat). The Qdrant point is updated in place. The Neo4j node is merged (MERGE is idempotent). No duplicate records exist in any of the three stores after both episodes are ingested sequentially.
|
||||||
Loading…
Reference in a new issue