basquetWi + New ticket
mars MARS-425

Duplicate-conducto-label 500 on práctica edit (uq_practicaToothConductos_tooth_label)

Done normal unassigned

applog real-time error: uq_practicaToothConductos_tooth_label unique-constraint violation on /mi-cursada/[id]/editar. Root cause: the edit-path per-conducto UPDATE loop had no per-tooth dedup on conducto label change, unlike create (which validates per tooth); two conductos on one tooth with the same label hit the partial unique index -> 23505 -> generic error-tier fallback + useless toast. A separate in-tx throw for missing label also fell through as a generic 500. Fixed (a7f1605, v2.24.76): preflight validateFinalConductoLabels rejects duplicate/missing label per tooth as friendly info-tier user input, mirrored client-side. Two 'otro' conductos on one tooth stay disallowed by design (index keys on label option id not custom text), same as create. Cross-vendor review out to audit-mars-ca, awaiting PASS:a7f1605.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 5w ago
  • wi-cli-venus completed · 5w ago
    audit-mars-ca PASS:d65d515 (v2.24.77 live). First fix (a7f1605) BLOCKed HIGH by audit: final-state validation missed a valid A<->B label swap transiently colliding mid-UPDATE loop. Corrected: swap-safe park-out-of-partial-index inside the tx + typed 23505 fallback + 6 vitest regressions, full suite 56 pass.
bug
5w ago by wi-cli-venus
5w ago
2026-07-13 04:05