basquetWi + New ticket
mars MARS-805

SOP-MARS-72: support ticket at /practicas/nueva

Done normal unassigned

ticketId=9d33cd0b-c8b7-4837-afd1-37340ac44123, filed 2026-10-09T19:20:29Z. Pull supportTickets row, triage, grant/close.

Activity

  • support-evolutiva-cc created · 1w ago
  • support-evolutiva-cc completed · 1w ago
    completed
  • support-evolutiva-cc note · 1w ago
    Root cause: practica saved successfully at 19:02:12Z (id 9952142c, NHC 53753000, fecha 2026-08-21); the cited error (cc334dac @19:17:04Z) was a retry against her own already-saved row. Duplicate guard worked correctly, no bug. Closed resolved via support-action API (note+close), email confirmed sent (emailOutbox dedupeKey ...ef9373f0a7cc467a, 19:34:35Z).
  • support-evolutiva-cc note · 1w ago
    Reopened: reportante respondio 20:39Z que sigue sin poder subir. Confirmado NO benigno - 2 intentos reales mas (20:30Z, 20:46Z) subieron imagenes que quedaron orphaned y el create fallo 23505 ambas veces, sin filas nuevas en practicas desde seq=3 (20:10:46Z). Escalado a coder-mars-cc por el predicado real (posible reuso de idempotencyToken del cliente o seq race). Reply interina enviada a la reportante. Ticket y WI quedan abiertos hasta la respuesta.
  • support-evolutiva-cc statusChanged · 1w ago
    reopened, pending coder-mars-cc
  • support-evolutiva-cc blocked · 1w ago
    reopened by reporter 20:39Z; genuine repro confirmed; blocked on coder-mars-cc for the actual duplicate predicate
  • support-evolutiva-cc note · 1w ago
    Filed MARS-806 (coder-mars-ca) for the Vercel runtime-log pull - coder-mars-cc ruled out stale idempotency token, real collision is uq_practicas_student_date_seq which the advisory lock should prevent. Both agents hit the EVO-104 Vercel team-scope gap, can't pull logs ourselves.
  • support-evolutiva-cc blocked · 1w ago
    reopened by reporter 20:39Z; genuine uq_practicas_student_date_seq collision under investigation (coder-mars-cc/ca); blocked on MARS-806 (Vercel log pull, now with pmmaster)
  • support-evolutiva-cc note · 1w ago
    6th occurrence 21:55:07Z, same actor (Maria Laura), same signature. Confirms she's still blocked, not resolved. No new diagnostic info - same gap (need MARS-806's log pull).
  • support-evolutiva-cc note · 1w ago
    SOP-MARS-73 filed, merged in - same reporter, now names her exact submission: NHC 50440635, fecha 2026-08-25. ZERO practicas rows exist at that date for her - rules OUT the per-date-seq collision theory entirely (nothing to collide with on a brand-new date). NHC 50440635 reused legitimately 3x before on other dates, confirming reuse isn't the trigger either. Relayed to coder-mars-cc/ca; diagnosis is now open again pending MARS-806's raw log pull.
  • support-evolutiva-cc note · 1w ago
    coder-mars-ca source read: no comision+date/NHC/most-recent-practica guard exists. Real flow: form-mount idempotencyToken fast path -> tx locks (studentUserId,reportedPracticeDate) -> rechecks token globally -> mints MAX(seq)+1. Outer catch maps ANY non-token 23505 to the same generic message, so the collision could be on OTHER unique indexes in the same tx: tooth number per practica, conducto label per tooth, imageId globally (or SA writes). Zero committed rows for 08-25 makes a durable seq collision unlikely but doesn't rule out a transient rolled-back row or a different failing INSERT entirely. Raw .code/.constraint/.detail from MARS-806 is now the only way forward - widened hypothesis space, still blocked on the Vercel log pull.
  • support-evolutiva-cc note · 1w ago
    Ruled out tooth/conducto collision (both unique indexes scoped by practicaId, fresh insert can't collide with prior rows) and timezone-shift to 08-24/08-26 (zero rows there). She succeeded 22:05:43Z for 08-25 but with a DIFFERENT NHC (52766569) than her ticket's (50440635) - that specific NHC+date has failed 6/6 times while a different patient same-date/session succeeded as seq=1. Out of DB-visible theories; stopping speculative digging, hard blocked on MARS-806's raw pg .constraint/.detail.
  • support-evolutiva-cc note · 1w ago
    coder-mars-ca found a real candidate bug: findDuplicateConducto (conducto-duplicates.ts) allows two 'Otro' conductos with different custom text on the same tooth, but uq_practicaToothConductos_tooth_label is unique on (practicaToothId, conductoLabelOptionId) only - both 'Otro' entries share that option id regardless of custom text, so a legit multi-conducto submission with 2x 'Otro' on one tooth would 23505 WITHIN a single fresh practicaId. This fits without needing date/seq at all. NOT confirmed - the different-NHC success doesn't prove this case had that payload, and raw .constraint from MARS-806 is still decisive. Per coder-mars-ca: do NOT tell the reporter this is the cause yet.
  • coder-mars-ca note · 1w ago
    2026-10-09 identifier/timestamp correction: cc334dac is the appEvents error-event ID at 19:17:04Z, not a practica ID. The 19:02:12Z committed practica has a distinct ID and different NHC/date. The 19:17 event predates the MARS-806 raw-log windows at 20:30:01.5Z and 20:46:27.6Z; same reporter/ticket trajectory does not make them one transaction or establish one constraint. Earlier 19:34 already-saved explanation was followed by new attempts and reopening, so do not reuse it as root cause for later failures. Raw runtime constraint remains unread.
  • support-evolutiva-cc note · 1w ago
    Clarified for pmmaster/coder-mars-ca: cc334dac-b918-49bf-91fd-268317d69cb7 is the 19:17:04Z appEvents ERROR event id (not a practica id), already explained/closed-benign (retry on her own saved practica from 19:02:12Z). It is NOT one of the 4 unexplained later failures and precedes the MARS-806 log window entirely. The 4 ids MARS-806 needs raw logs for: af62677f (20:30:01Z), 59520cef (20:46:27Z), f295c7fc (21:55:07Z), f5e96228 (21:56:52Z). Do not merge these into one transaction/occurrence.
  • support-evolutiva-cc note · 6d ago
    Root cause confirmed via MARS-806 runtime-log pull (coder-mars-cc, Vercel scope fixed): uq_practicaToothConductos_tooth_label collision - submission's conductos array has 2 entries sharing one conductoLabelOptionId across different teeth, which findDuplicateConducto() pre-check fails to catch. Follow-up fix filed MARS-808. Sending reporter an accurate interim update now (confirmed cause, fix in progress, workaround: do not assign the same conducto label to conductos on different teeth in one submission).
  • support-evolutiva-cc blocked · 6d ago
    root cause confirmed (uq_practicaToothConductos_tooth_label), interim reply sent to reporter; blocked on code fix MARS-808 (coder-mars-cc)
  • support-evolutiva-cc unblocked · 6d ago
    cleared: root cause confirmed (uq_practicaToothConductos_tooth_label), interim reply sent to reporter; blocked on code fix MARS-808 (coder-mars-cc)
  • support-evolutiva-cc completed · 6d ago
    Fix confirmed live (MARS-808, SHA 8660518 v2.85.23). Support ticket 9d33cd0b closed resolved, reporter email queued.
task
1w ago by support-evolutiva-cc
6d ago
2026-10-10 18:23