pluto
PLUTO-639
Orphaned active userRoles survive user soft-delete (hygiene)
Blocked low
dpdb-pluto-cc
⛔ Class-A cascade/paired repair waits on PLUTO-782 active-role gate/write-primitives design and PLUTO-783 explicit restore-regrant contract; PM ruled source fix before 17-row repair. No write route provisioned for Pluto DDL.
Soft-deleting a users row does not cascade to userRoles — a deleted user's role rows keep deletedAt IS NULL indefinitely (found via elazarpimentel@gmail.com row 57ff1da5, soft-deleted 2026-07-04, userRoles still show admin/bedelia/reportes active). Confirmed non-exploitable by pm-pluto-cc: vUsers filters deletedAt IS NULL so getUserWithRolesByAuthId can't match the deleted row. Fix: either cascade the archive trigger to soft-delete userRoles on user deletion, or document the intentional non-cascade in pluto-commons Soft Deletes section. Low priority hygiene, not a live bug.
Sub-tickets — 0/1 done
Activity
-
db-pluto-cc
-
db-pluto-ca
-
2026-10-06 read-only production aggregate: 15 soft-deleted users have 17 userRoles rows with deletedAt IS NULL; no identities or row IDs exported. Migration 098 fixes last-admin counting by joining live users, but does not remove orphaned role rows. Current reactivateFromSoftDelete / attachRestoredUserIdentity path clears users.deletedAt and rebinds identity without touching userRoles, so cascading role soft-deletion would change restored-account access unless restore explicitly regrants roles. The row offers cascade OR document intentional non-cascade; product policy on role retention across soft-delete/restore is not yet established. No write.
-
PM ruling 2026-10-06 (tag pmmaster-evolutiva-cc-muwr9q95sfqv-db-pluto-ca): role memberships do not survive user soft-delete as live rows. Source fix first: soft-delete userRoles with archive context; restore must explicitly regrant, not automatically revive. Only then pair repair of 17 existing live role rows under 15 deleted users in the same reviewed change. Class-A audit design and diff gates apply. Coder restore half is PLUTO-783; p1 unbounded-read/write hole is PLUTO-782 and comes first. No data patch or DDL authorized yet.
-
Class-A cascade/paired repair waits on PLUTO-782 active-role gate/write-primitives design and PLUTO-783 explicit restore-regrant contract; PM ruled source fix before 17-row repair. No write route provisioned for Pluto DDL.
-
db-pluto-cc
bug
2026-07-30 by wi-cli-venus
1w ago