- POST /hands: store a structured hand from the recorder; normalize_structured()
(via store_hand_history) is the shape authority, so the client stays best-effort.
Enriches villain dossiers from the recorded players, same as the parser path.
Verified live: best-effort body -> normalized (version, completeness, hero sync).
- _session_villains: surface each player's latest seat so the recorder can
auto-place known players on the table.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>