Epic: Player Profile System v1 Tracking
Milestone: Player Profile System v1
This epic tracks implementation of the Player Profile pipeline across Firestore, matchmaking, AT Proto write-back, and ethics controls.
Objective
Ship a complete Phase 1 player profile system with:
per-move telemetry capture (matchLogs)
post-game aggregation (playerProfiles)
deck persistence
profile-aware matchmaking
consent-gated data handling
…and prepare cleanly for Phase 2 AT Proto canonical ownership (actor.rpg.stats via OAuth/PKCE).
Scope
Core Build (Phase 1)
Canonical Ownership Transition (Phase 2)
Deliverables
Definition of Done (v1)
Functional
Data & Safety
Quality
Dependencies & Sequencing
Issue feat: log per-move deltas to matchLogs/{roomId}.moves[] (single-document array) #20 (matchLogs)
Issue feat: Cloud Function to aggregate matchLog into playerProfile #21 (aggregator) + Issue feat: write Sealed Deck selection to playerProfiles Firestore doc #22 (deck persistence)
Issue feat: matchmaking reads playerProfiles for skill + faction balancing #23 (matchmaking read logic) + Issue feat: opt-in aggregate research consent at account creation #25 (consent gating)
Issue docs: player-profile-schema.md #26 (design doc lock + updates as implementation clarifies)
Issue feat: OAuth/PKCE write-back to actor.rpg.stats #24 (AT Proto OAuth/PKCE write-back)
Notes
Firestore project: adept-crossing-106819
Related files: gameNamespace.js, roomStore.js, atprotoPoster.js, veiled-chess-core-server.js
Canonical schema reference: docs/design/player-profile-schema.md
Epic: Player Profile System v1 Tracking
Milestone: Player Profile System v1
This epic tracks implementation of the Player Profile pipeline across Firestore, matchmaking, AT Proto write-back, and ethics controls.
Objective
Ship a complete Phase 1 player profile system with:
matchLogs)playerProfiles)…and prepare cleanly for Phase 2 AT Proto canonical ownership (
actor.rpg.statsvia OAuth/PKCE).Scope
Core Build (Phase 1)
Canonical Ownership Transition (Phase 2)
Deliverables
matchLogs/{roomId}created and append-only on confirmed movesplayerProfiles/{playerToken}updated on game completion (Phase 1)playerProfiles.deckresearchConsentdefaultsfalseand is respected by aggregation/export logicdocs/design/player-profile-schema.mdmerged and referenced by implementation PRsDefinition of Done (v1)
Functional
matchLogsrecordplayerProfilesData & Safety
matchLogsincluded in external telemetryQuality
did: null -> diddocumented for Phase 2Dependencies & Sequencing
matchLogs)Notes
adept-crossing-106819gameNamespace.js,roomStore.js,atprotoPoster.js,veiled-chess-core-server.jsdocs/design/player-profile-schema.md