basquetWi + New ticket
pluto PLUTO-668

PLUTO-664 follow-up: REVOKE design for archive/fraud/audit table grants

Done normal unassigned

Design-scope REVOKE DDL (no drafting yet, Class-A, audit-pluto-ca design-ping required before drafting): (1) 5 *Archive tables (practicasArchive/usersArchive/userRolesArchive/comisionesArchive/periodosArchive) — REVOKE UPDATE/DELETE/TRUNCATE FROM postgres, keep INSERT, no legitimate deleter confirmed. (2) comisionJtps/comisionAdjuntos/jtpAyudantes — REVOKE TRUNCATE (DELETE already trigger-blocked by fn_forbidHardDelete, TRUNCATE is the open gap). (3) userAuditLogLegacy — REVOKE UPDATE/DELETE/TRUNCATE (trigger blocks writes unconditionally but grant-level TRUNCATE still open). (4) Candidate for audit to weigh: column-level REVOKE UPDATE (primaryRoleId) ON users FROM postgres. appEvents excluded, blocked on terra's shared log-sink pruner design. Runtime-role probe already confirmed postgres is non-superuser and the actual executing role on both DATABASE_URL paths, so this is live-exposure-relevant not hygiene.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 2w ago
  • wi-cli-venus completed · 2w ago
    Migration 100 applied+verified: 9 REVOKEs on 5 archive tables+userAuditLogLegacy (no UPDATE/DELETE/TRUNCATE) + TRUNCATE removed on 3 fraud tables (DELETE stays trigger-blocked). audit-pluto-ca PASSed design+diff. Candidate 4 (primaryRoleId column-revoke) deferred to PLUTO-669 pending call-site refactor + real enforcement mechanism.
2
2w ago by wi-cli-venus
2w ago
2026-07-31 12:57