Goal
The enabling step. After this, mustering is reachable for real users.
Context
Final step of the mustering series. Implementation on claude/game-mustering-state-ah1fw2 (PR #1235).
This must not land before step 7 (#1274). Turning mustering on for public games while installed native apps still run a bundle without the confirm UI would vacate seats that those players had no way to confirm.
Approach
GameCreateSerializer.validate coerces muster_required to true for non-private games (service/game/serializers.py), plus a backfill_muster_required data migration setting muster_required=True on every existing non-sandbox public game — service/game/migrations/0025_backfill_muster_required.py on the branch, renumbered off current main.
Tests: test_public_games_coerce_muster_required_on from TestGameCreateMusterRequired in service/game/tests/test_mustering.py.
Roughly 20 lines. Note that the backfill is the only part of the whole series that touches existing production rows, which is why it belongs in the step that owns the decision to turn the feature on.
Goal
The enabling step. After this, mustering is reachable for real users.
Context
Final step of the mustering series. Implementation on
claude/game-mustering-state-ah1fw2(PR #1235).This must not land before step 7 (#1274). Turning mustering on for public games while installed native apps still run a bundle without the confirm UI would vacate seats that those players had no way to confirm.
Approach
GameCreateSerializer.validatecoercesmuster_requiredto true for non-private games (service/game/serializers.py), plus abackfill_muster_requireddata migration settingmuster_required=Trueon every existing non-sandbox public game —service/game/migrations/0025_backfill_muster_required.pyon the branch, renumbered off currentmain.Tests:
test_public_games_coerce_muster_required_onfromTestGameCreateMusterRequiredinservice/game/tests/test_mustering.py.Roughly 20 lines. Note that the backfill is the only part of the whole series that touches existing production rows, which is why it belongs in the step that owns the decision to turn the feature on.