Final-review follow-ups: - BuildOpponentTurnStart's doc comment claimed the v1 client sits indefinitely — true before the loop closure, false after. Updated to describe the pair with BuildOpponentTurnEnd. - TypedBodyWireShapeTests had no coverage for BuildOpponentTurnEnd; added the literal-JSON test so a future JsonPropertyName rename on TurnEndBody is caught.