docs: record M8 step 2 (data safety) and plan self-service account deletion #391
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/m8-data-safety-built"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two things for M8 (
android/PLAN.md). No code.1. Step 2, data safety, built
Built as
runicgateway.com#44. Everything the app sends is declared collected, not shared, encrypted in transit and required, after an audit ofdata/api/onedge.2. Account deletion, planned:
website/ACCOUNT_DELETION.md(new)The app starts accounts: the sign-up link, and in-app game-account creation. So Play requires a deletion path both in the app and at a web address, and the platform had none. The org lead chose self-service deletion, ahead of report/block/hide (AD1-AD3).
DELETE /api/v1/auth/me/account. It checks the password, plus a 2FA code if 2FA is on, and the typed username. It refuses the last admin and the demo accounts.users, those for credentials and sessions cascade and authored content detaches. Sessions die at once, becauserequireAuthre-reads the user.displayAuthor(row, viewer)helper decides what each viewer seesreserved_usernames)MODULE_API1.20.0,api.onUserDeleting. It runs before the delete, has a time limit, and can't stop the deletion.links.unlinkOwnedfor each Steam id.DELETE /link/{account}for each game account, as the staff unlink does.shard_pending_unlinksand is retried on reconnect./delete-account/page as Play's URL.Knock-on edits
M8's order is now: push → data safety → account deletion → report/block/hide → cutover.
USER_SAFETY.md'sreportTargetsmoves toMODULE_API1.21.0.The README lists the new plan.
AI-assisted (Claude Code)
🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
docs(android): record M8 step 2, the data-safety auditto docs: record M8 step 2 (data safety) and plan self-service account deletionA cascade is not an unlink. For UO the link lives on the shard (the site's shard_account_links is a mirror), so dropping the mirror alone would leave the shard attributing the game account to a deleted user. - AD10: the hook is onUserDeleting and runs before the delete; each module calls its own unlink for every link (Rust: links.unlinkOwned; UO: the sidecar's DELETE /link/{account}, as the staff unlink does). - AD11: an unlink that can't finish never holds up the deletion. A shard that is offline queues into shard_pending_unlinks, retried on reconnect. A protected staff account (403) is listed for admins as "still linked on the shard". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY