← All findingssource · memory/project_wnba_active_gate_blog_generator.md
The WNBA/multi-sport pick path was recommending injured (Out) players — caught when an OUT Napheesa Collier got a graded WNBA pick on the 2026-06-21 MIN slate.
Root cause: the active-status gate (feedback_active_tonight_gate = FIX 5) lives in debate-v2's orchestrator and only runs for NBA. The sport-agents blog_generator path (WNBA/MLB/etc.) bypasses that orchestrator, so nothing filtered injured players before prop generation. The injury data was present all along (snapshot injuries.home_injuries[] carries player_id + status; the player block is keyed by the same player_id).
Fix (sport-agents fd1ad23, pushed main → auto-deploys): filter at the SOURCE in core/hydrator_client.py::extract_player_bundles — the shared point where the player dict is built from the snapshot. Build inactive_ids from home_injuries+away_injuries where status ∈ {out,doubtful,questionable}, drop those player_ids from players_data. id-based, no fuzzy name matching. core/blog_generator.py just got a pointer comment (an earlier name-based filter there was a no-op because the WNBA player bundle from extract_player_bundles has no injuries key — only the separate extract_team_bundle does).
Verified end-to-end (python3.13 -m core.blog_generator --league wnba --date 2026-06-21 --model haiku --game-ids 1022600121): log Active gate: dropped 5 Out/Doubtful/Questionable player(s) from MIN bundle, 0 Collier mentions, slate still published 5 props. Note: grading-service's nightly board (bet_clv/scout_ml source) never had Collier — she appeared only in the debate-v2 narrative preview (best_bets/prop_picks), which is what this fixes.