Skip to content

Epic: Player Profile System v1 Tracking #27

Description

@ibloud

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

  • matchLogs/{roomId} created and append-only on confirmed moves
  • Aggregator computes and persists: ACPL, veil/opponent veil rates, sacrifice rate, inversionClause counts, comeback signals
  • playerProfiles/{playerToken} updated on game completion (Phase 1)
  • Deck selection persisted to playerProfiles.deck
  • Matchmaking consumes profile stats + suit constraints
  • researchConsent defaults false and is respected by aggregation/export logic
  • docs/design/player-profile-schema.md merged and referenced by implementation PRs
  • Phase 2 AT Proto write-back tested with throwaway account and merge-safe field update

Definition of Done (v1)

Functional

  • Completed remote match yields valid matchLogs record
  • Completed remote match updates both participants' playerProfiles
  • Queue balancing respects ACPL bounds and suit distribution targets
  • Consent-off users excluded from aggregate research outputs

Data & Safety

  • No raw matchLogs included in external telemetry
  • No cross-session tracking beyond stated consent model
  • Guest sessions remain non-persistent

Quality

  • Each issue includes implementation notes + acceptance proof (logs/screenshot/doc refs)
  • Backfill/migration notes for did: null -> did documented for Phase 2
  • Rollback path documented for aggregator/matchmaking toggles

Dependencies & Sequencing

  1. Issue feat: log per-move deltas to matchLogs/{roomId}.moves[] (single-document array) #20 (matchLogs)
  2. Issue feat: Cloud Function to aggregate matchLog into playerProfile #21 (aggregator) + Issue feat: write Sealed Deck selection to playerProfiles Firestore doc #22 (deck persistence)
  3. 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)
  4. Issue docs: player-profile-schema.md #26 (design doc lock + updates as implementation clarifies)
  5. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    docsdocumentation tasks

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions