Mid-game DNP detection rules (basketball-only, gated by the watcher's
league filter):
'hard-flag': MIN === 0 AND game past Q1 (period >= 2). Player
hasn't seen the floor; the over is almost certainly cooked. The
verify card surfaces "Looks like a DNP — mark or dismiss."
'soft-flag': MIN < 5 in Q4 (period >= 4). Played sparingly,
possibly garbage time or load management. The card surfaces
"Low minutes — verify if this counts."
'clear': MIN >= 5 at any time. Whatever was flagged before, the
player is now playing — caller removes any existing entry.
'no-action': Q1, pre-game, post-game, or unparseable MIN. The
watcher is being called every 5 minutes and we don't want a Q1
sub rotation to flip the bet card.
The watcher's view filter (game_status='in_progress') gates this
to live games — we don't re-check gameState against a third source
of truth (leg.gameContext.state from parse-time would be stale).
gameState here is what the box-score's state field reports, the
server-side check that protects against between-tick state flips.
Mid-game DNP detection rules (basketball-only, gated by the watcher's league filter):
'hard-flag': MIN === 0 AND game past Q1 (period >= 2). Player hasn't seen the floor; the over is almost certainly cooked. The verify card surfaces "Looks like a DNP — mark or dismiss."
'soft-flag': MIN < 5 in Q4 (period >= 4). Played sparingly, possibly garbage time or load management. The card surfaces "Low minutes — verify if this counts."
'clear': MIN >= 5 at any time. Whatever was flagged before, the player is now playing — caller removes any existing entry.
'no-action': Q1, pre-game, post-game, or unparseable MIN. The watcher is being called every 5 minutes and we don't want a Q1 sub rotation to flip the bet card.
The watcher's view filter (
game_status='in_progress') gates this to live games — we don't re-checkgameStateagainst a third source of truth (leg.gameContext.state from parse-time would be stale).gameStatehere is what the box-score'sstatefield reports, the server-side check that protects against between-tick state flips.