This runbook covers TODOS.phase-72.72.12.2.12: a player compensation system to
grant items and currency to affected players after bugs or outages.
The service package is @v2/player-compensation-service at
apps/v2/player-compensation-service/. Its contract is
V2/ue/Content/V2/LiveOps/PlayerCompensation_V2_Contract.json, and the focused
gate is V2/ue/Tools/check-v2-player-compensation.py.
Runtime Contract#
Primary APIs:
buildV2PlayerCompensationSurfaceplanV2PlayerCompensationGrantsapplyV2PlayerCompensationGrant
Service endpoints:
GET /v2/live-ops/compensation/campaignsPOST /v2/live-ops/compensation/campaigns/{campaignId}/grants/planPOST /v2/live-ops/compensation/campaigns/{campaignId}/grants/apply
Campaigns are tied to an incidentId, reason, affected-player evidence, grant
bundle, and approval records. The supported reasons are:
bugoutage
The grant bundle must include item grants and currency grants. Item grants carry
catalogRef and entitlementRef metadata, while currency grants carry a
currency id and positive amount. Affected-player rows must include an
accountIdHash, affected window id, evidence reference, severity, and affected
time span.
Grant Flow#
- Live ops creates a compensation campaign after a bug or outage incident.
- Incident evidence selects affected players and records the affected window.
- An approver signs the campaign before grants are planned.
planV2PlayerCompensationGrantsbuilds idempotent item and currency grants.applyV2PlayerCompensationGrantapplies each grant to the account ledger and skips already processed grant ids.
The service is server-authoritative and keeps requiresClientPatch: false.
Required Gates#
player-compensation-packageplayer-compensation-affected-playersplayer-compensation-bug-outageplayer-compensation-item-grantsplayer-compensation-currency-grantsplayer-compensation-idempotencyplayer-compensation-validationplayer-compensation-ci-wired
Verification#
pnpm --filter @v2/player-compensation-service test
pnpm --filter @v2/player-compensation-service typecheck
pnpm --filter @v2/player-compensation-service lint
pnpm --filter @v2/player-compensation-service build
python3 V2/ue/Tools/check-v2-player-compensation.py