{
  "_comment": "GC Points earning + spending rates. Source-of-truth for the gamification economy. Mirrors what's authoritatively implemented in assets/js/gamification_v2.js (Edge Functions: earn-points / spend-points). Surfaced on /admin → Configuration tab via admin-config-viewer.js. Compliance disclosure copy lives separately in docs/plans/points-system-disclosure.md and the user-facing legal agreement in docs/legal/gc-points-program-terms.md.",
  "_lastUpdated": "2026-05-16",
  "_authority": "MasonByte Board (per gc-points-program-terms.md §8) — rates modifiable without notice",

  "earning": [
    { "action": "quiz_answer_correct",         "points": "+5 to +10",  "scope": "per question",         "note": "Variable based on difficulty band" },
    { "action": "quiz_answer_first_time",      "points": "+5",         "scope": "bonus, once per Q",    "note": "First correct answer to a previously-untouched question" },
    { "action": "section_complete",            "points": "+100",       "scope": "per section",          "note": "Crossing the completion threshold of any state's section" },
    { "action": "section_flawless",            "points": "+200",       "scope": "per section",          "note": "100% on all questions in a section, single attempt" },
    { "action": "practice_exam_finish",        "points": "+50",        "scope": "per exam",             "note": "Completing any practice exam regardless of score" },
    { "action": "daily_challenge_complete",    "points": "+50",        "scope": "per day",              "note": "Cap: 1 daily challenge per UTC day" },
    { "action": "streak_3_day",                "points": "+100",       "scope": "milestone, once",      "note": "3-day study streak milestone" },
    { "action": "streak_7_day",                "points": "+500",       "scope": "milestone, once",      "note": "7-day study streak milestone" },
    { "action": "streak_30_day",               "points": "+2000",      "scope": "milestone, once",      "note": "30-day study streak milestone" },
    { "action": "streak_100_day",              "points": "+5000",      "scope": "milestone, once",      "note": "100-day study streak milestone (rare flex)" },
    { "action": "review_missed_question",      "points": "+5",         "scope": "per question reviewed","note": "Returning to a previously-incorrect question and re-attempting" },
    { "action": "share_result",                "points": "+25",        "scope": "per share, daily cap", "note": "Sharing a completion or score to social. Daily cap to prevent farming." }
  ],

  "spending": [
    { "feature": "ui_theme_unlock",            "cost": "500 to 2000",  "type": "cosmetic",              "note": "Per theme; pack of 5 themes Phase 1" },
    { "feature": "exam_replay",                "cost": "1000",         "type": "convenience",           "note": "Practice Exam Variation Mode (new question pool, same section)" },
    { "feature": "cram_sheet_preview",         "cost": "5000",         "type": "convenience",           "note": "Time-limited preview of a paid state's cram sheet" },
    { "feature": "streak_freeze",              "cost": "1000",         "type": "convenience",           "note": "Prevents a streak from breaking on a missed day; 1-use" },
    { "feature": "tier_up_nudge",              "cost": "2000",         "type": "informational",         "note": "Push notification + email when next tier crosses" }
  ],

  "limits": {
    "max_earn_calls_per_day_per_user": 100,
    "daily_points_cap": 400,
    "idle_timeout_ms": 300000,
    "heartbeat_interval_ms": 30000,
    "_note": "Rate limits enforced server-side via the earn-points Edge Function. Source: assets/js/gamification_v2.js CONFIG block."
  },

  "tiersToReach": {
    "_comment": "Approximate Build Point thresholds for each tier per docs/plans/gamification-decisions-2026-05-16.md §3. Updated 2026-05-16 with Matthew-locked answers (bronze/silver/gold/diamond-builder ladder w/ 3 sublevels per tier). For exact thresholds in code see gamification_v2.js TIERS array (post PR-1 of §10).",
    "Apprentice":            { "points": 0,     "note": "Default — signup only" },
    "Bronze I":              { "points": 25,    "note": "First practice (3-5 correct answers)" },
    "Bronze II":             { "points": 75,    "note": "" },
    "Bronze III":            { "points": 200,   "note": "" },
    "Silver I":              { "points": 500,   "note": "" },
    "Silver II":             { "points": 1000,  "note": "" },
    "Silver III":            { "points": 1750,  "note": "" },
    "Gold I":                { "points": 2750,  "note": "" },
    "Gold II":               { "points": 4000,  "note": "" },
    "Gold III":              { "points": 5500,  "note": "" },
    "Diamond Builder I":     { "points": 8000,  "note": "Multi-state engagement / exam pass — Matthew 2026-05-16: avoids 'Master' nomenclature" },
    "Diamond Builder II":    { "points": 12000, "note": "" },
    "Diamond Builder III":   { "points": 17500, "note": "Top — power-user / champion flex" }
  }
}
