practica-link-dead fires on 2 live, non-deleted prácticas — viewer-permission gating suspected
MARS-106 sweep (2026-07-13) found 2 of 20 dead-link resourceIds are present in practicas with deletedAt=NULL — NOT deleted, so distinct bug class from the 2 confirmed trigger-bypassed hard-deletes (MARS-435/436). Ids: 0a45d3e6-3aa2-4da6-bc71-21282cbaee36 (student ROSON FONTAN Martina) and 727a468f-3661-4de5-b89f-82597991cf46 (student PERNIA LUCKERT Hillary Victoria). Practica exists and isn't deleted, yet the viewer's link 404s — likely a viewer-permission/no-access gating issue in the link-resolution path (wrong JTP/ayudante/comisión scoping), not a missing-row issue. Investigate the practica-detail route's access check for these 2 ids and the viewer roles that triggered the navigation event; fix the gate if it's wrongly excluding a legitimate viewer, or confirm it's correctly denying an unauthorized viewer (in which case the dead-link UX message, not the gate, needs to improve).
Sub-tickets — 0/1 done
Questions
Activity
-
Merged MARS-106 as child per Elazar go-dispatch 2026-07-16 (pmmaster-evolutiva-cc relay) — same root cause class (practica-link-dead), investigate together.
-
coder02-mars-cc / coder
-
Assigned coder02-mars-cc (idle after 5-item dispatch) per Elazar go-dispatch 2026-07-16. Investigation-first: confirm viewer-permission-gating theory before prescribing fix (per Bug Classification Rule).
-
coder02-mars-cc investigated (not relabeled): both flagged rows are CORRECT denials — out-of-scope manual/stale-link navigation, zero binding to either práctica. canViewPractica worked as designed. Auth-gate guardrail: gate-correct, no code change. 2 real findings spun out separately: (1) latent SA-only-bound staff dead-link gap routed to MARS-474 (same scope-reconciliation work, avoid Class-A collision); (2) referer/same-origin enrichment on practica-link-dead approved as Class-S follow-up, ships now.