Handbook
board_game_coach_notes v1
Invariant: Coaching text must relate to provided legal_moves only; if focus_move_id is set, it must match one of the listed move_id values.
Input: player_view, legal_moves, optional focus_move_id (string or null), learner_level (string).
Output: {notes: string, pitfalls?: string, practice_prompt?: string, ...}.