This runbook covers TODOS.phase-72.72.12.2.11: a patch notes system with
structured patch notes for balance, bug fixes, and new content displayed
in-game.
The service package is @v2/patch-notes-service at
apps/v2/patch-notes-service/. Its contract is
V2/ue/Content/V2/LiveOps/PatchNotes_V2_Contract.json, and the focused gate is
V2/ue/Tools/check-v2-patch-notes.py.
Runtime Contract#
Primary APIs:
buildV2PatchNotesSurfacebuildV2PatchNotesInGamePayload
Service endpoints:
GET /v2/live-ops/patch-notesGET /v2/live-ops/patch-notes/{patchVersion}GET /v2/live-ops/patch-notes/{patchVersion}/in-game
Each release is keyed by patchVersion and locale, includes an ISO
publishedAt, a minClientVersion, and structured entries. The required
categories are:
balancebug-fixesnew-content
Every entry includes an entryId, category, title, body, impacted systems, and
positive displayPriority. The service rejects duplicate release keys,
duplicate entry ids, missing categories, invalid timestamps, invalid locales,
and missing impacted systems before the payload can be displayed in-game.
In-Game Display#
buildV2PatchNotesInGamePayload returns a compact payload for the game client:
- category summaries for balance, bug fixes, and new content
entriesByCategorygrouped by the structured categorydisplayCardssorted by category and prioritystructuredPatchNotes: truedisplayedInGame: truerequiresClientPatch: false
The game client should show this payload from
GET /v2/live-ops/patch-notes/{patchVersion}/in-game. Missing patch versions or
locales should fail closed and leave the previous patch notes card in place.
Required Gates#
patch-notes-packagepatch-notes-structuredpatch-notes-balancepatch-notes-bug-fixespatch-notes-new-contentpatch-notes-in-game-displaypatch-notes-validationpatch-notes-ci-wired
Verification#
pnpm --filter @v2/patch-notes-service test
pnpm --filter @v2/patch-notes-service typecheck
pnpm --filter @v2/patch-notes-service lint
pnpm --filter @v2/patch-notes-service build
python3 V2/ue/Tools/check-v2-patch-notes.py