local _, ns = ...

-- Generated from: Documentation/MurlocMinder_Achievement_Catalog_Feasible_v0.1.10_REFRESHD_20260309-133339.ods
-- Regenerate by re-running the build conversion step used in development tooling.
ns.AchievementCatalog = {
  points_by_tier = { [1] = 5, [2] = 10, [3] = 15, [4] = 20, [5] = 25 },
  list = {
    {
      id = "MM-ECO-BAL-001",
      name = "Coin Purse",
      category = "Economy",
      subcategory = "Economy",
      tier = 1,
      points = 5,
      criteria = "Hold 250 shells at once.",
      metric = "store.shells",
      threshold = "250",
      tracking_source = "store.shells",
    },
    {
      id = "MM-ECO-EARN-001",
      name = "Pocket Shells",
      category = "Economy",
      subcategory = "Economy",
      tier = 1,
      points = 5,
      criteria = "Earn 100 shells total.",
      metric = "economy.shellsEarned",
      threshold = "100",
      tracking_source = "economy.shellsEarned",
    },
    {
      id = "MM-ECO-NET-001",
      name = "In the Green",
      category = "Economy",
      subcategory = "Economy",
      tier = 1,
      points = 5,
      criteria = "Reach shell net value 100 (earned-spent).",
      metric = "economy.shellsEarned - economy.shellsSpent",
      threshold = "100",
      tracking_source = "economy.shellsEarned, economy.shellsSpent",
    },
    {
      id = "MM-ECO-SPEND-001",
      name = "First Purchases",
      category = "Economy",
      subcategory = "Economy",
      tier = 1,
      points = 5,
      criteria = "Spend 100 shells total.",
      metric = "economy.shellsSpent",
      threshold = "100",
      tracking_source = "economy.shellsSpent",
    },
    {
      id = "MM-ECO-BAL-002",
      name = "Banked Up",
      category = "Economy",
      subcategory = "Economy",
      tier = 2,
      points = 10,
      criteria = "Hold 1000 shells at once.",
      metric = "store.shells",
      threshold = "1000",
      tracking_source = "store.shells",
    },
    {
      id = "MM-ECO-EARN-002",
      name = "Shell Saver",
      category = "Economy",
      subcategory = "Economy",
      tier = 2,
      points = 10,
      criteria = "Earn 1000 shells total.",
      metric = "economy.shellsEarned",
      threshold = "1000",
      tracking_source = "economy.shellsEarned",
    },
    {
      id = "MM-ECO-NET-002",
      name = "Healthy Margin",
      category = "Economy",
      subcategory = "Economy",
      tier = 2,
      points = 10,
      criteria = "Reach shell net value 1000 (earned-spent).",
      metric = "economy.shellsEarned - economy.shellsSpent",
      threshold = "1000",
      tracking_source = "economy.shellsEarned, economy.shellsSpent",
    },
    {
      id = "MM-ECO-SPEND-002",
      name = "Shop Supporter",
      category = "Economy",
      subcategory = "Economy",
      tier = 2,
      points = 10,
      criteria = "Spend 1000 shells total.",
      metric = "economy.shellsSpent",
      threshold = "1000",
      tracking_source = "economy.shellsSpent",
    },
    {
      id = "MM-ECO-BAL-003",
      name = "Loaded Tidepool",
      category = "Economy",
      subcategory = "Economy",
      tier = 3,
      points = 15,
      criteria = "Hold 5000 shells at once.",
      metric = "store.shells",
      threshold = "5000",
      tracking_source = "store.shells",
    },
    {
      id = "MM-ECO-EARN-003",
      name = "Shell Merchant",
      category = "Economy",
      subcategory = "Economy",
      tier = 3,
      points = 15,
      criteria = "Earn 5000 shells total.",
      metric = "economy.shellsEarned",
      threshold = "5000",
      tracking_source = "economy.shellsEarned",
    },
    {
      id = "MM-ECO-NET-003",
      name = "Net Gainer",
      category = "Economy",
      subcategory = "Economy",
      tier = 3,
      points = 15,
      criteria = "Reach shell net value 5000 (earned-spent).",
      metric = "economy.shellsEarned - economy.shellsSpent",
      threshold = "5000",
      tracking_source = "economy.shellsEarned, economy.shellsSpent",
    },
    {
      id = "MM-ECO-SPEND-003",
      name = "Big Spender",
      category = "Economy",
      subcategory = "Economy",
      tier = 3,
      points = 15,
      criteria = "Spend 5000 shells total.",
      metric = "economy.shellsSpent",
      threshold = "5000",
      tracking_source = "economy.shellsSpent",
    },
    {
      id = "MM-ECO-BAL-004",
      name = "Hoard Keeper",
      category = "Economy",
      subcategory = "Economy",
      tier = 4,
      points = 20,
      criteria = "Hold 15000 shells at once.",
      metric = "store.shells",
      threshold = "15000",
      tracking_source = "store.shells",
    },
    {
      id = "MM-ECO-EARN-004",
      name = "Shell Baron",
      category = "Economy",
      subcategory = "Economy",
      tier = 4,
      points = 20,
      criteria = "Earn 25000 shells total.",
      metric = "economy.shellsEarned",
      threshold = "25000",
      tracking_source = "economy.shellsEarned",
    },
    {
      id = "MM-ECO-NET-004",
      name = "Profit Current",
      category = "Economy",
      subcategory = "Economy",
      tier = 4,
      points = 20,
      criteria = "Reach shell net value 20000 (earned-spent).",
      metric = "economy.shellsEarned - economy.shellsSpent",
      threshold = "20000",
      tracking_source = "economy.shellsEarned, economy.shellsSpent",
    },
    {
      id = "MM-ECO-SPEND-004",
      name = "Tidepool Investor",
      category = "Economy",
      subcategory = "Economy",
      tier = 4,
      points = 20,
      criteria = "Spend 25000 shells total.",
      metric = "economy.shellsSpent",
      threshold = "25000",
      tracking_source = "economy.shellsSpent",
    },
    {
      id = "MM-ECO-BAL-005",
      name = "Shell Vault",
      category = "Economy",
      subcategory = "Economy",
      tier = 5,
      points = 25,
      criteria = "Hold 50000 shells at once.",
      metric = "store.shells",
      threshold = "50000",
      tracking_source = "store.shells",
    },
    {
      id = "MM-ECO-EARN-005",
      name = "Shell Tycoon",
      category = "Economy",
      subcategory = "Economy",
      tier = 5,
      points = 25,
      criteria = "Earn 100000 shells total.",
      metric = "economy.shellsEarned",
      threshold = "100000",
      tracking_source = "economy.shellsEarned",
    },
    {
      id = "MM-ECO-NET-005",
      name = "Treasury Overflow",
      category = "Economy",
      subcategory = "Economy",
      tier = 5,
      points = 25,
      criteria = "Reach shell net value 75000 (earned-spent).",
      metric = "economy.shellsEarned - economy.shellsSpent",
      threshold = "75000",
      tracking_source = "economy.shellsEarned, economy.shellsSpent",
    },
    {
      id = "MM-ECO-SPEND-005",
      name = "Shell Dissolver",
      category = "Economy",
      subcategory = "Economy",
      tier = 5,
      points = 25,
      criteria = "Spend 100000 shells total.",
      metric = "economy.shellsSpent",
      threshold = "100000",
      tracking_source = "economy.shellsSpent",
    },
    {
      id = "MM-COLL-PURCH-CLEAN-001",
      name = "Cleaning Shopper",
      category = "Collections",
      subcategory = "Clean Items",
      tier = 1,
      points = 5,
      criteria = "Buy 1 cleaning items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='clean')",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-UNIQ-CLEAN-001",
      name = "Clean Initiate",
      category = "Collections",
      subcategory = "Clean Items",
      tier = 1,
      points = 5,
      criteria = "Buy 1 unique cleaning item.",
      metric = "count(keys with purchasesByKey[k]>0, category(k)=='clean')",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-CLEAN-002",
      name = "Soap Stash",
      category = "Collections",
      subcategory = "Clean Items",
      tier = 2,
      points = 10,
      criteria = "Buy 5 cleaning items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='clean')",
      threshold = "5",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-UNIQ-CLEAN-002",
      name = "Cleanup Rotation",
      category = "Collections",
      subcategory = "Clean Items",
      tier = 2,
      points = 10,
      criteria = "Buy 3 unique cleaning items.",
      metric = "count(keys with purchasesByKey[k]>0, category(k)=='clean')",
      threshold = "3",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-CLEAN-003",
      name = "Cleanup Curator",
      category = "Collections",
      subcategory = "Clean Items",
      tier = 3,
      points = 15,
      criteria = "Buy 25 cleaning items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='clean')",
      threshold = "25",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-UNIQ-CLEAN-003",
      name = "Full Cleaning Set",
      category = "Collections",
      subcategory = "Clean Items",
      tier = 3,
      points = 15,
      criteria = "Buy all 5 unique cleaning items.",
      metric = "count(keys with purchasesByKey[k]>0, category(k)=='clean')",
      threshold = "5",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-CLEAN-004",
      name = "Sanitation Tycoon",
      category = "Collections",
      subcategory = "Clean Items",
      tier = 4,
      points = 20,
      criteria = "Buy 100 cleaning items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='clean')",
      threshold = "100",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-COMP-001",
      name = "All Trinkets Acquired",
      category = "Collections",
      subcategory = "Completion",
      tier = 1,
      points = 5,
      criteria = "Own all trinkets at once.",
      metric = "count_owned(category='trinket')",
      threshold = "8",
      tracking_source = "store.items + store catalog",
    },
    {
      id = "MM-COLL-COMP-002",
      name = "Habitat Fully Upgraded",
      category = "Collections",
      subcategory = "Completion",
      tier = 1,
      points = 5,
      criteria = "Own all habitat upgrades at once.",
      metric = "count_owned(category='habitat')",
      threshold = "10",
      tracking_source = "store.items + store catalog",
    },
    {
      id = "MM-COLL-PURCH-FOOD-001",
      name = "Snack Buyer",
      category = "Collections",
      subcategory = "Food",
      tier = 1,
      points = 5,
      criteria = "Buy 1 food items.",
      metric = "sum(stats.purchasesByKey[k], k in FOOD_ITEMS)",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-COLL-UNIQ-FOOD-001",
      name = "Taste Tester",
      category = "Collections",
      subcategory = "Food",
      tier = 1,
      points = 5,
      criteria = "Buy 1 unique food type.",
      metric = "count(keys with purchasesByKey[k]>0, k in FOOD_ITEMS)",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-COLL-PURCH-FOOD-002",
      name = "Pantry Stocker",
      category = "Collections",
      subcategory = "Food",
      tier = 2,
      points = 10,
      criteria = "Buy 25 food items.",
      metric = "sum(stats.purchasesByKey[k], k in FOOD_ITEMS)",
      threshold = "25",
      tracking_source = "economy.stats.purchasesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-COLL-UNIQ-FOOD-002",
      name = "Tide Menu",
      category = "Collections",
      subcategory = "Food",
      tier = 2,
      points = 10,
      criteria = "Buy 3 unique food types.",
      metric = "count(keys with purchasesByKey[k]>0, k in FOOD_ITEMS)",
      threshold = "3",
      tracking_source = "economy.stats.purchasesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-COLL-PURCH-FOOD-003",
      name = "Meal Planner",
      category = "Collections",
      subcategory = "Food",
      tier = 3,
      points = 15,
      criteria = "Buy 100 food items.",
      metric = "sum(stats.purchasesByKey[k], k in FOOD_ITEMS)",
      threshold = "100",
      tracking_source = "economy.stats.purchasesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-COLL-UNIQ-FOOD-003",
      name = "Full Pantry Menu",
      category = "Collections",
      subcategory = "Food",
      tier = 3,
      points = 15,
      criteria = "Buy all 5 unique food types.",
      metric = "count(keys with purchasesByKey[k]>0, k in FOOD_ITEMS)",
      threshold = "5",
      tracking_source = "economy.stats.purchasesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-COLL-PURCH-FOOD-004",
      name = "Feeding Warehouse",
      category = "Collections",
      subcategory = "Food",
      tier = 4,
      points = 20,
      criteria = "Buy 250 food items.",
      metric = "sum(stats.purchasesByKey[k], k in FOOD_ITEMS)",
      threshold = "250",
      tracking_source = "economy.stats.purchasesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-COLL-PURCH-FOOD-005",
      name = "Endless Pantry",
      category = "Collections",
      subcategory = "Food",
      tier = 5,
      points = 25,
      criteria = "Buy 1000 food items.",
      metric = "sum(stats.purchasesByKey[k], k in FOOD_ITEMS)",
      threshold = "1000",
      tracking_source = "economy.stats.purchasesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-COLL-PURCH-HABUP-001",
      name = "First Upgrade",
      category = "Collections",
      subcategory = "Habitat Upgrades",
      tier = 1,
      points = 5,
      criteria = "Buy 1 habitat upgrades.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='habitat' and not habitat_bg_)",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-HABUP-002",
      name = "Habitat Improver",
      category = "Collections",
      subcategory = "Habitat Upgrades",
      tier = 2,
      points = 10,
      criteria = "Buy 3 habitat upgrades.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='habitat' and not habitat_bg_)",
      threshold = "3",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-HABUP-003",
      name = "Habitat Engineer",
      category = "Collections",
      subcategory = "Habitat Upgrades",
      tier = 3,
      points = 15,
      criteria = "Buy 6 habitat upgrades.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='habitat' and not habitat_bg_)",
      threshold = "6",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-HABUP-004",
      name = "Fully Upgraded Habitat",
      category = "Collections",
      subcategory = "Habitat Upgrades",
      tier = 4,
      points = 20,
      criteria = "Buy 10 habitat upgrades.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='habitat' and not habitat_bg_)",
      threshold = "10",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-BG-001",
      name = "Elwynn Resident",
      category = "Collections",
      subcategory = "Habitats",
      tier = 1,
      points = 5,
      criteria = "Purchase Elwynn habitat.",
      metric = "stats.purchasesByKey['habitat_bg_elwynn_housing']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-BG-002",
      name = "Twin Peaks Traveler",
      category = "Collections",
      subcategory = "Habitats",
      tier = 1,
      points = 5,
      criteria = "Purchase Twin Peaks habitat.",
      metric = "stats.purchasesByKey['habitat_bg_twin_peaks']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-BG-003",
      name = "Murloc Homeowner",
      category = "Collections",
      subcategory = "Habitats",
      tier = 1,
      points = 5,
      criteria = "Purchase Murloc Habitat background.",
      metric = "stats.purchasesByKey['habitat_bg_murloc_shop']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-BG-004",
      name = "Exile Explorer",
      category = "Collections",
      subcategory = "Habitats",
      tier = 1,
      points = 5,
      criteria = "Purchase Exile's Reach habitat.",
      metric = "stats.purchasesByKey['habitat_bg_exiles_reach']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-BG-005",
      name = "Storm-Harbor Patron",
      category = "Collections",
      subcategory = "Habitats",
      tier = 1,
      points = 5,
      criteria = "Purchase Plunderstorm Harbor habitat.",
      metric = "stats.purchasesByKey['habitat_bg_scene_plunderstorm']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-HAB-ALL-001",
      name = "Every Shoreline",
      category = "Collections",
      subcategory = "Habitats",
      tier = 1,
      points = 5,
      criteria = "Unlock all paid habitat backgrounds.",
      metric = "count_true(customization.habitatOwned where key!='auto')",
      threshold = "5",
      tracking_source = "store.customization.habitatOwned",
    },
    {
      id = "MM-COLL-HAB-OWN-001",
      name = "First Backdrop",
      category = "Collections",
      subcategory = "Habitats",
      tier = 1,
      points = 5,
      criteria = "Own 1 habitat backgrounds (including default).",
      metric = "count_true(customization.habitatOwned)",
      threshold = "1",
      tracking_source = "store.customization.habitatOwned",
    },
    {
      id = "MM-COLL-HAB-OWN-002",
      name = "Scenic Keeper",
      category = "Collections",
      subcategory = "Habitats",
      tier = 2,
      points = 10,
      criteria = "Own 3 habitat backgrounds (including default).",
      metric = "count_true(customization.habitatOwned)",
      threshold = "3",
      tracking_source = "store.customization.habitatOwned",
    },
    {
      id = "MM-COLL-HAB-OWN-003",
      name = "World Traveler",
      category = "Collections",
      subcategory = "Habitats",
      tier = 3,
      points = 15,
      criteria = "Own 5 habitat backgrounds (including default).",
      metric = "count_true(customization.habitatOwned)",
      threshold = "5",
      tracking_source = "store.customization.habitatOwned",
    },
    {
      id = "MM-COLL-HAB-OWN-004",
      name = "All Habitats Unlocked",
      category = "Collections",
      subcategory = "Habitats",
      tier = 4,
      points = 20,
      criteria = "Own 6 habitat backgrounds (including default).",
      metric = "count_true(customization.habitatOwned)",
      threshold = "6",
      tracking_source = "store.customization.habitatOwned",
    },
    {
      id = "MM-COLL-PURCH-PLAY-001",
      name = "Toy Shopper",
      category = "Collections",
      subcategory = "Play Items",
      tier = 1,
      points = 5,
      criteria = "Buy 1 play items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='play')",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-UNIQ-PLAY-001",
      name = "Toy Initiate",
      category = "Collections",
      subcategory = "Play Items",
      tier = 1,
      points = 5,
      criteria = "Buy 1 unique play item.",
      metric = "count(keys with purchasesByKey[k]>0, category(k)=='play')",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-PLAY-002",
      name = "Toy Drawer",
      category = "Collections",
      subcategory = "Play Items",
      tier = 2,
      points = 10,
      criteria = "Buy 5 play items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='play')",
      threshold = "5",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-UNIQ-PLAY-002",
      name = "Toy Rotation",
      category = "Collections",
      subcategory = "Play Items",
      tier = 2,
      points = 10,
      criteria = "Buy 3 unique play items.",
      metric = "count(keys with purchasesByKey[k]>0, category(k)=='play')",
      threshold = "3",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-PLAY-003",
      name = "Toy Collector",
      category = "Collections",
      subcategory = "Play Items",
      tier = 3,
      points = 15,
      criteria = "Buy 25 play items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='play')",
      threshold = "25",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-UNIQ-PLAY-003",
      name = "Toy Museum",
      category = "Collections",
      subcategory = "Play Items",
      tier = 3,
      points = 15,
      criteria = "Buy all 5 unique play items.",
      metric = "count(keys with purchasesByKey[k]>0, category(k)=='play')",
      threshold = "5",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-PLAY-004",
      name = "Toy Vault",
      category = "Collections",
      subcategory = "Play Items",
      tier = 4,
      points = 20,
      criteria = "Buy 100 play items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='play')",
      threshold = "100",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-TOTAL-001",
      name = "First Purchase",
      category = "Collections",
      subcategory = "Purchases",
      tier = 1,
      points = 5,
      criteria = "Purchase 1 total items.",
      metric = "stats.purchasesTotal",
      threshold = "1",
      tracking_source = "economy.stats.purchasesTotal",
    },
    {
      id = "MM-COLL-PURCH-TOTAL-002",
      name = "Regular Shopper",
      category = "Collections",
      subcategory = "Purchases",
      tier = 2,
      points = 10,
      criteria = "Purchase 25 total items.",
      metric = "stats.purchasesTotal",
      threshold = "25",
      tracking_source = "economy.stats.purchasesTotal",
    },
    {
      id = "MM-COLL-PURCH-TOTAL-003",
      name = "Market Regular",
      category = "Collections",
      subcategory = "Purchases",
      tier = 3,
      points = 15,
      criteria = "Purchase 100 total items.",
      metric = "stats.purchasesTotal",
      threshold = "100",
      tracking_source = "economy.stats.purchasesTotal",
    },
    {
      id = "MM-COLL-PURCH-TOTAL-004",
      name = "Shell Mallwalker",
      category = "Collections",
      subcategory = "Purchases",
      tier = 4,
      points = 20,
      criteria = "Purchase 250 total items.",
      metric = "stats.purchasesTotal",
      threshold = "250",
      tracking_source = "economy.stats.purchasesTotal",
    },
    {
      id = "MM-COLL-PURCH-TOTAL-005",
      name = "Collector's Habit",
      category = "Collections",
      subcategory = "Purchases",
      tier = 5,
      points = 25,
      criteria = "Purchase 500 total items.",
      metric = "stats.purchasesTotal",
      threshold = "500",
      tracking_source = "economy.stats.purchasesTotal",
    },
    {
      id = "MM-COLL-PURCH-REST-001",
      name = "Rest Shopper",
      category = "Collections",
      subcategory = "Rest Items",
      tier = 1,
      points = 5,
      criteria = "Buy 1 rest items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='rest')",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-UNIQ-REST-001",
      name = "Rest Initiate",
      category = "Collections",
      subcategory = "Rest Items",
      tier = 1,
      points = 5,
      criteria = "Buy 1 unique rest item.",
      metric = "count(keys with purchasesByKey[k]>0, category(k)=='rest')",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-REST-002",
      name = "Nest Builder",
      category = "Collections",
      subcategory = "Rest Items",
      tier = 2,
      points = 10,
      criteria = "Buy 5 rest items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='rest')",
      threshold = "5",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-UNIQ-REST-002",
      name = "Comfort Rotation",
      category = "Collections",
      subcategory = "Rest Items",
      tier = 2,
      points = 10,
      criteria = "Buy 3 unique rest items.",
      metric = "count(keys with purchasesByKey[k]>0, category(k)=='rest')",
      threshold = "3",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-REST-003",
      name = "Comfort Collector",
      category = "Collections",
      subcategory = "Rest Items",
      tier = 3,
      points = 15,
      criteria = "Buy 25 rest items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='rest')",
      threshold = "25",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-UNIQ-REST-003",
      name = "Full Comfort Set",
      category = "Collections",
      subcategory = "Rest Items",
      tier = 3,
      points = 15,
      criteria = "Buy all 5 unique rest items.",
      metric = "count(keys with purchasesByKey[k]>0, category(k)=='rest')",
      threshold = "5",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-REST-004",
      name = "Dream Hoarder",
      category = "Collections",
      subcategory = "Rest Items",
      tier = 4,
      points = 20,
      criteria = "Buy 100 rest items.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='rest')",
      threshold = "100",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-TRINKET-001",
      name = "Trinket Buyer",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 1,
      points = 5,
      criteria = "Buy 1 trinkets.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='trinket')",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-SPEC-001",
      name = "Nameplate Ready",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 1,
      points = 5,
      criteria = "Purchase a Nametag.",
      metric = "stats.purchasesByKey['nameTag']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-SPEC-002",
      name = "Fortune Tide",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 1,
      points = 5,
      criteria = "Purchase Lucky Charm.",
      metric = "stats.purchasesByKey['luckyCharm']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-SPEC-003",
      name = "Double Shift",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 1,
      points = 5,
      criteria = "Purchase Shell Collar.",
      metric = "stats.purchasesByKey['shellCollar']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-SPEC-004",
      name = "Cargo Upgrade",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 1,
      points = 5,
      criteria = "Purchase Tiny Satchel.",
      metric = "stats.purchasesByKey['tinySatchel']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-SPEC-005",
      name = "Trait Spark",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 1,
      points = 5,
      criteria = "Purchase Crackling Trait Gem.",
      metric = "stats.purchasesByKey['traitGem']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-SPEC-006",
      name = "Trait Whisper",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 1,
      points = 5,
      criteria = "Purchase Whispering Trait Lamp.",
      metric = "stats.purchasesByKey['traitLamp']",
      threshold = "1",
      tracking_source = "economy.stats.purchasesByKey",
    },
    {
      id = "MM-COLL-PURCH-TRINKET-002",
      name = "Shiny Collector",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 2,
      points = 10,
      criteria = "Buy 3 trinkets.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='trinket')",
      threshold = "3",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-TRINKET-003",
      name = "Trinket Enthusiast",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 3,
      points = 15,
      criteria = "Buy 6 trinkets.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='trinket')",
      threshold = "6",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-COLL-PURCH-TRINKET-004",
      name = "Full Trinket Set",
      category = "Collections",
      subcategory = "Trinkets",
      tier = 4,
      points = 20,
      criteria = "Buy 8 trinkets.",
      metric = "sum(stats.purchasesByKey[k], category(k)=='trinket')",
      threshold = "8",
      tracking_source = "economy.stats.purchasesByKey + store catalog",
    },
    {
      id = "MM-LOSS-CLEAN-001",
      name = "Supply Used Up",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 1,
      points = 5,
      criteria = "Lose cleaning items 1 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='clean')",
      threshold = "1",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-FOOD-001",
      name = "Dropped Snack",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 1,
      points = 5,
      criteria = "Lose food items 1 times.",
      metric = "sum(stats.lossesByKey[k], k in FOOD_ITEMS)",
      threshold = "1",
      tracking_source = "economy.stats.lossesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-LOSS-PLAY-001",
      name = "Lost a Toy",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 1,
      points = 5,
      criteria = "Lose or break play items 1 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='play')",
      threshold = "1",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-REST-001",
      name = "Broken Bedding",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 1,
      points = 5,
      criteria = "Lose rest items 1 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='rest')",
      threshold = "1",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-TOTAL-001",
      name = "First Mishap",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 1,
      points = 5,
      criteria = "Lose or break 1 total items.",
      metric = "stats.lossesTotal",
      threshold = "1",
      tracking_source = "economy.stats.lossesTotal",
    },
    {
      id = "MM-LOSS-CLEAN-002",
      name = "Cleanup Casualties",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 2,
      points = 10,
      criteria = "Lose cleaning items 10 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='clean')",
      threshold = "10",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-FOOD-002",
      name = "Spoiled Stash",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 2,
      points = 10,
      criteria = "Lose food items 10 times.",
      metric = "sum(stats.lossesByKey[k], k in FOOD_ITEMS)",
      threshold = "10",
      tracking_source = "economy.stats.lossesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-LOSS-PLAY-002",
      name = "Toy Graveyard",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 2,
      points = 10,
      criteria = "Lose or break play items 10 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='play')",
      threshold = "10",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-REST-002",
      name = "Rest Ruined",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 2,
      points = 10,
      criteria = "Lose rest items 10 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='rest')",
      threshold = "10",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-TOTAL-002",
      name = "Wear and Tear",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 2,
      points = 10,
      criteria = "Lose or break 10 total items.",
      metric = "stats.lossesTotal",
      threshold = "10",
      tracking_source = "economy.stats.lossesTotal",
    },
    {
      id = "MM-LOSS-CLEAN-003",
      name = "Soap Disaster",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 3,
      points = 15,
      criteria = "Lose cleaning items 100 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='clean')",
      threshold = "100",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-FOOD-003",
      name = "Food Waste",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 3,
      points = 15,
      criteria = "Lose food items 50 times.",
      metric = "sum(stats.lossesByKey[k], k in FOOD_ITEMS)",
      threshold = "50",
      tracking_source = "economy.stats.lossesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-LOSS-PLAY-003",
      name = "Toy Catastrophe",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 3,
      points = 15,
      criteria = "Lose or break play items 100 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='play')",
      threshold = "100",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-REST-003",
      name = "Sleep Supply Collapse",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 3,
      points = 15,
      criteria = "Lose rest items 100 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='rest')",
      threshold = "100",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-TOTAL-003",
      name = "Breakage Trend",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 3,
      points = 15,
      criteria = "Lose or break 100 total items.",
      metric = "stats.lossesTotal",
      threshold = "100",
      tracking_source = "economy.stats.lossesTotal",
    },
    {
      id = "MM-LOSS-CLEAN-004",
      name = "Sanitation Meltdown",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 4,
      points = 20,
      criteria = "Lose cleaning items 250 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='clean')",
      threshold = "250",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-FOOD-004",
      name = "Pantry Disaster",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 4,
      points = 20,
      criteria = "Lose food items 100 times.",
      metric = "sum(stats.lossesByKey[k], k in FOOD_ITEMS)",
      threshold = "100",
      tracking_source = "economy.stats.lossesByKey + FOOD_ITEMS",
    },
    {
      id = "MM-LOSS-PLAY-004",
      name = "Toy Apocalypse",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 4,
      points = 20,
      criteria = "Lose or break play items 250 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='play')",
      threshold = "250",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-REST-004",
      name = "Nap Catastrophe",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 4,
      points = 20,
      criteria = "Lose rest items 250 times.",
      metric = "sum(stats.lossesByKey[k], category(k)=='rest')",
      threshold = "250",
      tracking_source = "economy.stats.lossesByKey + store catalog",
    },
    {
      id = "MM-LOSS-TOTAL-004",
      name = "Hazard Magnet",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 4,
      points = 20,
      criteria = "Lose or break 250 total items.",
      metric = "stats.lossesTotal",
      threshold = "250",
      tracking_source = "economy.stats.lossesTotal",
    },
    {
      id = "MM-LOSS-TOTAL-005",
      name = "Catastrophe Collector",
      category = "Mishaps",
      subcategory = "Mishaps",
      tier = 5,
      points = 25,
      criteria = "Lose or break 500 total items.",
      metric = "stats.lossesTotal",
      threshold = "500",
      tracking_source = "economy.stats.lossesTotal",
    },
    {
      id = "MM-GEN-RAR-001",
      name = "A Curious Hatch",
      category = "General",
      subcategory = "Hatch Rarity",
      tier = 1,
      points = 5,
      criteria = "Hatch an uncommon-or-better murloc.",
      metric = "rarity_rank(pet.modelRarity) >= uncommon",
      threshold = "uncommon",
      tracking_source = "pet.modelRarity",
    },
    {
      id = "MM-GEN-RAR-002",
      name = "Rare Waters",
      category = "General",
      subcategory = "Hatch Rarity",
      tier = 2,
      points = 10,
      criteria = "Hatch a rare-or-better murloc.",
      metric = "rarity_rank(pet.modelRarity) >= rare",
      threshold = "rare",
      tracking_source = "pet.modelRarity",
    },
    {
      id = "MM-GEN-RAR-003",
      name = "Epic Tideborn",
      category = "General",
      subcategory = "Hatch Rarity",
      tier = 3,
      points = 15,
      criteria = "Hatch an epic-or-better murloc.",
      metric = "rarity_rank(pet.modelRarity) >= epic",
      threshold = "epic",
      tracking_source = "pet.modelRarity",
    },
    {
      id = "MM-GEN-RAR-004",
      name = "Legend of the Reef",
      category = "General",
      subcategory = "Hatch Rarity",
      tier = 4,
      points = 20,
      criteria = "Hatch a legendary-or-better murloc.",
      metric = "rarity_rank(pet.modelRarity) >= legendary",
      threshold = "legendary",
      tracking_source = "pet.modelRarity",
    },
    {
      id = "MM-GEN-RAR-005",
      name = "One in a Tide",
      category = "General",
      subcategory = "Hatch Rarity",
      tier = 5,
      points = 25,
      criteria = "Hatch the rarest murloc.",
      metric = "pet.modelRarity == 'rarest'",
      threshold = "rarest",
      tracking_source = "pet.modelRarity",
    },
    {
      id = "MM-GEN-NEED-ALL-001",
      name = "Steady Care",
      category = "General",
      subcategory = "Need States",
      tier = 1,
      points = 5,
      criteria = "Keep all four needs at or above 250/1000 for 10 minutes.",
      metric = "all_needs_streak_minutes_at_250",
      threshold = "10 min",
      tracking_source = "pet.* need values + tick cadence",
    },
    {
      id = "MM-GEN-NEED-CLE-001",
      name = "Spotless",
      category = "General",
      subcategory = "Need States",
      tier = 1,
      points = 5,
      criteria = "Keep Cleanliness at or above 950/1000 for 5 minutes.",
      metric = "need_streak_minutes_cleanliness_at_950",
      threshold = "5 min",
      tracking_source = "pet.cleanliness + tick cadence",
    },
    {
      id = "MM-GEN-NEED-ENE-001",
      name = "Fully Rested",
      category = "General",
      subcategory = "Need States",
      tier = 1,
      points = 5,
      criteria = "Keep Energy at or above 950/1000 for 5 minutes.",
      metric = "need_streak_minutes_energy_at_950",
      threshold = "5 min",
      tracking_source = "pet.energy + tick cadence",
    },
    {
      id = "MM-GEN-NEED-HUN-001",
      name = "Well Fed",
      category = "General",
      subcategory = "Need States",
      tier = 1,
      points = 5,
      criteria = "Keep Hunger at or above 950/1000 for 5 minutes.",
      metric = "need_streak_minutes_hunger_at_950",
      threshold = "5 min",
      tracking_source = "pet.hunger + tick cadence",
    },
    {
      id = "MM-GEN-NEED-JOY-001",
      name = "Bright Spirits",
      category = "General",
      subcategory = "Need States",
      tier = 1,
      points = 5,
      criteria = "Keep Joy at or above 950/1000 for 5 minutes.",
      metric = "need_streak_minutes_joy_at_950",
      threshold = "5 min",
      tracking_source = "pet.joy + tick cadence",
    },
    {
      id = "MM-GEN-NEED-ALL-002",
      name = "Healthy Habitat",
      category = "General",
      subcategory = "Need States",
      tier = 2,
      points = 10,
      criteria = "Keep all four needs at or above 500/1000 for 7m30s.",
      metric = "all_needs_streak_minutes_at_500",
      threshold = "7m30s",
      tracking_source = "pet.* need values + tick cadence",
    },
    {
      id = "MM-GEN-NEED-ALL-003",
      name = "Peak Conditioning",
      category = "General",
      subcategory = "Need States",
      tier = 3,
      points = 15,
      criteria = "Keep all four needs at or above 750/1000 for 5 minutes.",
      metric = "all_needs_streak_minutes_at_750",
      threshold = "5 min",
      tracking_source = "pet.* need values + tick cadence",
    },
    {
      id = "MM-GEN-AGE-001",
      name = "First Tide",
      category = "General",
      subcategory = "Progression",
      tier = 1,
      points = 5,
      criteria = "Reach 1 hour of age (360 ticks).",
      metric = "pet.ageMinutes",
      threshold = "360",
      tracking_source = "pet.ageMinutes",
    },
    {
      id = "MM-GEN-LOG-001",
      name = "Tiny Journal",
      category = "General",
      subcategory = "Progression",
      tier = 1,
      points = 5,
      criteria = "Accumulate 25 activity history lines.",
      metric = "#activityHistory",
      threshold = "25",
      tracking_source = "db.profile.activityHistory",
    },
    {
      id = "MM-GEN-PROG-001",
      name = "Hatchling No More",
      category = "General",
      subcategory = "Progression",
      tier = 1,
      points = 5,
      criteria = "Hatch your egg into adolescent stage.",
      metric = "pet.stage == 'adolescent'",
      threshold = "1",
      tracking_source = "pet.stage",
    },
    {
      id = "MM-GEN-PROG-002",
      name = "Named At Last",
      category = "General",
      subcategory = "Progression",
      tier = 1,
      points = 5,
      criteria = "Give your murloc a non-empty name.",
      metric = "TrimString(pet.name) ~= ''",
      threshold = "1",
      tracking_source = "pet.name",
    },
    {
      id = "MM-GEN-STORE-001",
      name = "Window Shopper",
      category = "General",
      subcategory = "Progression",
      tier = 1,
      points = 5,
      criteria = "Open the Store tab once.",
      metric = "activity_message_opened_full_store_panel",
      threshold = "1",
      tracking_source = "PushActivity message trigger (Opened full store panel.)",
    },
    {
      id = "MM-GEN-AGE-002",
      name = "Shoreline Regular",
      category = "General",
      subcategory = "Progression",
      tier = 2,
      points = 10,
      criteria = "Reach 4 hours of age (1,440 ticks).",
      metric = "pet.ageMinutes",
      threshold = "1440",
      tracking_source = "pet.ageMinutes",
    },
    {
      id = "MM-GEN-LOG-002",
      name = "Field Notes",
      category = "General",
      subcategory = "Progression",
      tier = 2,
      points = 10,
      criteria = "Accumulate 100 activity history lines.",
      metric = "#activityHistory",
      threshold = "100",
      tracking_source = "db.profile.activityHistory",
    },
    {
      id = "MM-GEN-AGE-003",
      name = "Reef Veteran",
      category = "General",
      subcategory = "Progression",
      tier = 3,
      points = 15,
      criteria = "Reach 24 hours of age (8,640 ticks).",
      metric = "pet.ageMinutes",
      threshold = "8640",
      tracking_source = "pet.ageMinutes",
    },
    {
      id = "MM-GEN-LOG-003",
      name = "Mrrgl Memoir",
      category = "General",
      subcategory = "Progression",
      tier = 3,
      points = 15,
      criteria = "Accumulate 500 activity history lines.",
      metric = "#activityHistory",
      threshold = "500",
      tracking_source = "db.profile.activityHistory",
    },
    {
      id = "MM-GEN-AGE-004",
      name = "Tidebound Guardian",
      category = "General",
      subcategory = "Progression",
      tier = 4,
      points = 20,
      criteria = "Reach 7 days of age (60,480 ticks).",
      metric = "pet.ageMinutes",
      threshold = "60480",
      tracking_source = "pet.ageMinutes",
    },
    {
      id = "MM-GEN-LOG-004",
      name = "Chronicle of Tides",
      category = "General",
      subcategory = "Progression",
      tier = 4,
      points = 20,
      criteria = "Accumulate 2000 activity history lines.",
      metric = "#activityHistory",
      threshold = "2000",
      tracking_source = "db.profile.activityHistory",
    },
    {
      id = "MM-GEN-AGE-005",
      name = "Ancient of the Pools",
      category = "General",
      subcategory = "Progression",
      tier = 5,
      points = 25,
      criteria = "Reach 14 days of age (120,960 ticks).",
      metric = "pet.ageMinutes",
      threshold = "120960",
      tracking_source = "pet.ageMinutes",
    },
    {
      id = "MM-GEN-LOG-005",
      name = "Endless Logbook",
      category = "General",
      subcategory = "Progression",
      tier = 5,
      points = 25,
      criteria = "Accumulate 5000 activity history lines.",
      metric = "#activityHistory",
      threshold = "5000",
      tracking_source = "db.profile.activityHistory",
    },
    {
      id = "MM-TRAIT-PAIR-001",
      name = "Anchored and Napping",
      category = "General",
      subcategory = "Trait Pairs",
      tier = 1,
      points = 5,
      criteria = "Have the Lazy and Stubborn trait pair.",
      metric = "canonical_pair(pet.personality pet.personalitySecondary)==lazy_stubborn",
      threshold = "1",
      tracking_source = "pet.personality + pet.personalitySecondary",
    },
    {
      id = "MM-TRAIT-PAIR-002",
      name = "Hall Monitor Duo",
      category = "General",
      subcategory = "Trait Pairs",
      tier = 1,
      points = 5,
      criteria = "Have the Loyal and Responsible trait pair.",
      metric = "canonical_pair(pet.personality pet.personalitySecondary)==loyal_responsible",
      threshold = "1",
      tracking_source = "pet.personality + pet.personalitySecondary",
    },
    {
      id = "MM-CARE-AUTO-001",
      name = "Self-Starter",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 1,
      points = 5,
      criteria = "Trigger 1 autonomous actions.",
      metric = "stats.actions.autonomous",
      threshold = "1",
      tracking_source = "economy.stats.actions.autonomous",
    },
    {
      id = "MM-CARE-BAL-001",
      name = "Balanced Routine I",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 1,
      points = 5,
      criteria = "Reach 10 Feed, 10 Play, 10 Rest, and 10 Clean.",
      metric = "min(feed,play,rest,clean)",
      threshold = "10",
      tracking_source = "economy.stats.actions.*",
    },
    {
      id = "MM-CARE-CLEAN-001",
      name = "First Cleanup",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 1,
      points = 5,
      criteria = "Clean the habitat 1 times.",
      metric = "stats.actions.clean",
      threshold = "1",
      tracking_source = "economy.stats.actions.clean",
    },
    {
      id = "MM-CARE-EGG-001",
      name = "First Egg Care",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 1,
      points = 5,
      criteria = "Perform egg care 1 times.",
      metric = "stats.actions.eggCare",
      threshold = "1",
      tracking_source = "economy.stats.actions.eggCare",
    },
    {
      id = "MM-CARE-FEED-001",
      name = "First Feeding",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 1,
      points = 5,
      criteria = "Feed your murloc 1 times.",
      metric = "stats.actions.feed",
      threshold = "1",
      tracking_source = "economy.stats.actions.feed",
    },
    {
      id = "MM-CARE-FIND-001",
      name = "First Forage",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 1,
      points = 5,
      criteria = "Find Supplies 1 times.",
      metric = "stats.actions.find",
      threshold = "1",
      tracking_source = "economy.stats.actions.find",
    },
    {
      id = "MM-CARE-PLAY-001",
      name = "First Play",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 1,
      points = 5,
      criteria = "Play with your murloc 1 times.",
      metric = "stats.actions.play",
      threshold = "1",
      tracking_source = "economy.stats.actions.play",
    },
    {
      id = "MM-CARE-REST-001",
      name = "First Rest",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 1,
      points = 5,
      criteria = "Rest your murloc 1 times.",
      metric = "stats.actions.rest",
      threshold = "1",
      tracking_source = "economy.stats.actions.rest",
    },
    {
      id = "MM-CARE-TOTAL-001",
      name = "Routine Started",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 1,
      points = 5,
      criteria = "Perform 10 total core care actions (Feed+Play+Rest+Clean).",
      metric = "stats.actions.feed + stats.actions.play + stats.actions.rest + stats.actions.clean",
      threshold = "10",
      tracking_source = "economy.stats.actions.*",
    },
    {
      id = "MM-CARE-AUTO-002",
      name = "Independent Streak",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 2,
      points = 10,
      criteria = "Trigger 25 autonomous actions.",
      metric = "stats.actions.autonomous",
      threshold = "25",
      tracking_source = "economy.stats.actions.autonomous",
    },
    {
      id = "MM-CARE-BAL-002",
      name = "Balanced Routine II",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 2,
      points = 10,
      criteria = "Reach 50 Feed, 50 Play, 50 Rest, and 50 Clean.",
      metric = "min(feed,play,rest,clean)",
      threshold = "50",
      tracking_source = "economy.stats.actions.*",
    },
    {
      id = "MM-CARE-CLEAN-002",
      name = "Tidy Tidepool",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 2,
      points = 10,
      criteria = "Clean the habitat 25 times.",
      metric = "stats.actions.clean",
      threshold = "25",
      tracking_source = "economy.stats.actions.clean",
    },
    {
      id = "MM-CARE-EGG-002",
      name = "Incubator",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 2,
      points = 10,
      criteria = "Perform egg care 10 times.",
      metric = "stats.actions.eggCare",
      threshold = "10",
      tracking_source = "economy.stats.actions.eggCare",
    },
    {
      id = "MM-CARE-FEED-002",
      name = "Snack Routine",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 2,
      points = 10,
      criteria = "Feed your murloc 25 times.",
      metric = "stats.actions.feed",
      threshold = "25",
      tracking_source = "economy.stats.actions.feed",
    },
    {
      id = "MM-CARE-FIND-002",
      name = "Beachcomber",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 2,
      points = 10,
      criteria = "Find Supplies 10 times.",
      metric = "stats.actions.find",
      threshold = "10",
      tracking_source = "economy.stats.actions.find",
    },
    {
      id = "MM-CARE-PLAY-002",
      name = "Splash Partner",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 2,
      points = 10,
      criteria = "Play with your murloc 25 times.",
      metric = "stats.actions.play",
      threshold = "25",
      tracking_source = "economy.stats.actions.play",
    },
    {
      id = "MM-CARE-REST-002",
      name = "Quiet Tide",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 2,
      points = 10,
      criteria = "Rest your murloc 25 times.",
      metric = "stats.actions.rest",
      threshold = "25",
      tracking_source = "economy.stats.actions.rest",
    },
    {
      id = "MM-CARE-TOTAL-002",
      name = "Daily Rhythm",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 2,
      points = 10,
      criteria = "Perform 100 total core care actions (Feed+Play+Rest+Clean).",
      metric = "stats.actions.feed + stats.actions.play + stats.actions.rest + stats.actions.clean",
      threshold = "100",
      tracking_source = "economy.stats.actions.*",
    },
    {
      id = "MM-CARE-AUTO-003",
      name = "Autonomy Rising",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 3,
      points = 15,
      criteria = "Trigger 100 autonomous actions.",
      metric = "stats.actions.autonomous",
      threshold = "100",
      tracking_source = "economy.stats.actions.autonomous",
    },
    {
      id = "MM-CARE-BAL-003",
      name = "Balanced Routine III",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 3,
      points = 15,
      criteria = "Reach 200 Feed, 200 Play, 200 Rest, and 200 Clean.",
      metric = "min(feed,play,rest,clean)",
      threshold = "200",
      tracking_source = "economy.stats.actions.*",
    },
    {
      id = "MM-CARE-CLEAN-003",
      name = "Polished Habitat",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 3,
      points = 15,
      criteria = "Clean the habitat 100 times.",
      metric = "stats.actions.clean",
      threshold = "100",
      tracking_source = "economy.stats.actions.clean",
    },
    {
      id = "MM-CARE-FEED-003",
      name = "Cafeteria Crew",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 3,
      points = 15,
      criteria = "Feed your murloc 100 times.",
      metric = "stats.actions.feed",
      threshold = "100",
      tracking_source = "economy.stats.actions.feed",
    },
    {
      id = "MM-CARE-FIND-003",
      name = "Supply Runner",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 3,
      points = 15,
      criteria = "Find Supplies 50 times.",
      metric = "stats.actions.find",
      threshold = "50",
      tracking_source = "economy.stats.actions.find",
    },
    {
      id = "MM-CARE-PLAY-003",
      name = "Tide Games",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 3,
      points = 15,
      criteria = "Play with your murloc 100 times.",
      metric = "stats.actions.play",
      threshold = "100",
      tracking_source = "economy.stats.actions.play",
    },
    {
      id = "MM-CARE-REST-003",
      name = "Nap Scheduler",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 3,
      points = 15,
      criteria = "Rest your murloc 100 times.",
      metric = "stats.actions.rest",
      threshold = "100",
      tracking_source = "economy.stats.actions.rest",
    },
    {
      id = "MM-CARE-TOTAL-003",
      name = "Dedicated Caretaker",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 3,
      points = 15,
      criteria = "Perform 500 total core care actions (Feed+Play+Rest+Clean).",
      metric = "stats.actions.feed + stats.actions.play + stats.actions.rest + stats.actions.clean",
      threshold = "500",
      tracking_source = "economy.stats.actions.*",
    },
    {
      id = "MM-CARE-AUTO-004",
      name = "Mostly Self-Managed",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 4,
      points = 20,
      criteria = "Trigger 300 autonomous actions.",
      metric = "stats.actions.autonomous",
      threshold = "300",
      tracking_source = "economy.stats.actions.autonomous",
    },
    {
      id = "MM-CARE-CLEAN-004",
      name = "Clean Specialist",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 4,
      points = 20,
      criteria = "Clean the habitat 250 times.",
      metric = "stats.actions.clean",
      threshold = "250",
      tracking_source = "economy.stats.actions.clean",
    },
    {
      id = "MM-CARE-FEED-004",
      name = "Master Feeder",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 4,
      points = 20,
      criteria = "Feed your murloc 250 times.",
      metric = "stats.actions.feed",
      threshold = "250",
      tracking_source = "economy.stats.actions.feed",
    },
    {
      id = "MM-CARE-FIND-004",
      name = "Scavenge Scout",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 4,
      points = 20,
      criteria = "Find Supplies 150 times.",
      metric = "stats.actions.find",
      threshold = "150",
      tracking_source = "economy.stats.actions.find",
    },
    {
      id = "MM-CARE-PLAY-004",
      name = "Play Specialist",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 4,
      points = 20,
      criteria = "Play with your murloc 250 times.",
      metric = "stats.actions.play",
      threshold = "250",
      tracking_source = "economy.stats.actions.play",
    },
    {
      id = "MM-CARE-REST-004",
      name = "Rest Specialist",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 4,
      points = 20,
      criteria = "Rest your murloc 250 times.",
      metric = "stats.actions.rest",
      threshold = "250",
      tracking_source = "economy.stats.actions.rest",
    },
    {
      id = "MM-CARE-TOTAL-004",
      name = "Murloc Mentor",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 4,
      points = 20,
      criteria = "Perform 2000 total core care actions (Feed+Play+Rest+Clean).",
      metric = "stats.actions.feed + stats.actions.play + stats.actions.rest + stats.actions.clean",
      threshold = "2000",
      tracking_source = "economy.stats.actions.*",
    },
    {
      id = "MM-CARE-AUTO-005",
      name = "Tidepool Automation",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 5,
      points = 25,
      criteria = "Trigger 1000 autonomous actions.",
      metric = "stats.actions.autonomous",
      threshold = "1000",
      tracking_source = "economy.stats.actions.autonomous",
    },
    {
      id = "MM-CARE-CLEAN-005",
      name = "Pearl-Grade Clean",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 5,
      points = 25,
      criteria = "Clean the habitat 1000 times.",
      metric = "stats.actions.clean",
      threshold = "1000",
      tracking_source = "economy.stats.actions.clean",
    },
    {
      id = "MM-CARE-FEED-005",
      name = "Feeding Frenzy",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 5,
      points = 25,
      criteria = "Feed your murloc 1000 times.",
      metric = "stats.actions.feed",
      threshold = "1000",
      tracking_source = "economy.stats.actions.feed",
    },
    {
      id = "MM-CARE-FIND-005",
      name = "Master Finder",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 5,
      points = 25,
      criteria = "Find Supplies 300 times.",
      metric = "stats.actions.find",
      threshold = "300",
      tracking_source = "economy.stats.actions.find",
    },
    {
      id = "MM-CARE-PLAY-005",
      name = "Festival of Joy",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 5,
      points = 25,
      criteria = "Play with your murloc 1000 times.",
      metric = "stats.actions.play",
      threshold = "1000",
      tracking_source = "economy.stats.actions.play",
    },
    {
      id = "MM-CARE-REST-005",
      name = "Dream Current",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 5,
      points = 25,
      criteria = "Rest your murloc 1000 times.",
      metric = "stats.actions.rest",
      threshold = "1000",
      tracking_source = "economy.stats.actions.rest",
    },
    {
      id = "MM-CARE-TOTAL-005",
      name = "Legendary Caretaker",
      category = "Caretaking",
      subcategory = "Caretaking",
      tier = 5,
      points = 25,
      criteria = "Perform 5000 total core care actions (Feed+Play+Rest+Clean).",
      metric = "stats.actions.feed + stats.actions.play + stats.actions.rest + stats.actions.clean",
      threshold = "5000",
      tracking_source = "economy.stats.actions.*",
    },
    {
      id = "MM-SCAV-EARN-001",
      name = "Shell Trickle",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 1,
      points = 5,
      criteria = "Earn 100 shells from scavenging ticks.",
      metric = "economy.work.totalEarned",
      threshold = "100",
      tracking_source = "economy.work.totalEarned",
    },
    {
      id = "MM-SCAV-PAUSE-001",
      name = "Safety First",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 1,
      points = 5,
      criteria = "Auto-pause scavenging 1 times.",
      metric = "stats.scavenge.autoPauses",
      threshold = "1",
      tracking_source = "economy.stats.scavenge.autoPauses",
    },
    {
      id = "MM-SCAV-RECALL-001",
      name = "First Recall",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 1,
      points = 5,
      criteria = "Manually recall scavenging 1 times.",
      metric = "stats.scavenge.manualRecalls",
      threshold = "1",
      tracking_source = "economy.stats.scavenge.manualRecalls",
    },
    {
      id = "MM-SCAV-RESUME-001",
      name = "Back to Work",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 1,
      points = 5,
      criteria = "Auto-resume scavenging 1 times.",
      metric = "stats.scavenge.autoResumes",
      threshold = "1",
      tracking_source = "economy.stats.scavenge.autoResumes",
    },
    {
      id = "MM-SCAV-START-001",
      name = "First Shift",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 1,
      points = 5,
      criteria = "Start scavenging 1 times.",
      metric = "stats.scavenge.starts",
      threshold = "1",
      tracking_source = "economy.stats.scavenge.starts",
    },
    {
      id = "MM-SCAV-TICK-001",
      name = "Working Current",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 1,
      points = 5,
      criteria = "Accumulate 25 scavenging ticks.",
      metric = "economy.work.totalTicks",
      threshold = "25",
      tracking_source = "economy.work.totalTicks",
    },
    {
      id = "MM-SCAV-EARN-002",
      name = "Shell Stream",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 2,
      points = 10,
      criteria = "Earn 1000 shells from scavenging ticks.",
      metric = "economy.work.totalEarned",
      threshold = "1000",
      tracking_source = "economy.work.totalEarned",
    },
    {
      id = "MM-SCAV-PAUSE-002",
      name = "Rest-Zone Aware",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 2,
      points = 10,
      criteria = "Auto-pause scavenging 10 times.",
      metric = "stats.scavenge.autoPauses",
      threshold = "10",
      tracking_source = "economy.stats.scavenge.autoPauses",
    },
    {
      id = "MM-SCAV-RECALL-002",
      name = "Supervisor",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 2,
      points = 10,
      criteria = "Manually recall scavenging 10 times.",
      metric = "stats.scavenge.manualRecalls",
      threshold = "10",
      tracking_source = "economy.stats.scavenge.manualRecalls",
    },
    {
      id = "MM-SCAV-RESUME-002",
      name = "Safe-Zone Return",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 2,
      points = 10,
      criteria = "Auto-resume scavenging 10 times.",
      metric = "stats.scavenge.autoResumes",
      threshold = "10",
      tracking_source = "economy.stats.scavenge.autoResumes",
    },
    {
      id = "MM-SCAV-START-002",
      name = "Reliable Gatherer",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 2,
      points = 10,
      criteria = "Start scavenging 10 times.",
      metric = "stats.scavenge.starts",
      threshold = "10",
      tracking_source = "economy.stats.scavenge.starts",
    },
    {
      id = "MM-SCAV-TICK-002",
      name = "Steady Shift",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 2,
      points = 10,
      criteria = "Accumulate 250 scavenging ticks.",
      metric = "economy.work.totalTicks",
      threshold = "250",
      tracking_source = "economy.work.totalTicks",
    },
    {
      id = "MM-SCAV-EARN-003",
      name = "Shell River",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 3,
      points = 15,
      criteria = "Earn 5000 shells from scavenging ticks.",
      metric = "economy.work.totalEarned",
      threshold = "5000",
      tracking_source = "economy.work.totalEarned",
    },
    {
      id = "MM-SCAV-PAUSE-003",
      name = "City Watch",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 3,
      points = 15,
      criteria = "Auto-pause scavenging 50 times.",
      metric = "stats.scavenge.autoPauses",
      threshold = "50",
      tracking_source = "economy.stats.scavenge.autoPauses",
    },
    {
      id = "MM-SCAV-RECALL-003",
      name = "Route Manager",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 3,
      points = 15,
      criteria = "Manually recall scavenging 50 times.",
      metric = "stats.scavenge.manualRecalls",
      threshold = "50",
      tracking_source = "economy.stats.scavenge.manualRecalls",
    },
    {
      id = "MM-SCAV-RESUME-003",
      name = "Outside Again",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 3,
      points = 15,
      criteria = "Auto-resume scavenging 50 times.",
      metric = "stats.scavenge.autoResumes",
      threshold = "50",
      tracking_source = "economy.stats.scavenge.autoResumes",
    },
    {
      id = "MM-SCAV-START-003",
      name = "Shift Foreman",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 3,
      points = 15,
      criteria = "Start scavenging 50 times.",
      metric = "stats.scavenge.starts",
      threshold = "50",
      tracking_source = "economy.stats.scavenge.starts",
    },
    {
      id = "MM-SCAV-TICK-003",
      name = "Deep Shift",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 3,
      points = 15,
      criteria = "Accumulate 1000 scavenging ticks.",
      metric = "economy.work.totalTicks",
      threshold = "1000",
      tracking_source = "economy.work.totalTicks",
    },
    {
      id = "MM-SCAV-EARN-004",
      name = "Shell Delta",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 4,
      points = 20,
      criteria = "Earn 20000 shells from scavenging ticks.",
      metric = "economy.work.totalEarned",
      threshold = "20000",
      tracking_source = "economy.work.totalEarned",
    },
    {
      id = "MM-SCAV-PAUSE-004",
      name = "Safe-Zone Veteran",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 4,
      points = 20,
      criteria = "Auto-pause scavenging 100 times.",
      metric = "stats.scavenge.autoPauses",
      threshold = "100",
      tracking_source = "economy.stats.scavenge.autoPauses",
    },
    {
      id = "MM-SCAV-RECALL-004",
      name = "Strict Overseer",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 4,
      points = 20,
      criteria = "Manually recall scavenging 100 times.",
      metric = "stats.scavenge.manualRecalls",
      threshold = "100",
      tracking_source = "economy.stats.scavenge.manualRecalls",
    },
    {
      id = "MM-SCAV-RESUME-004",
      name = "Resume Master",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 4,
      points = 20,
      criteria = "Auto-resume scavenging 100 times.",
      metric = "stats.scavenge.autoResumes",
      threshold = "100",
      tracking_source = "economy.stats.scavenge.autoResumes",
    },
    {
      id = "MM-SCAV-START-004",
      name = "Scavenge Captain",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 4,
      points = 20,
      criteria = "Start scavenging 150 times.",
      metric = "stats.scavenge.starts",
      threshold = "150",
      tracking_source = "economy.stats.scavenge.starts",
    },
    {
      id = "MM-SCAV-TICK-004",
      name = "Long-Haul Scavenger",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 4,
      points = 20,
      criteria = "Accumulate 5000 scavenging ticks.",
      metric = "economy.work.totalTicks",
      threshold = "5000",
      tracking_source = "economy.work.totalTicks",
    },
    {
      id = "MM-SCAV-EARN-005",
      name = "Ocean of Shells",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 5,
      points = 25,
      criteria = "Earn 75000 shells from scavenging ticks.",
      metric = "economy.work.totalEarned",
      threshold = "75000",
      tracking_source = "economy.work.totalEarned",
    },
    {
      id = "MM-SCAV-RECALL-005",
      name = "Micromanager Supreme",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 5,
      points = 25,
      criteria = "Manually recall scavenging 250 times.",
      metric = "stats.scavenge.manualRecalls",
      threshold = "250",
      tracking_source = "economy.stats.scavenge.manualRecalls",
    },
    {
      id = "MM-SCAV-START-005",
      name = "Endless Patrol",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 5,
      points = 25,
      criteria = "Start scavenging 300 times.",
      metric = "stats.scavenge.starts",
      threshold = "300",
      tracking_source = "economy.stats.scavenge.starts",
    },
    {
      id = "MM-SCAV-TICK-005",
      name = "Lifetime Tideworker",
      category = "Scavenging",
      subcategory = "Scavenging",
      tier = 5,
      points = 25,
      criteria = "Accumulate 20000 scavenging ticks.",
      metric = "economy.work.totalTicks",
      threshold = "20000",
      tracking_source = "economy.work.totalTicks",
    },
    {
      id = "MM-CHAL-COMP-001",
      name = "Challenge Accepted",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 1,
      points = 5,
      criteria = "Complete 1 challenge cards.",
      metric = "economy.challenges.completed",
      threshold = "1",
      tracking_source = "economy.challenges.completed",
    },
    {
      id = "MM-CHAL-RELOAD-001",
      name = "Fresh Card",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 1,
      points = 5,
      criteria = "Reload challenge cards 1 times.",
      metric = "stats.challenges.reloads",
      threshold = "1",
      tracking_source = "economy.stats.challenges.reloads",
    },
    {
      id = "MM-CHAL-COMP-002",
      name = "Card Crusher",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 2,
      points = 10,
      criteria = "Complete 10 challenge cards.",
      metric = "economy.challenges.completed",
      threshold = "10",
      tracking_source = "economy.challenges.completed",
    },
    {
      id = "MM-CHAL-RELOAD-002",
      name = "Reroll Regular",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 2,
      points = 10,
      criteria = "Reload challenge cards 10 times.",
      metric = "stats.challenges.reloads",
      threshold = "10",
      tracking_source = "economy.stats.challenges.reloads",
    },
    {
      id = "MM-CHAL-COMP-003",
      name = "Board Solver",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 3,
      points = 15,
      criteria = "Complete 50 challenge cards.",
      metric = "economy.challenges.completed",
      threshold = "50",
      tracking_source = "economy.challenges.completed",
    },
    {
      id = "MM-CHAL-RELOAD-003",
      name = "Board Curator",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 3,
      points = 15,
      criteria = "Reload challenge cards 50 times.",
      metric = "stats.challenges.reloads",
      threshold = "50",
      tracking_source = "economy.stats.challenges.reloads",
    },
    {
      id = "MM-CHAL-COMP-004",
      name = "Challenge Specialist",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 4,
      points = 20,
      criteria = "Complete 150 challenge cards.",
      metric = "economy.challenges.completed",
      threshold = "150",
      tracking_source = "economy.challenges.completed",
    },
    {
      id = "MM-CHAL-RELOAD-004",
      name = "Relentless Reloader",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 4,
      points = 20,
      criteria = "Reload challenge cards 100 times.",
      metric = "stats.challenges.reloads",
      threshold = "100",
      tracking_source = "economy.stats.challenges.reloads",
    },
    {
      id = "MM-CHAL-COMP-005",
      name = "Legendary Challenger",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 5,
      points = 25,
      criteria = "Complete 500 challenge cards.",
      metric = "economy.challenges.completed",
      threshold = "500",
      tracking_source = "economy.challenges.completed",
    },
    {
      id = "MM-CHAL-RELOAD-005",
      name = "Card Cyclone",
      category = "Challenges",
      subcategory = "Challenges",
      tier = 5,
      points = 25,
      criteria = "Reload challenge cards 250 times.",
      metric = "stats.challenges.reloads",
      threshold = "250",
      tracking_source = "economy.stats.challenges.reloads",
    },
  },
}
