--- type: User Story title: Validate Minecraft accounts description: Java Edition usernames resolve to canonical Mojang identities with controlled override behavior. tags: [player, minecraft, mojang, identity] timestamp: 2026-08-01T18:43:58Z story_id: US-004 status: verified --- # User Story As a player, I want submitted Minecraft usernames checked against Mojang, so that the server can identify my online-mode Java account reliably. # Acceptance Criteria - [x] Given a syntactically valid username, when it is submitted, then validation occurs server-side against the fixed Mojang endpoint. - [x] Given a Mojang match, then the canonical username and compact UUID are stored. - [x] Given no Mojang match, then the user or administrator must explicitly confirm an unverified override. - [x] Given malformed input, then it cannot be stored even through an override. - [x] Given an active UUID or case-insensitive username already registered, then another active registration is rejected. - [x] Given a later online-mode game login for an unverified account, then its UUID can be safely backfilled after username matching. # Implementation - [`packages/minecraft/src/index.ts`](../packages/minecraft/src/index.ts) - [`packages/database/src/schema.ts`](../packages/database/src/schema.ts) - User and administrator account actions under [`apps/web/src/app`](../apps/web/src/app) # Validation - [`packages/minecraft/test/minecraft.test.ts`](../packages/minecraft/test/minecraft.test.ts) - Database partial unique indexes preserve active identity invariants. # Related Stories - [First-time onboarding](us-003-onboarding.md) - [Velocity game admission](us-009-velocity-admission.md)