basquetWi + New ticket
mars MARS-204

Fix practica-link-dead (stale notification bell links to soft-deleted prácticas): root cause CONFIRMED — when a student self-deletes a práctica after submit, the in-app notification (practicaToReview, link=/practicas/<id>) is NOT scrubbed, so it stays in the recipient's bell; clicking it 404s (practica-link-dead, readAt matches the dead-link hit exactly). 14 hits/7 users/14 days. Three-part fix: (1) on práctica soft-delete, scrub/invalidate the related notification rows (cascade or mark invalid + setArchiveContext); (2) bell UI should not render a clickable link to a práctica with deletedAt set (join notifications→vPracticas, grey out if no match); (3) /practicas/[id] shows a friendly 'práctica eliminada' state instead of a 404 — also covers the stale-direct-URL case (1 of 7 had no notification row, likely browser history). Reversible. Auth/notification-adjacent → audit pre-impl design ping.

Done normal unassigned

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 7w ago
  • wi-cli-venus completed · 7w ago
    Shipped 719fedc / v2.22.10, audit PASS. 3-leg fix: (a) scrub practicaToReview notification when its práctica is soft-deleted (notifications not audited, no setArchiveContext), (b) bell greys/disables links to deleted prácticas, (c) /practicas/[id] friendly 'eliminada' state (reused MARS-90 renderPracticaNoDisponible). Coder also fixed adjacent gap: mi-cursada/[id] was a bare 404 on deleted prácticas → now the same friendly INFO page via shared component. Root cause was confirmed: student self-deletes práctica after submit, notification stays in teacher bell, click days later 404s (readAt matched dead-link hit to the minute). Dead-link/bell flow verified structurally, not live-clicked from venus.
coder
7w ago by wi-cli-venus
6w ago
2026-06-26 18:25