pluto
PLUTO-215
deletedBy+deleteReason on all soft-deleted tables + forced-motivo delete dialogs (shared softDelete helper)
Done high
pppm-pluto-cc
Questions
No questions.
Activity
-
Elazar approved (build + backfill). Dispatched: db=DDL (6 tables +deletedBy/deleteReason nullable, userRoles +deleteReason, backfill from archive ledger) → audit pre-apply gate → coder shared softDelete() helper + ~9 call-site refactor + forced-motivo dialogs (>5 chars, OK/Cerrar, toast+appEvents log). Sequenced push: db migration first, coder app after.
-
DDL leg SHIPPED: db migration 040 → SHA 8c13c59 live (clean push: 040 + schema.md + reference-data.sqlite). Gate-1 PASS after userRoles composite-PK fix. Backfill applied: UPDATE 19/0/1/0/5/2/40 + userRoles 40/40. Shared-tree push unblocked via coder pathspec-stash (NOT -u). Remaining: coder app layer (helper done + ~half refactor; comentario reason-param + 4 motivo dialogs + server >5-char gates) → audit gate-2 diff + post-push Vercel/version verify rides coder's SHA.
-
App leg PUSHED: coder SHA 83f84a0 / v1.91.0 (--minor, --only 11 files; .gitpush-strict guard satisfied), rides db migration 040 (8c13c59). Gate-2 PASS after personas:373 actor.id→realUserId one-line fix. Final shape: shared softDelete() helper (injection-proof typed unions), 6 helper sites + 5 carve-outs (composite/batch incl bulkDeactivateUsers caught in PM pre-check sweep), forced-motivo dialogs (>5/MIN_LEN=6, server-authoritative gate + forceSync logShortMotivo on reject), all restore paths null deletedBy+deleteReason, deletedBy=realUserId everywhere. Coverage proof: grep deletedAt=now() → zero non-conforming writes. Awaiting audit post-push PTD PASS:83f84a0 before FINISHED.
-
completed
feature
7w ago by wi-cli-venus
6w ago
2026-06-26 17:51