Active players / day (DAU proxy β by last save)
New players / day (by createdAt)
π― Real DAU β distinct players / day (event feed: login)
New vs returning / day (event feed)
Gold distribution
Gems distribution
πͺ Gold gained by source
π Gems gained by source
πͺ Gold spent by category
π Gems spent by category
Net flow β minted vs spent
π Daily minted vs spent β πͺ Gold
π Daily minted vs spent β π Gems
πͺ Gold spent β source β category β item
π Gems spent β source β category β item
β±οΈ Offline return β away-time distribution
πΎ Pet boxes opened by source
π Feature usage β tab views
πΎ Pet gacha β pulls & new unlocks by source
Total level distribution
Quests completed / player
Average level per skill
Quest chain funnel (players reached β completed)
Weekly board β quests completed / player
Weekly board β milestones reached
πΎ Ownership by pet (players who unlocked each)
π― Pet usage β players currently deploying each
β Star-level distribution (across all owned pets)
Pets owned / player
π Pet boxes opened / day (event feed)
π Skill unlock rate (% of players)
πΊοΈ Episode progress (reached β fully completed)
Furthest episode reached / player
π Clue Scrolls held / solved by tier
Scrolls held / player
β‘ Clue Booster tier (players)
Held = unsolved scrolls sitting in inventory right now (a snapshot, not a lifetime drop count). Solved = lifetime expeditions completed per rarity from clueLog. A big held pile with few solves means players collect clues but don't run Expeditions.
Clears by dungeon
Dungeon clears / player
π Divergence stashes β by winner & reason
π Lease supersessions β device forced read-only
β»οΈ Silent rebases β conflicts resolved with no player-facing UI
Low counts are healthy. A rising divergence_stash rate means real players are hitting cross-device data-loss reconciliations (loser branch preserved to the conflict stash) β sizes the need for restore UI + server merge. lease_superseded counts every time the single-writer lease forces a second device read-only.
Since v1.81.0 (2026-08-20) the cloud doc is authoritative at session start and conflicts resolve by sync_rebase instead of a reload banner. Read it this way: replayed > 0 proves the event outbox rescued un-synced actions across a conflict; divergence stashes with reason Rebase Hydrate are expected (rebase still preserves the local branch), while stashes carrying the OLD reasons (βHigher Progress β¦β, βHigher Versionβ) after that date mean stale bundles are still in the wild. This card is the gate for Sync V2 Phase 7 part 2 β deleting the save-transaction merges and the total-XP guard.