{
 "note": "Account pages on the official website (apps/site). The activity feed lets players follow Auto-Hunt and offline Auto-Hunt without logging into the game.",
 "proposed": true,
 "activityFeed": {
  "name": "Caravan Ledger",
  "where": "Official website → My account → Caravan Ledger (and the phone browser); never public",
  "access": {
   "alpha": "free for every tester (default on for testing)",
   "beta": "premium",
   "live": "premium (Caravan Pass)"
  },
  "shows": [
   "Online / offline state per character, current area and what it is doing (Auto-Hunt online, offline Auto-Hunt with time left, Auto-Quest step).",
   "A live receipt timeline: kills by monster, XP and levels gained, gold, every loot drop (rarity-coloured, with the same popups), potions used, deaths and revives, why it stopped (bag full, out of potions, time cap).",
   "A session summary card when an offline session ends, and a daily summary.",
   "Optional notifications (browser push or email): level up, rare or better drop, session ended, bag full."
  ],
  "source": "The durable Auto-Hunt receipts (AUTOMATION.md offline rules) through GET /v1/me/activity (cursor-paged) and a server-sent-events stream for the live view.",
  "rules": [
   "Read-only: the website never controls the character (no remote looting, selling or skill changes).",
   "Own account only; nothing in the feed is public. Rarity colours and popups come from the same game data.",
   "Premium is convenience only (ADR-018): the same receipts exist in-game for everyone; premium only adds the web view and notifications."
  ]
 },
 "premium": {
  "name": "Caravan Pass",
  "price": "OPEN-7 (Zoe price table)",
  "includes": [
   "Caravan Ledger web activity feed + notifications",
   "cosmetic monthly frame for the Armory page"
  ],
  "never": [
   "XP, drop rate, gold or power of any kind",
   "extra offline hours"
  ]
 },
 "auth": {
  "proposed": true,
  "decided": "owner, round 6: one-tap Google sign-in on the website and in the game",
  "doc": "docs/tech/ACCOUNTS_AUTH.md",
  "providers": [
   {
    "id": "google",
    "platforms": [
     "web",
     "web-build",
     "windows",
     "android",
     "ios"
    ],
    "primary": true
   },
   {
    "id": "apple",
    "platforms": [
     "ios"
    ],
    "note": "App Store login rule: an equivalent privacy-focused option next to Google on iOS; verify the current guideline at M11"
   }
  ],
  "flows": {
   "website": "Google Identity Services One Tap + \"Sign in with Google\" button → ID token → POST /v1/auth/google",
   "webBuild": "site session → short-lived game ticket → zone admission",
   "android": "Credential Manager (Google ID option) → ID token → gateway",
   "ios": "Google Sign-In SDK or Sign in with Apple → ID token → gateway",
   "windows": "system browser, OAuth 2.0 authorization code + PKCE, loopback redirect (no embedded web view)"
  },
  "server": [
   "Verify signature, iss, aud (our client ids), exp and nonce on every token",
   "Key accounts by provider subject id, not email",
   "Zoen session: 15 min access token + rotating device-bound refresh token",
   "Google tokens are not stored after verification",
   "Rate-limit and log every sign-in for the security system"
  ],
  "ownerSetup": [
   "Google Cloud project + OAuth consent screen (free)",
   "OAuth client ids: web, Android (package + SHA-1), iOS (bundle id), desktop",
   "Apple Developer account for Sign in with Apple (OPEN-5)"
  ]
 }
}
