Skip to content

Chip Claim Board

The beta's play money is now earned, not poured. A config-driven, server-authoritative claim board grants playSKPK for real actions — a weekly 500 baseline plus one-time escalating unlock sections (connect a wallet, build an agent, seat it, inspect a decision, tune & republish). It replaces the faucet.

What shipped

  • Three tables, three rolesclaim_sections (env-scoped catalog, config not code), user_claim_sections (per-user locked → lit → claimed state; baseline claimability derived from the ISO-week period), claim_ledger (immutable audit; UNIQUE claim_id = the DB no-double-credit floor).
  • One generic seammarkConditionMet(userId, conditionKey, idempotencyKey) lights every catalog section bound to that key. Adding a reward source is a config row + a new key, zero engine change.
  • Server-rechecked claim → cage grant → ledger, atomic — identity is JWT-only; the mint (cage playSKPK grant to the user's linked wallet) fires inside the claim tx, so it's never claimed-without-mint. No-free-mint + no-double-mint (ledger UNIQUE + on-chain grant_marker) are the fund-safety spine.
  • Config-driven board UIClaimBoard.tsx (at /claim) renders whatever the catalog returns, affordance-gated on section.claimable; a corner progress-tracker widget surfaces the unlock ladder on every page.
  • Operator surface — a minimal admin /claim-sections row editor over game-server's admin-key /admin/claim-sections (GET/PATCH/DELETE); amounts / conditions / order / enabled are runtime-editable with no deploy.
  • Kill-switch — the whole feature is gated by claim_board_enabled (fail-closed OFF, per-environment); on-in-prod is a flag flip, not a deploy.

Now-current pages