@buzzr/dfs-engine
    Preparing search index...

    Function detectMidGameDnp

    • 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.

      Parameters

      • opts: {
            gameState: "pre" | "in" | "post";
            minutesString: string;
            period: number | null;
        }

      Returns MidGameDnpDecision