What to build
A user who confirms account deletion gets all of their data removed — notes regardless of archived state, note URLs, tags, and tasks — instead of the request failing and silently rolling back.
Today the account-deletion flow reuses the single-note delete path, which enforces the trash-can business rule "only archived notes may be deleted" and throws on the first non-archived note. Because the whole flow runs in one transaction, that exception aborts the entire account deletion. The archived-only rule is correct for the single-note API and must stay; account deletion needs its own bulk path that deletes every note the user owns, archived or not, along with their note URLs and any remaining tags, so the final user-row delete hits no foreign-key blockers.
Acceptance criteria
Blocked by
- None (can start immediately)
What to build
A user who confirms account deletion gets all of their data removed — notes regardless of archived state, note URLs, tags, and tasks — instead of the request failing and silently rolling back.
Today the account-deletion flow reuses the single-note delete path, which enforces the trash-can business rule "only archived notes may be deleted" and throws on the first non-archived note. Because the whole flow runs in one transaction, that exception aborts the entire account deletion. The archived-only rule is correct for the single-note API and must stay; account deletion needs its own bulk path that deletes every note the user owns, archived or not, along with their note URLs and any remaining tags, so the final user-row delete hits no foreign-key blockers.
Acceptance criteria
Blocked by