← All findingssource · memory/feedback_active_tonight_gate.md
STATUS: SHIPPED (REVISED). FIX 5 went through two iterations:
- v1 (2026-05-21, commit
dbfe7e9): joinedsnap.Injuriesonly. SetActiveStatusfor designated players (Out/D/Q/P/GTD), left healthy starters with the field absent (omitemptydropped it). - v2 (2026-06-09, commit
bf97c5fon main): 4-step resolution: seed-unknown→ lineup STARTING/ROTATION → live-boxscore Minutes>0 → injury overlay.omitemptyremoved. Field always present with one of 7 enumerated values:active|unknown|out|doubtful|questionable|probable|gtd.
Why the v1→v2 revision was needed: NYK@SAS Finals G3 (2026-06-08).
Brunson/Hart/Castle/Champagnie were all STARTING in snap.Lineups and
on the floor in snap.LiveBoxscore, but their active_status was field-
absent because injury-only join had no row to write. sport-agents debate
discarded all 4 with "insufficient prop_diagnostic data"; MCP enrich_pick
returned [unflagged]. The wire couldn't distinguish "confirmed active"
from "we don't know" — both serialized as field-absent. v2 closes that gap.
Hard-gate semantics preserved: Out/Doubtful/Questionable still overlay
last in step 4 and still flip LineEdges.Quality="inactive_player" via
the existing isHardGateStatus check in attachDiagnostic.
Known WNBA limitation (separate fix): WNBA snap.Lineups returns
LineupType=PROJECTED from roster-fallback (lineup-service can't get
real WNBA confirmed lineups), so step 2 doesn't promote anyone and every
WNBA player stays "unknown" pre-tip. Fix lives in lineup-service WNBA
ingestion, not data-hydrator.
On 2026-05-21 I delivered Fox OVER 14.5 points as a "lockdown-clean" pick.
Fox was confirmed OUT (not Questionable — fully inactive) at tip. The snapshot
DID flag him as Questionable in injuries.away_injuries 24h earlier — I just
never read the injury section, only the 4-fix flags object. User caught it:
"De'Aaron fox is not playing, how come u don't have up to date data?"
Why: the 4 methodology fixes (role-anchor, line-vs-mean, MIN-SRC, recent-vs-baseline)
all live under prop_diagnostic.stats[stat].flags — a structured per-stat
sub-object. The injury status lives under snapshot.injuries.{home,away}_injuries
— totally separate path. The 4 flags can be "clean" while the player has
Questionable/Doubtful/Out status. There is no FIX 5 = active-tonight gate.
How to apply: BEFORE recommending any prop:
- Open
snapshot.injuries.{home,away}_injuriesand check the player's status. - Any status of
Out/Doubtful/Questionableis a hard drop — do not surface as a pick, even if the 4 lockdown flags are clean. (Questionable converts to Out the majority of the time on game-day in playoffs.) - Cross-check with a live external source (RotoWire
nba-lineups.php, official inactive list) — data-hydrator'ssnapshot.injuriesis itself subject to the cache staleness in feedback_cache_ttl_bug. - Long-term: ship lockdown FIX 5 = active-tonight hard gate, surfaced as
flags.active_status = "out" | "questionable" | "doubtful" | "probable" | "active"computed from the joined injuries section, with PASS-quality enforced when non-active. Then the existingqualityfield carries it through automatically.
See also: project_methodology_lockdown, feedback_betting_discipline, feedback_cache_ttl_bug.