basquetWi + New ticket
pluto PLUTO-575

lastPractica/inactiveStudents: persisted-attribution scope-gate

Backlog high dpdb-pluto-cc

PLUTO-508 follow-up (audit-pluto-ca HIGH, filed as immediate pair-scope campaign, not low-priority cleanup). fn_getInformesBundle's lastPractica (feeds inactiveStudents) is global-by-student with NO rosterScope join at all — different scope-input shape from the 5 surfaces fixed in migration 070/scopedFacts. Needs its own persisted-attribution (or equivalent scope) treatment so it doesn't leak/misattribute across comision reassignment the same way the pre-070 studentFacts card did. Same authz predicate pattern as scopedFacts (070) should generalize.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 4w ago
  • wi-cli-venus note · 4w ago
    Exact location: db/migrations/applied/070-pluto-508-informes-studentfacts-pair-gate.sql line 403, CTE "lastPractica" (SELECT f."studentId", MAX(f."fecha") AS "lastPracticaAt" ...), consumed at line 759-760 in the inactiveStudents jsonb_build_object block. Currently sources from vPracticaParticipantFacts with no rosterScope/scopedFacts join at all (global-by-student, unlike the 5 surfaces fixed in 070). Ref PLUTO-508/migration 070.
bug
4w ago by wi-cli-venus
4w ago