Skip to content

P2E: add claimable reward ledger #92

@ilyar

Description

@ilyar

Source PRD: tasks/prd-full-play-to-earn.md
Parent epic: #86
PRD section: US-006

Description

Earned rewards need explicit claimable records with transparent status and idempotency.

Acceptance Criteria

  • Add claimable reward records with reward ID, account ID, campaign ID, pool ID, reward type, gross amount, net amount, currency/unit, status, expiration, and idempotency key.
  • Status values include pending, eligibility_review, claimable, claim_started, paid, rejected, expired, and canceled.
  • Claimable rewards are generated only from finalized campaign results or approved instant-reward rules.
  • Duplicate generation cannot create duplicate rewards for the same account/campaign/rule.
  • Reward records are append-only or have an event trail for all status changes.
  • Tests cover reward generation, idempotency, status transitions, expiration, and cancellation.

Constraints

  • Keep current paid PvP settlement as entry fee, not player-funded prize pool.
  • Do not make Season Points redeemable or refundable.
  • Keep payout/compliance/provider secrets backend-only.
  • Treat this as deferred future-phase work until mechanics/self-host production readiness is stable.

Notes

Reward claim status changes must be auditable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: backendServer-side services, APIs, reducers, and data mutationsdomain: economyELM/tELM balances, ledger, credits, debits, and rewardsdomain: operationsRunbooks, observability, incident handling, migration, and support flowspriority: highImportant for MVPstatus: deferredDeferred until the current active milestone is stabletype: featureNew capability or product improvement

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions