{"provider_key":"the_odds_api","summary":{"provider_key":"the_odds_api","provider_enabled":true,"counts":{"provider_sports":1,"supported_sports":1,"active_supported_sports":1,"unsupported_sports":0,"provider_events":1,"canonical_events":1,"active_provider_lines":6,"inactive_provider_lines":0,"open_pickable_lines":6,"pickable_line_sources":6,"active_pickable_line_sources":6,"active_option_sets":14,"stale_active_option_sets":0,"option_set_regeneration_periods":14,"option_set_regeneration_current":14,"option_set_regeneration_recommended":0,"option_set_regeneration_missing":0,"option_set_regeneration_stale":0,"option_set_regeneration_rules_changed":0,"option_set_regeneration_inventory_changed":0,"provider_requests":2,"failed_provider_requests":0,"recorded_request_cost":0,"inventory_job_runs":11,"failed_inventory_job_runs":0,"unresolved_mapping_candidates":0,"needs_review_picks":0,"provider_scores":0,"settled_provider_scores":0,"provider_stat_results":0,"canonical_event_results":0,"settled_canonical_event_results":0,"pending_score_refresh_targets":0,"pending_score_refresh_picks":0,"duplicate_pickable_source_groups":0,"duplicate_pickable_source_lines":0},"cost_window":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:36.936058Z","request_count_24h":2,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0,"unresolved_failure_groups_24h":[],"request_cost_24h":0,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"request_count_7d":2,"failed_request_count_7d":0,"unresolved_failed_request_count_7d":0,"unresolved_failure_groups_7d":[],"request_cost_7d":0,"latest_request_finished_at":"2026-06-05T16:10:55.436542Z","latest_request_type":"odds","latest_request_success":true,"latest_quota_remaining":null,"latest_quota_used":null,"latest_request_cost":0,"latest_objects_returned":1,"latest_object_limit_remaining":null,"latest_request_limit_remaining":null,"latest_response_notice":null,"latest_next_cursor":null},"sports_coverage":[{"provider_sport_key":"basketball_nba","canonical_sport_code":"basketball","canonical_league_code":"basketball_nba","mapping_status":"mapped","mapping_gap_reasons":[],"sport_group":"Basketball","sport_title":"NBA","coverage_status":"stocked","coverage_gap_reasons":[],"provider_events":1,"active_provider_lines":6,"open_pickable_lines":6,"provider_scores":0,"settled_provider_scores":0,"provider_stat_results":0,"canonical_event_results":0,"settled_canonical_event_results":0,"pending_score_refresh_picks":0,"pending_score_refresh_events":0,"unresolved_mapping_candidates":0,"unresolved_event_mapping_candidates":0,"last_event_refresh":null,"last_odds_refresh":"2026-06-05T16:10:55.436542Z","last_score_refresh":null,"latest_event_request":null,"latest_odds_request":null,"latest_score_request":null,"recommended_action":"none","recommended_action_reason":"Sport has open PickCenter pickable lines.","recommended_command":null}],"recent_job_runs":[{"id":"fccfaa55-1d48-420a-a6ee-ce40b812c4b0","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T18:30:37.519548Z","finished_at":"2026-06-05T18:30:38.320204Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:30:37.642347+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T18:30:37.642347+00:00","commence_time_to":"2026-06-19T18:30:37.642347+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T18:30:37.642347+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T18:30:37.642347+00:00","commence_time_to":"2026-06-19T18:30:37.642347+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:30:38.142541+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:30:38.142541+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null},{"id":"9475aaaf-4be0-4cec-ba27-9c5b4eafc29c","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T18:15:39.962374Z","finished_at":"2026-06-05T18:15:40.669069Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:15:40.089126+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T18:15:40.089126+00:00","commence_time_to":"2026-06-19T18:15:40.089126+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T18:15:40.089126+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T18:15:40.089126+00:00","commence_time_to":"2026-06-19T18:15:40.089126+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:15:40.559020+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:15:40.559020+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null},{"id":"2affa1be-908f-4e86-ae26-e042be280f21","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T18:00:39.090972Z","finished_at":"2026-06-05T18:00:39.834143Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:00:39.213940+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T18:00:39.213940+00:00","commence_time_to":"2026-06-19T18:00:39.213940+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T18:00:39.213940+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T18:00:39.213940+00:00","commence_time_to":"2026-06-19T18:00:39.213940+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:00:39.714033+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:00:39.714033+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null},{"id":"1561a741-3451-4f67-8e98-5b345be40050","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T17:45:36.999936Z","finished_at":"2026-06-05T17:45:37.718778Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T17:45:37.133851+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T17:45:37.133851+00:00","commence_time_to":"2026-06-19T17:45:37.133851+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T17:45:37.133851+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T17:45:37.133851+00:00","commence_time_to":"2026-06-19T17:45:37.133851+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T17:45:37.592905+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T17:45:37.592905+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null},{"id":"c56d0f81-78cc-46ea-bbb2-76f9d24b1a75","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T17:30:38.683405Z","finished_at":"2026-06-05T17:30:39.358048Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T17:30:38.817255+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T17:30:38.817255+00:00","commence_time_to":"2026-06-19T17:30:38.817255+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T17:30:38.817255+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T17:30:38.817255+00:00","commence_time_to":"2026-06-19T17:30:38.817255+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T17:30:39.252608+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T17:30:39.252608+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null},{"id":"612bd624-b200-4e7a-8276-f48ae991d221","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T17:15:40.390214Z","finished_at":"2026-06-05T17:15:41.021281Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T17:15:40.556741+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T17:15:40.556741+00:00","commence_time_to":"2026-06-19T17:15:40.556741+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T17:15:40.556741+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T17:15:40.556741+00:00","commence_time_to":"2026-06-19T17:15:40.556741+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T17:15:40.927573+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T17:15:40.927573+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null},{"id":"ada30290-288a-496a-8e7c-62ed7df2a88e","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T17:00:38.475581Z","finished_at":"2026-06-05T17:00:39.139712Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T17:00:38.646714+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T17:00:38.646714+00:00","commence_time_to":"2026-06-19T17:00:38.646714+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T17:00:38.646714+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T17:00:38.646714+00:00","commence_time_to":"2026-06-19T17:00:38.646714+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T17:00:39.043428+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T17:00:39.043428+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null},{"id":"7e542bb3-6c4d-4b2b-ad75-6aa4db2f9154","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T16:45:40.250999Z","finished_at":"2026-06-05T16:45:40.947570Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T16:45:40.381344+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T16:45:40.381344+00:00","commence_time_to":"2026-06-19T16:45:40.381344+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T16:45:40.381344+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T16:45:40.381344+00:00","commence_time_to":"2026-06-19T16:45:40.381344+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T16:45:40.841291+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T16:45:40.841291+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null}]},"provider_inventory_summary":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:41.781552Z","uses_live_provider_calls":false,"provider":{"registered":true,"enabled":true,"active_supported_sports":1,"supported_sports":1,"provider_sports":1},"canonical_inventory":{"provider_events":1,"canonical_events":1,"active_provider_lines":6,"inactive_provider_lines":0,"open_pickable_lines":6,"pickable_line_sources":6,"active_pickable_line_sources":6,"active_option_sets":14,"stale_active_option_sets":0,"option_set_regeneration_recommended":0,"option_set_regeneration_missing":0,"option_set_regeneration_stale":0,"option_set_regeneration_inventory_changed":0},"canonical_inventory_health":{"status":"healthy","uses_live_provider_calls":false,"thresholds":{"source_stale_cutoff":"2026-06-05T06:39:41.781552Z","source_max_age_seconds":43200,"lock_risk_cutoff":"2026-06-05T19:09:41.781552Z","close_to_lock_refresh_window_seconds":1800},"totals":{"open_eligible_lines":6,"open_eligible_events":1,"sport_count":1,"league_count":1,"market_count":3,"source_stale_lines":0,"serveable_source_stale_options":0,"serveable_source_stale_pickable_lines":0,"serveable_source_stale_events":0,"background_source_stale_lines":0,"near_lock_lines":0,"serveable_near_lock_options":0,"serveable_near_lock_pickable_lines":0,"serveable_near_lock_events":0,"background_near_lock_lines":0,"active_open_options":84,"serveable_open_options":84,"materialized_open_pickable_lines":6,"serveable_open_pickable_lines":6,"unmaterialized_open_pickable_lines":0,"active_option_sets":14,"serveable_option_sets":14,"max_source_age_seconds":8926,"min_seconds_to_lock":19873},"issue_counts":{},"market_counts":{"h2h":2,"spreads":2,"totals":2},"top_sports":[{"sport_code":"basketball","sport_title":"Basketball","open_eligible_lines":6,"open_eligible_events":1,"league_count":1,"next_commence_time":"2026-06-06T00:10:55Z","market_counts":{"h2h":2,"spreads":2,"totals":2}}],"recommended_actions":[]},"active_board_event_odds":{"limit":10,"max_estimated_request_cost":30,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"retry_backoff_targets":0,"retry_review_targets":0,"selected_estimated_request_cost":0,"deduped_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"deduped_full_market_estimated_request_cost":0,"execution_manifest":{"uses_live_provider_calls":false,"selected_target_count":0,"refreshable_target_count":0,"estimated_request_cost":0,"full_market_estimated_request_cost":0,"request_contracts_by_provider":{},"fallback_request_contract_providers":[],"request_contract_gaps_by_provider":{},"normalization_contracts_by_provider":{},"fallback_normalization_contract_providers":[],"normalization_contract_gaps_by_provider":{},"live_execution_blockers":[],"dry_run_api_requests":[],"execute_templates":[],"operator_commands":[],"execute_command_templates":[],"selected_provider_events":[],"live_provider_calls_require_execute_and_approval":false,"approval_policy":"Run each dry_run_api_request first, then execute only the corresponding execute_template after reviewing the dry-run approval hash and provider event identity.","batch_execute_api":null},"execution_handoff":{"dry_run_api_request":{"method":"POST","path":"/inventory/operations/active-board-event-odds-refresh","body":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320,"execute":false},"context":{"operation":"active_board_event_odds_refresh","selected_target_count":0,"skipped_target_count":0,"provider_events":[],"max_daily_request_credits":320,"max_estimated_request_cost":30,"estimated_request_cost":0,"worklist_totals":{"competitions":2,"periods_scanned":14,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"retry_backoff_targets":0,"retry_review_targets":0,"selected_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"deduped_estimated_request_cost":0,"deduped_full_market_estimated_request_cost":0,"skipped_unavailable_slots":6},"filters":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320},"request_contracts_by_provider":{},"normalization_contracts_by_provider":{},"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request_template":{"method":"POST","path":"/inventory/operations/active-board-event-odds-refresh","body":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320,"execute":true,"rebuild_local":true,"approved_provider_events":"<from dry-run approval.approved_provider_events>","approved_plan_hash":"<from dry-run approval.approved_plan_hash>"},"context":{"operation":"active_board_event_odds_refresh","selected_target_count":0,"skipped_target_count":0,"provider_events":[],"max_daily_request_credits":320,"max_estimated_request_cost":30,"estimated_request_cost":0,"worklist_totals":{"competitions":2,"periods_scanned":14,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"retry_backoff_targets":0,"retry_review_targets":0,"selected_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"deduped_estimated_request_cost":0,"deduped_full_market_estimated_request_cost":0,"skipped_unavailable_slots":6},"filters":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320},"request_contracts_by_provider":{},"normalization_contracts_by_provider":{},"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"request_contracts_by_provider":{},"normalization_contracts_by_provider":{}},"can_execute_live":false,"live_execution_blockers":[],"request_contracts_by_provider":{},"fallback_request_contract_providers":[],"request_contract_gaps_by_provider":{},"normalization_contracts_by_provider":{},"fallback_normalization_contract_providers":[],"normalization_contract_gaps_by_provider":{},"dry_run_command":"uv run python -m app.jobs.inventory active-board-event-odds-refresh --provider-key the_odds_api --limit 10 --max-estimated-request-cost 30 --limit-per-slot 500 --max-daily-request-credits 320 --json","execute_command_template":null,"execute_requires_dry_run_approval":false,"execution_uses_live_provider_calls":false},"selected_target_sample":[],"selected_urgency":{"status":"none","selected_targets":0,"urgent_targets":0,"source_stale_targets":0,"close_to_lock_targets":0,"proactive_targets":0,"no_reason_targets":0,"reason_counts":{},"max_source_age_seconds":null,"min_seconds_to_lock":null},"daily_remaining_partial_batch":{"available":false,"max_estimated_request_cost":320,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"selected_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"execution_manifest":{},"execution_handoff":{},"selected_target_sample":[],"selected_urgency":{"status":"none","selected_targets":0,"urgent_targets":0,"source_stale_targets":0,"close_to_lock_targets":0,"proactive_targets":0,"no_reason_targets":0,"reason_counts":{},"max_source_age_seconds":null,"min_seconds_to_lock":null}},"next_recovery_partial_batch":{"available":false,"available_at":null},"latest_refresh_job":null},"market_gap_summary":{"candidate_sports":0,"returned_items":0,"live_action_sports":0,"local_action_sports":0,"actionable_local_sports":0,"passive_wait_sports":0,"selected_event_refresh_sports":0,"selected_odds_refresh_sports":0,"coverage_limitation_status":"clear","coverage_limitation_passive_wait_sports":0,"missing_core_market_counts":{"h2h":0,"spreads":0,"totals":0},"recommended_operator_action":"No passive provider market-coverage waits are present.","uses_live_provider_calls":false},"quota":{"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"latest_quota_remaining":null,"latest_request_cost":0,"latest_request_type":"odds","latest_request_success":true,"latest_request_finished_at":"2026-06-05T16:10:55.436542Z","request_count_24h":2,"request_cost_24h":0,"request_cost_7d":0,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0},"latest_job_run":{"id":"fccfaa55-1d48-420a-a6ee-ce40b812c4b0","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T18:30:37.519548Z","finished_at":"2026-06-05T18:30:38.320204Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:30:37.642347+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T18:30:37.642347+00:00","commence_time_to":"2026-06-19T18:30:37.642347+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T18:30:37.642347+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T18:30:37.642347+00:00","commence_time_to":"2026-06-19T18:30:37.642347+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:30:38.142541+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:30:38.142541+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null},"latest_active_board_event_odds_refresh_job":null,"operator_next_action":{"key":"monitor","label":"Monitor inventory","uses_live_provider_calls":false,"reason":"Stored canonical inventory is present and no immediate active-board event odds batch is selected."}},"readiness":{"provider_key":"the_odds_api","status":"degraded","ready_for_picks":true,"blocker_count":0,"warning_count":1,"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"uses_live_provider_calls":true,"can_execute_live":true,"live_execution_blockers":[],"checks":[{"key":"provider_enabled","status":"ok","severity":"blocker","message":"Provider is enabled.","metadata":{"provider_key":"the_odds_api"}},{"key":"active_supported_sports","status":"ok","severity":"blocker","message":"1 active supported provider sports.","metadata":{"active_supported_sports":1}},{"key":"provider_inventory","status":"ok","severity":"blocker","message":"1 provider events and 6 active lines.","metadata":{"provider_events":1,"active_provider_lines":6}},{"key":"pickable_inventory","status":"ok","severity":"blocker","message":"6 open PickCenter pickable lines.","metadata":{"open_pickable_lines":6,"pickable_line_sources":6,"active_pickable_line_sources":6}},{"key":"provider_integration_boundary","status":"ok","severity":"info","message":"Product-facing pick and competition modules depend on PickCenter inventory boundaries.","metadata":{"monitored_modules":["modules/picks","modules/competitions"],"forbidden_markers":["app.modules.providers.the_odds_api","app.modules.providers.registry","TheOddsApi","ProviderResponse","ProviderUsage","make_provider_client","THE_ODDS_API","the_odds_api_","odds_api_key_for_jobs","odds_api_markets_list"],"scanned_files":10,"violation_count":0,"violations":[],"missing_modules":[],"uses_live_provider_calls":false}},{"key":"option_sets","status":"ok","severity":"info","message":"14 of 14 current competition periods have current option sets.","metadata":{"active_option_sets":14,"stale_active_option_sets":0,"current_competition_periods":14,"current_option_set_periods":14,"stale_current_option_set_periods":0,"option_set_regeneration_periods":14,"option_set_regeneration_recommended":0,"option_set_regeneration_missing":0,"option_set_regeneration_stale":0,"option_set_regeneration_rules_changed":0,"option_set_regeneration_inventory_changed":0,"recommended_command":null,"recommended_api":null,"regenerate_option_sets_api_request":null,"local_maintenance_api_request":null,"uses_live_provider_calls":false}},{"key":"pick_board_contracts","status":"ok","severity":"info","message":"14 selectable active pick board periods.","metadata":{"competitions":2,"periods":14,"selectable_periods":14,"unavailable_periods":0,"missing_option_sets":0,"stale_option_sets":0,"missing_marquee_periods":6,"open_options":84,"events":14,"event_odds_refresh_target_periods":0,"event_odds_refresh_targets":0,"event_odds_refresh_estimated_request_cost":0,"recommended_command":null,"recommended_api":null,"regenerate_option_sets_api_request":null,"event_odds_refresh_targets_api_request":null,"active_board_event_odds_refresh":null,"uses_live_provider_calls":false}},{"key":"canonical_cleanup","status":"ok","severity":"warning","message":"No canonical cleanup candidates found.","metadata":{"duplicate_team_candidates":0,"duplicate_event_candidates":0,"team_candidates_with_event_duplicates":0,"event_provider_event_mappings":0,"event_pickable_lines":0,"event_pick_options":0,"event_submitted_picks":0,"event_marquee_events":0,"worklist_api":"GET /inventory/operations/canonical-cleanup-worklist","uses_live_provider_calls":false}},{"key":"recent_job_runs","status":"ok","severity":"warning","message":"No recent inventory job failures.","metadata":{"recent_failed_job_runs":0,"recent_actionable_failed_job_runs":0,"recent_approval_gate_rejections":0}},{"key":"provider_request_failures","status":"ok","severity":"warning","message":"No unresolved provider request failures in the last 24 hours.","metadata":{"failed_provider_requests":0,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0,"unresolved_failure_groups_24h":[],"failed_request_count_7d":0,"unresolved_failed_request_count_7d":0,"unresolved_failure_groups_7d":[],"latest_request_success":true,"latest_request_type":"odds"}},{"key":"mapping_candidates","status":"ok","severity":"warning","message":"No unresolved provider mapping candidates.","metadata":{"unresolved_mapping_candidates":0}},{"key":"score_backlog","status":"ok","severity":"warning","message":"No pending score refresh targets or review picks.","metadata":{"pending_score_refresh_targets":0,"pending_score_refresh_picks":0,"needs_review_picks":0}},{"key":"duplicate_pickable_sources","status":"ok","severity":"warning","message":"No duplicate pickable source groups.","metadata":{"duplicate_pickable_source_groups":0,"duplicate_pickable_source_lines":0}},{"key":"provider_quota","status":"ok","severity":"warning","message":"Latest provider quota signal is sufficient or unavailable.","metadata":{"request_cost_24h":0,"request_cost_7d":0,"latest_quota_remaining":null,"selected_odds_refresh_estimated_credits":0,"quota_constrained_odds_targets":0}},{"key":"refresh_policy","status":"warning","severity":"warning","message":"Refresh policy has selected provider or score work.","metadata":{"due":true,"sports":0,"events":1,"odds":0,"scores":0,"skipped_odds":0,"selected_refresh_work":1,"skipped_refresh_work":0}}],"counts":{"provider_sports":1,"supported_sports":1,"active_supported_sports":1,"unsupported_sports":0,"provider_events":1,"canonical_events":1,"active_provider_lines":6,"inactive_provider_lines":0,"open_pickable_lines":6,"pickable_line_sources":6,"active_pickable_line_sources":6,"active_option_sets":14,"stale_active_option_sets":0,"option_set_regeneration_periods":14,"option_set_regeneration_current":14,"option_set_regeneration_recommended":0,"option_set_regeneration_missing":0,"option_set_regeneration_stale":0,"option_set_regeneration_rules_changed":0,"option_set_regeneration_inventory_changed":0,"provider_requests":2,"failed_provider_requests":0,"recorded_request_cost":0,"inventory_job_runs":11,"failed_inventory_job_runs":0,"unresolved_mapping_candidates":0,"needs_review_picks":0,"provider_scores":0,"settled_provider_scores":0,"provider_stat_results":0,"canonical_event_results":0,"settled_canonical_event_results":0,"pending_score_refresh_targets":0,"pending_score_refresh_picks":0,"duplicate_pickable_source_groups":0,"duplicate_pickable_source_lines":0},"cost_window":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:37.151117Z","request_count_24h":2,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0,"unresolved_failure_groups_24h":[],"request_cost_24h":0,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"request_count_7d":2,"failed_request_count_7d":0,"unresolved_failed_request_count_7d":0,"unresolved_failure_groups_7d":[],"request_cost_7d":0,"latest_request_finished_at":"2026-06-05T16:10:55.436542Z","latest_request_type":"odds","latest_request_success":true,"latest_quota_remaining":null,"latest_quota_used":null,"latest_request_cost":0,"latest_objects_returned":1,"latest_object_limit_remaining":null,"latest_request_limit_remaining":null,"latest_response_notice":null,"latest_next_cursor":null},"refresh_policy_due":{"due":true,"sports":0,"events":1,"odds":0,"scores":0,"skipped_odds":0},"refresh_policy_skipped_targets":{"total_skipped_target_count":0,"components":{"events":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"odds":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"scores":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]}},"daily_credit_recovery":null}},"breadth_summary":{"provider_key":"the_odds_api","provider_enabled":true,"generated_at":"2026-06-05T18:39:38.082380Z","filters":{"min_american_odds":null,"max_american_odds":null,"lookahead_days":14,"uses_provider_sport_lookahead_overrides":false,"provider_sport_lookahead_days":{}},"totals":{"provider_sports":1,"active_supported_sports":1,"stocked_sports":1,"empty_sports":0,"unsupported_sports":0,"lines_not_pickable_sports":0,"provider_lines":6,"active_provider_lines":6,"inactive_provider_lines":0,"open_pickable_lines":6,"eligible_line_count":6},"reason_counts":{"eligible_open_pickable":6},"top_reason_counts":[{"reason":"eligible_open_pickable","lines":6}],"recommended_action_counts":{"none":1},"worklist":[],"sports":[{"provider_sport_key":"basketball_nba","sport_title":"NBA","active":true,"pickcenter_supported":true,"has_outrights":false,"coverage_status":"stocked","coverage_gap_reasons":[],"mapping_status":"mapped","mapping_gap_reasons":[],"latest_event_request":null,"latest_odds_request":{"id":"9b498720-de2e-445d-824d-dc1d4a0065f1","inventory_job_run_id":null,"request_type":"odds","markets":"h2h,spreads,totals","regions":"us","bookmakers":null,"request_scope_json":{"provider_sport_key":"basketball_nba","provider_league_key":"basketball_nba","canonical_sport_code":"basketball","canonical_league_code":"basketball_nba","markets":"h2h,spreads,totals","regions":"us"},"success":true,"status_code":200,"request_cost":0,"quota_remaining":null,"objects_returned":1,"line_snapshots":6,"finished_at":"2026-06-05T16:10:55.436542Z","error_code":null,"error_message":null},"latest_score_request":null,"provider_events":1,"active_provider_lines":6,"open_pickable_lines":6,"market_coverage_status":"core_markets_complete","available_core_markets":["h2h","spreads","totals"],"missing_core_markets":[],"provider_line_count":6,"eligible_line_count":6,"eligibility_reason_counts":{"eligible_open_pickable":6},"lookahead_policy":null,"primary_blocker":null,"suggested_operator_action":"none","suggested_operator_action_reason":"Sport has open PickCenter pickable lines.","suggested_command":null,"suggested_api":null,"suggested_api_request":null}]},"lookahead_policy_recommendation":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:38.343496Z","uses_live_provider_calls":false,"filters":{"min_american_odds":null,"max_american_odds":null,"lookahead_days":14,"max_recommended_lookahead_days":null,"limit":25,"target":"all_currently_stored_future_provider_lines"},"totals":{"recommended_sports":0,"candidate_sports":0,"blocked_provider_lines":0,"omitted_candidate_sports":0},"provider_sport_lookahead_days":{},"env":{"name":"INVENTORY_PROVIDER_SPORT_LOOKAHEAD_DAYS","value":"","assignment":"INVENTORY_PROVIDER_SPORT_LOOKAHEAD_DAYS=''"},"local_rebuild_command":null,"api_request":{"method":"POST","path":"/inventory/operations/local-inventory-rebuild","body":{"provider_key":"the_odds_api","lookahead_days":14,"provider_sport_lookahead_days":{},"generation_reason":"lookahead_policy_recommendation"},"context":{"operation":"local_inventory_rebuild","provider_key":"the_odds_api","generation_reason":"lookahead_policy_recommendation","lookahead_days":14,"provider_sport_lookahead_days":{},"rebuild_scope":"stored_provider_inventory_to_pickcenter_pickables","provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"uses_live_provider_calls":false},"uses_live_provider_calls":false},"sports":[]},"refresh_yield":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:38.345412Z","window_hours":168,"totals":{"request_count":2,"successful_request_count":2,"failed_request_count":0,"request_cost":0,"objects_returned":2,"provider_sport_count":1,"provider_events":1,"active_provider_lines":6,"open_pickable_lines":6,"null_sport_request_count":1,"null_sport_request_cost":0,"open_pickable_lines_per_credit":null,"active_lines_per_credit":null,"provider_events_per_credit":null,"objects_returned_per_credit":null},"sports":[{"provider_key":"the_odds_api","provider_sport_key":"basketball_nba","sport_title":"NBA","coverage_status":"stocked","recommended_action":"none","request_count":1,"successful_request_count":1,"failed_request_count":0,"request_cost":0,"objects_returned":1,"request_types":["odds"],"first_request_at":"2026-06-05T16:10:55.436542Z","latest_request_at":"2026-06-05T16:10:55.436542Z","latest_quota_remaining":null,"latest_response_notice":null,"provider_events":1,"active_provider_lines":6,"open_pickable_lines":6,"active_lines_per_credit":null,"open_pickable_lines_per_credit":null,"provider_events_per_credit":null,"objects_returned_per_credit":null,"yield_status":"yielding_pickable_inventory"}]},"provider_quota_health":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:38.373573Z","uses_live_provider_calls":false,"status":"warning","allowed":true,"blockers":[],"warnings":["missing_latest_quota_signal"],"planned_request_credits":0,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"daily_remaining_credits_after_next_recovery":320,"latest_quota_remaining":null,"latest_quota_used":null,"latest_request_cost":0,"latest_request_type":"odds","latest_request_success":true,"latest_request_finished_at":"2026-06-05T16:10:55.436542Z","latest_objects_returned":1,"latest_object_limit_remaining":null,"latest_request_limit_remaining":null,"latest_response_notice":null,"latest_next_cursor":null,"request_count_24h":2,"request_count_7d":2,"request_cost_24h":0,"request_cost_7d":0,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0,"unresolved_failure_groups_24h":[],"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":["basketball_nba"],"odds_sport_keys":[],"score_sport_keys":[]},"refresh_policy_skipped_targets":{"total_skipped_target_count":0,"components":{"events":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"odds":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"scores":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]}},"daily_credit_recovery":null},"policy":"Stored provider request ledger only; no live provider quota probe is made."},"pick_period_inventory_fill_recommendation":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:42.498395Z","uses_live_provider_calls":false,"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[],"competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"c05305b2-7f8b-4f31-a2e0-ab2a56913922","pick_period":{"label":"Friday","starts_at":"2026-06-05T00:00:00Z","ends_at":"2026-06-06T00:00:00Z","status":"open"},"filters":{"min_american_odds":null,"max_american_odds":null,"lookahead_days":14,"refresh_yield_lookback_hours":168,"limit":5},"totals":{"candidate_sports":1,"recommended_sports":0,"period_open_pickable_lines":6,"period_events":1},"recommended_provider_sport_keys":[],"recommended_limits":{"max_event_sports":0,"max_odds_credits":0,"max_total_request_credits":0,"max_daily_request_credits":320,"event_refresh_credit_cost":0},"quota_health":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:42.489573Z","uses_live_provider_calls":false,"status":"warning","allowed":true,"blockers":[],"warnings":["missing_latest_quota_signal"],"planned_request_credits":0,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"daily_remaining_credits_after_next_recovery":320,"latest_quota_remaining":null,"latest_quota_used":null,"latest_request_cost":0,"latest_request_type":"odds","latest_request_success":true,"latest_request_finished_at":"2026-06-05T16:10:55.436542Z","latest_objects_returned":1,"latest_object_limit_remaining":null,"latest_request_limit_remaining":null,"latest_response_notice":null,"latest_next_cursor":null,"request_count_24h":2,"request_count_7d":2,"request_cost_24h":0,"request_cost_7d":0,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0,"unresolved_failure_groups_24h":[],"selected_live_targets":null,"refresh_policy_skipped_targets":{"total_skipped_target_count":0,"components":{"events":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"odds":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"scores":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]}},"daily_credit_recovery":null},"policy":"Stored provider request ledger only; no live provider quota probe is made."},"api_request":{"method":"POST","path":"/inventory/operations/pick-period-inventory-fill","body":{"provider_key":"the_odds_api","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"c05305b2-7f8b-4f31-a2e0-ab2a56913922","provider_sport_keys":[],"max_event_sports":0,"max_odds_credits":0,"max_total_request_credits":0,"max_daily_request_credits":320,"lookahead_days":14,"force":true,"execute":false,"rebuild_local":true},"context":{"operation":"pick_period_inventory_fill","provider_key":"the_odds_api","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"c05305b2-7f8b-4f31-a2e0-ab2a56913922","provider_sport_keys":[],"max_event_sports":0,"max_odds_credits":0,"max_total_request_credits":0,"max_daily_request_credits":320,"lookahead_days":14,"force":true,"rebuild_local":true,"selected_provider_sport_keys":{"events":[],"odds":[]},"requested_odds_credit_estimate":0,"quota_health":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:42.489573Z","uses_live_provider_calls":false,"status":"warning","allowed":true,"blockers":[],"warnings":["missing_latest_quota_signal"],"planned_request_credits":0,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"daily_remaining_credits_after_next_recovery":320,"latest_quota_remaining":null,"latest_quota_used":null,"latest_request_cost":0,"latest_request_type":"odds","latest_request_success":true,"latest_request_finished_at":"2026-06-05T16:10:55.436542Z","latest_objects_returned":1,"latest_object_limit_remaining":null,"latest_request_limit_remaining":null,"latest_response_notice":null,"latest_next_cursor":null,"request_count_24h":2,"request_count_7d":2,"request_cost_24h":0,"request_cost_7d":0,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0,"unresolved_failure_groups_24h":[],"selected_live_targets":null,"refresh_policy_skipped_targets":{"total_skipped_target_count":0,"components":{"events":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"odds":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"scores":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]}},"daily_credit_recovery":null},"policy":"Stored provider request ledger only; no live provider quota probe is made."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false,"live_provider_calls_require_execute_and_approval":true,"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"candidates":[{"provider_sport_key":"basketball_nba","sport_title":"NBA","recommended_action":"use_existing_period_inventory","reason":"Period already has selectable inventory for this sport; no provider refresh is needed.","primary_blocker":null,"coverage_status":"stocked","market_coverage_status":"core_markets_complete","market_coverage_gap_reasons":[],"available_core_markets":["h2h","spreads","totals"],"missing_core_markets":[],"missing_core_market_count":null,"missing_market_details":null,"active_provider_lines":6,"open_pickable_lines":6,"period_open_pickable_lines":6,"period_events":1,"refresh_yield":{"status":"yielding_pickable_inventory","request_cost":0,"open_pickable_lines":6,"open_pickable_lines_per_credit":null,"latest_request_at":"2026-06-05T16:10:55.436542Z"},"uses_live_provider_calls":false,"api_request":null}]},"provider_onboarding_readiness":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:39.775566Z","status":"ready","ready_for_onboarding":true,"blocker_count":0,"warning_count":0,"filters":{"max_daily_request_credits":320,"recent_job_limit":8},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"checks":[{"key":"provider_registered_enabled","status":"ok","severity":"blocker","message":"Provider is registered and enabled.","metadata":{"provider_key":"the_odds_api","provider_enabled":true,"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true}},{"key":"provider_adapter_contract","status":"ok","severity":"blocker","message":"Provider adapter has the required client and normalization hooks.","metadata":{"adapter_contract":{"status":"ready","required_hooks":["client_factory","sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"available_hooks":{"client_factory":true,"sport_normalizer":true,"event_normalizer":true,"line_input_builder":true,"score_normalizer":true,"odds_request_scope_factory":true,"odds_request_cost_estimator":true,"score_request_scope_factory":true,"score_request_cost_estimator":true},"missing_hooks":[],"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[],"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[],"score_request_scope_contract":"provider_owned","score_request_cost_contract":"provider_owned","score_request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"score_request_contract_gaps":[]},"adapter_contract_gaps":[]}},{"key":"provider_normalization_contract","status":"ok","severity":"blocker","message":"Provider owns its payload normalization hooks.","metadata":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[],"adapter_contract":{"status":"ready","required_hooks":["client_factory","sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"available_hooks":{"client_factory":true,"sport_normalizer":true,"event_normalizer":true,"line_input_builder":true,"score_normalizer":true,"odds_request_scope_factory":true,"odds_request_cost_estimator":true,"score_request_scope_factory":true,"score_request_cost_estimator":true},"missing_hooks":[],"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[],"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[],"score_request_scope_contract":"provider_owned","score_request_cost_contract":"provider_owned","score_request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"score_request_contract_gaps":[]},"uses_live_provider_calls":false}},{"key":"provider_capabilities","status":"ok","severity":"warning","message":"Provider supports odds, event refresh, and scores.","metadata":{"capability_gaps":[],"capability_status":"ready","adapter_contract":{"status":"ready","required_hooks":["client_factory","sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"available_hooks":{"client_factory":true,"sport_normalizer":true,"event_normalizer":true,"line_input_builder":true,"score_normalizer":true,"odds_request_scope_factory":true,"odds_request_cost_estimator":true,"score_request_scope_factory":true,"score_request_cost_estimator":true},"missing_hooks":[],"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[],"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[],"score_request_scope_contract":"provider_owned","score_request_cost_contract":"provider_owned","score_request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"score_request_contract_gaps":[]},"adapter_contract_gaps":[],"recommended_action":{"action":"none","reason":"Provider is registered, stored, enabled, and supports odds/event refresh/scores.","command":null,"api":null,"api_request":null}}},{"key":"provider_request_contract","status":"ok","severity":"warning","message":"Provider owns its odds request scope and cost model.","metadata":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[],"adapter_contract":{"status":"ready","required_hooks":["client_factory","sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"available_hooks":{"client_factory":true,"sport_normalizer":true,"event_normalizer":true,"line_input_builder":true,"score_normalizer":true,"odds_request_scope_factory":true,"odds_request_cost_estimator":true,"score_request_scope_factory":true,"score_request_cost_estimator":true},"missing_hooks":[],"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[],"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[],"score_request_scope_contract":"provider_owned","score_request_cost_contract":"provider_owned","score_request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"score_request_contract_gaps":[]},"uses_live_provider_calls":false}},{"key":"sport_catalog","status":"ok","severity":"blocker","message":"1 active supported sports are cataloged.","metadata":{"provider_sports":1,"active_supported_sports":1,"unsupported_sports":0}},{"key":"sport_mapping_review_queue","status":"ok","severity":"warning","message":"No provider sport support or canonical sport/league mapping review targets.","metadata":{"review_target_counts":{},"review_queue_api_request":{"method":"GET","path":"/inventory/operations/provider-sport-support-review-queue","query":{"provider_key":"the_odds_api","include_outrights":false,"include_supported_mapping_gaps":true,"include_team_mapping_gaps":true,"active_only":true,"limit":25},"uses_live_provider_calls":false,"context":{"provider_key":"the_odds_api","include_outrights":false,"include_supported_mapping_gaps":true,"include_team_mapping_gaps":true,"active_only":true,"limit":25}},"review_target_sample":[],"support_batch_api_requests":{"plan":{"method":"GET","path":"/inventory/operations/provider-sport-support-batch-plan","query":{"provider_key":"the_odds_api","status":"open","include_outrights":false,"limit":1,"reviewer_user_id":"<user-id>","reason":"<reason>","refresh_priority_start":0,"max_daily_request_credits":320},"uses_live_provider_calls":false,"context":{"provider_key":"the_odds_api","status":"open","include_outrights":false,"limit":1,"max_daily_request_credits":320}},"apply":{"method":"POST","path":"/inventory/operations/provider-sport-support-batch-apply","body_template":{"provider_key":"the_odds_api","status":"open","include_outrights":false,"limit":1,"reviewer_user_id":"<user-id>","reason":"<reason>","refresh_priority_start":0,"max_daily_request_credits":320},"uses_live_provider_calls":false,"context":{"provider_key":"the_odds_api","status":"open","include_outrights":false,"limit":1,"max_daily_request_credits":320},"returns_refresh_policy_dry_run":true}}}},{"key":"provider_inventory","status":"ok","severity":"blocker","message":"1 provider events and 6 active lines are stored.","metadata":{"provider_events":1,"active_provider_lines":6,"inactive_provider_lines":0}},{"key":"pickable_inventory","status":"ok","severity":"blocker","message":"6 PickCenter-owned open pickable lines are available.","metadata":{"open_pickable_lines":6,"pickable_line_sources":6,"active_pickable_line_sources":6}},{"key":"team_identity_mapping","status":"ok","severity":"warning","message":"No provider team identity mapping review targets.","metadata":{"team_count":2,"canonical_team_count":2,"missing_canonical_team_count":0,"native_team_id_count":0,"unresolved_team_mapping_candidates":0,"native_id_status_counts":{"name_identity_only":1},"native_id_actionability_counts":{"diagnostic_only":1},"review_queue_api_request":{"method":"GET","path":"/inventory/operations/provider-sport-support-review-queue","query":{"provider_key":"the_odds_api","include_outrights":false,"include_supported_mapping_gaps":false,"include_team_mapping_gaps":true,"active_only":true,"limit":25},"uses_live_provider_calls":false,"context":{"provider_key":"the_odds_api","include_outrights":false,"include_supported_mapping_gaps":false,"include_team_mapping_gaps":true,"active_only":true,"limit":25}},"review_target_sample":[]}},{"key":"pickable_source_dedupe","status":"ok","severity":"warning","message":"Pickable source policy has no duplicate canonical source groups.","metadata":{"source_groups":6,"sources":6,"duplicate_source_groups":0,"suppressed_source_count":0}},{"key":"canonical_cleanup","status":"ok","severity":"warning","message":"No alias-seeded duplicate canonical teams or events need cleanup.","metadata":{"duplicate_team_candidates":0,"duplicate_event_candidates":0,"team_candidates_with_event_duplicates":0,"event_provider_event_mappings":0,"event_pickable_lines":0,"event_pick_options":0,"event_submitted_picks":0,"event_marquee_events":0,"worklist_api":"GET /inventory/operations/canonical-cleanup-worklist","uses_live_provider_calls":false}},{"key":"pick_serving_readiness","status":"ok","severity":"warning","message":"Provider-backed inventory is ready for current pick serving.","metadata":{"ready_for_picks":true,"readiness_status":"ready","blocker_count":0,"warning_count":0,"warning_keys":[],"blocker_keys":[],"refresh_policy_due":{"due":false,"sports":0,"events":0,"odds":0,"scores":0,"skipped_odds":0},"refresh_policy_skipped_target_count":0,"refresh_policy_skipped_reason_counts":{},"active_board_event_odds_refresh":{"selected_targets":0,"selected_estimated_request_cost":0,"can_execute_live":false,"live_execution_blockers":[],"request_contracts_by_provider":{},"fallback_request_contract_providers":[],"request_contract_gaps_by_provider":{},"normalization_contracts_by_provider":{},"fallback_normalization_contract_providers":[],"normalization_contract_gaps_by_provider":{},"daily_remaining_credits":null,"daily_cap_allows_action":null,"next_daily_credit_recovery_at":null,"next_recovery_allows_action":null,"sufficient_daily_credit_recovery_at":null,"dry_run_command":null,"next_recovery_partial_batch":{"available":false,"selected_targets":0,"selected_estimated_request_cost":0,"available_at":null,"daily_remaining_credits_after_next_recovery":null,"dry_run_command":null,"uses_live_provider_calls":false},"uses_live_provider_calls":false},"uses_live_provider_calls":false}},{"key":"provider_cost_posture","status":"ok","severity":"warning","message":"24h provider request cost is 0.","metadata":{"request_cost_24h":0,"request_cost_7d":0,"max_daily_request_credits":320,"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"latest_quota_remaining":null}}],"summary_counts":{"provider_sports":1,"supported_sports":1,"active_supported_sports":1,"unsupported_sports":0,"provider_events":1,"canonical_events":1,"active_provider_lines":6,"inactive_provider_lines":0,"open_pickable_lines":6,"pickable_line_sources":6,"active_pickable_line_sources":6,"active_option_sets":14,"stale_active_option_sets":0,"option_set_regeneration_periods":14,"option_set_regeneration_current":14,"option_set_regeneration_recommended":0,"option_set_regeneration_missing":0,"option_set_regeneration_stale":0,"option_set_regeneration_rules_changed":0,"option_set_regeneration_inventory_changed":0,"provider_requests":2,"failed_provider_requests":0,"recorded_request_cost":0,"inventory_job_runs":11,"failed_inventory_job_runs":0,"unresolved_mapping_candidates":0,"needs_review_picks":0,"provider_scores":0,"settled_provider_scores":0,"provider_stat_results":0,"canonical_event_results":0,"settled_canonical_event_results":0,"pending_score_refresh_targets":0,"pending_score_refresh_picks":0,"duplicate_pickable_source_groups":0,"duplicate_pickable_source_lines":0},"cost_window":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:38.542842Z","request_count_24h":2,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0,"unresolved_failure_groups_24h":[],"request_cost_24h":0,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"request_count_7d":2,"failed_request_count_7d":0,"unresolved_failed_request_count_7d":0,"unresolved_failure_groups_7d":[],"request_cost_7d":0,"latest_request_finished_at":"2026-06-05T16:10:55.436542Z","latest_request_type":"odds","latest_request_success":true,"latest_quota_remaining":null,"latest_quota_used":null,"latest_request_cost":0,"latest_objects_returned":1,"latest_object_limit_remaining":null,"latest_request_limit_remaining":null,"latest_response_notice":null,"latest_next_cursor":null},"readiness":{"status":"ready","ready_for_picks":true,"blocker_count":0,"warning_count":0},"team_mapping_totals":{"provider_team_groups":1,"team_count":2,"canonical_team_count":2,"missing_canonical_team_count":0,"native_team_id_count":0,"missing_native_team_id_count":2,"native_sport_id_count":0,"missing_provider_sport_id_count":2,"native_league_id_count":0,"missing_provider_league_id_count":2,"manual_mapping_count":0,"seeded_mapping_count":2,"alias_mapping_count":0,"unresolved_team_mapping_candidates":0,"returned_provider_team_groups":1,"mapping_status_counts":{"mapped":1},"native_id_status_counts":{"name_identity_only":1},"native_id_actionability_counts":{"diagnostic_only":1}},"canonical_cleanup_totals":{"duplicate_team_candidates":0,"duplicate_event_candidates":0,"team_candidates_with_event_duplicates":0,"team_provider_team_references":0,"team_canonical_event_references":0,"event_provider_event_mappings":0,"event_pickable_lines":0,"event_pick_options":0,"event_submitted_picks":0,"event_marquee_events":0},"pickable_source_group_totals":{"source_groups":6,"sources":6,"duplicate_source_groups":0,"suppressed_source_count":0,"returned_source_groups":1},"review_target_counts":{}},"provider_capability_matrix":{"generated_at":"2026-06-05T18:39:39.775926Z","filters":{"provider_key":"the_odds_api"},"totals":{"providers":1,"registered_providers":1,"stored_providers":1,"enabled_providers":1,"ready_providers":1,"partial_providers":0,"drift_providers":0,"adapter_incomplete_providers":0,"disabled_providers":0,"normalization_fallback_providers":0,"normalization_contract_gap_counts":{},"status_counts":{"ready":1}},"providers":[{"provider_key":"the_odds_api","display_name":"The Odds API","registered":true,"stored":true,"enabled":true,"capability_status":"ready","capability_status_reasons":[],"registry_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"adapter_contract":{"status":"ready","required_hooks":["client_factory","sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"available_hooks":{"client_factory":true,"sport_normalizer":true,"event_normalizer":true,"line_input_builder":true,"score_normalizer":true,"odds_request_scope_factory":true,"odds_request_cost_estimator":true,"score_request_scope_factory":true,"score_request_cost_estimator":true},"missing_hooks":[],"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[],"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[],"score_request_scope_contract":"provider_owned","score_request_cost_contract":"provider_owned","score_request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"score_request_contract_gaps":[]},"adapter_contract_gaps":[],"normalization_contract":"provider_owned","normalization_contract_gaps":[],"stored_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"effective_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"registry_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"effective_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"default_odds_request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"estimated_default_odds_request_cost":3,"uses_live_provider_calls_for_default_scope":false,"capability_gaps":[],"drift_capabilities":[],"live_components":{"sports_catalog":true,"events":true,"odds":true,"scores":true},"inventory_counts":{"provider_sports":1,"active_supported_sports":1,"provider_events":1,"active_provider_lines":6,"open_pickable_lines":6,"pending_score_refresh_picks":0},"recommended_action":{"action":"none","reason":"Provider is registered, stored, enabled, and supports odds/event refresh/scores.","command":null,"api":null,"api_request":null}}]},"provider_team_mapping_coverage":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:40.156885Z","filters":{"provider_sport_key":null,"mapping_status":null,"native_id_status":null,"limit":12},"totals":{"provider_team_groups":1,"team_count":2,"canonical_team_count":2,"missing_canonical_team_count":0,"native_team_id_count":0,"missing_native_team_id_count":2,"native_sport_id_count":0,"missing_provider_sport_id_count":2,"native_league_id_count":0,"missing_provider_league_id_count":2,"manual_mapping_count":0,"seeded_mapping_count":2,"alias_mapping_count":0,"unresolved_team_mapping_candidates":0,"returned_provider_team_groups":1,"mapping_status_counts":{"mapped":1},"native_id_status_counts":{"name_identity_only":1},"native_id_actionability_counts":{"diagnostic_only":1}},"sports":[{"provider_key":"the_odds_api","provider_sport_key":"basketball_nba","provider_league_key":"basketball_nba","provider_sport_id":null,"provider_league_id":null,"sport_title":"NBA","league_title":"NBA","canonical_sport_code":"basketball","canonical_league_code":"basketball_nba","mapping_status":"mapped","mapping_gap_reasons":[],"native_id_status":"name_identity_only","native_id_gap_reasons":["missing_provider_team_id","missing_provider_sport_id","missing_provider_league_id"],"native_id_actionability":"diagnostic_only","native_id_actionability_reasons":["provider_name_identity_only"],"team_count":2,"canonical_team_count":2,"missing_canonical_team_count":0,"native_team_id_count":0,"missing_native_team_id_count":2,"native_sport_id_count":0,"missing_provider_sport_id_count":2,"native_league_id_count":0,"missing_provider_league_id_count":2,"manual_mapping_count":0,"seeded_mapping_count":2,"alias_mapping_count":0,"unresolved_team_mapping_candidates":0,"sample_teams":[{"id":"ec96e836-908b-4454-963b-c91c943f738c","provider_team_id":null,"provider_team_name":"Boston Celtics","normalized_team_name":"boston_celtics","canonical_team_id":"3607d587-f4f0-4254-bdcc-21ee00dbbc23","match_method":"single_provider_seed","provider_sport_id":null,"provider_league_id":null},{"id":"c3bea9a0-65ff-413c-a95a-48102ed42c3b","provider_team_id":null,"provider_team_name":"Los Angeles Lakers","normalized_team_name":"los_angeles_lakers","canonical_team_id":"04720716-7f40-44ef-a6de-e239dde70978","match_method":"single_provider_seed","provider_sport_id":null,"provider_league_id":null}]}]},"canonical_cleanup_worklist":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:40.167907Z","uses_live_provider_calls":false,"filters":{"provider_key":"the_odds_api","sport_code":null,"league_code":null,"limit":12},"totals":{"duplicate_team_candidates":0,"duplicate_event_candidates":0,"team_candidates_with_event_duplicates":0,"team_provider_team_references":0,"team_canonical_event_references":0,"event_provider_event_mappings":0,"event_pickable_lines":0,"event_pick_options":0,"event_submitted_picks":0,"event_marquee_events":0},"team_candidates":[],"event_candidates":[]},"provider_sport_market_coverage":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:40.169336Z","uses_live_provider_calls":false,"filters":{"provider_sport_key":null,"score_pending_only":false,"active_only":true,"limit":12,"core_markets":["h2h","spreads","totals"]},"totals":{"provider_sports":1,"returned_provider_sports":1,"active_provider_sports":1,"pickcenter_supported_sports":1,"provider_events":1,"active_provider_lines":6,"open_pickable_lines":6,"provider_scores":0,"settled_provider_scores":0,"canonical_event_results":0,"settled_canonical_event_results":0,"pending_score_refresh_picks":0,"pending_score_refresh_events":0,"pending_score_refresh_sports":0,"core_markets_complete_sports":1,"partial_core_market_sports":0,"no_open_pickable_line_sports":0,"market_coverage_status_counts":{"core_markets_complete":1},"market_totals":{"h2h":{"active_provider_lines":2,"provider_events_with_active_lines":1,"open_pickable_lines":2,"pickable_events":1},"spreads":{"active_provider_lines":2,"provider_events_with_active_lines":1,"open_pickable_lines":2,"pickable_events":1},"totals":{"active_provider_lines":2,"provider_events_with_active_lines":1,"open_pickable_lines":2,"pickable_events":1}}},"sports":[{"provider_sport_key":"basketball_nba","provider_sport_id":null,"provider_league_key":"basketball_nba","provider_league_id":null,"sport_group":"Basketball","sport_title":"NBA","canonical_sport_code":"basketball","active":true,"pickcenter_supported":true,"has_outrights":false,"provider_events":1,"active_provider_lines":6,"open_pickable_lines":6,"available_core_markets":["h2h","spreads","totals"],"missing_core_markets":[],"market_coverage_status":"core_markets_complete","market_coverage_gap_reasons":[],"markets":{"h2h":{"market_type":"h2h","active_provider_lines":2,"provider_events_with_active_lines":1,"open_pickable_lines":2,"pickable_events":1},"spreads":{"market_type":"spreads","active_provider_lines":2,"provider_events_with_active_lines":1,"open_pickable_lines":2,"pickable_events":1},"totals":{"market_type":"totals","active_provider_lines":2,"provider_events_with_active_lines":1,"open_pickable_lines":2,"pickable_events":1}},"provider_scores":0,"settled_provider_scores":0,"canonical_event_results":0,"settled_canonical_event_results":0,"pending_score_refresh_picks":0,"pending_score_refresh_events":0,"score_settlement_api_request":null,"latest_odds_request":{"id":"9b498720-de2e-445d-824d-dc1d4a0065f1","inventory_job_run_id":null,"request_type":"odds","markets":"h2h,spreads,totals","regions":"us","bookmakers":null,"request_scope_json":{"provider_sport_key":"basketball_nba","provider_league_key":"basketball_nba","canonical_sport_code":"basketball","canonical_league_code":"basketball_nba","markets":"h2h,spreads,totals","regions":"us"},"success":true,"status_code":200,"request_cost":0,"quota_remaining":null,"objects_returned":1,"line_snapshots":6,"finished_at":"2026-06-05T16:10:55.436542Z","error_code":null,"error_message":null},"latest_score_request":null}]},"provider_sport_market_gap_worklist":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:40.883009Z","uses_live_provider_calls":false,"filters":{"action":null,"active_only":true,"limit":12,"max_refresh_sports":5,"core_markets":["h2h","spreads","totals"]},"totals":{"candidate_sports":0,"returned_items":0,"omitted_candidate_sports":0,"live_action_sports":0,"local_action_sports":0,"actionable_local_sports":0,"passive_wait_sports":0,"action_counts":{},"missing_core_market_counts":{"h2h":0,"spreads":0,"totals":0},"missing_market_status_counts":{}},"coverage_limitation_summary":{"status":"clear","passive_wait_sports":0,"missing_core_market_counts":{"h2h":0,"spreads":0,"totals":0},"recommended_operator_action":"No passive provider market-coverage waits are present.","sample_sports":[]},"selected_provider_sport_keys":{"events":[],"odds":[],"priority":[]},"refresh_policy_handoff":null,"items":[]},"provider_sport_support_review_queue":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:40.883038Z","uses_live_provider_calls":false,"status":"clear","filters":{"include_outrights":false,"include_supported_mapping_gaps":true,"include_team_mapping_gaps":true,"active_only":true,"provider_sport_id":null,"provider_league_key":null,"provider_league_id":null,"limit":12},"totals":{"provider_sports":1,"considered_provider_sports":1,"active_provider_sports":1,"active_supported_sports":1,"active_unsupported_sports":0,"active_unsupported_non_outright_sports":0,"active_unsupported_outright_sports":0,"supported_mapping_gap_sports":0,"review_targets":0,"returned_review_targets":0,"support_review_targets":0,"canonical_mapping_review_targets":0,"team_mapping_review_targets":0,"provider_events":1,"active_provider_lines":6,"open_pickable_lines":6},"review_type_counts":{},"suggested_next_action":null,"support_batch_api_requests":{"plan":{"method":"GET","path":"/inventory/operations/provider-sport-support-batch-plan","query":{"provider_key":"the_odds_api","status":"open","include_outrights":false,"limit":1,"reviewer_user_id":"<user-id>","reason":"<reason>","refresh_priority_start":0},"uses_live_provider_calls":false,"context":{"provider_key":"the_odds_api","status":"open","include_outrights":false,"limit":1}},"apply":{"method":"POST","path":"/inventory/operations/provider-sport-support-batch-apply","body_template":{"provider_key":"the_odds_api","status":"open","include_outrights":false,"limit":1,"reviewer_user_id":"<user-id>","reason":"<reason>","refresh_priority_start":0},"uses_live_provider_calls":false,"context":{"provider_key":"the_odds_api","status":"open","include_outrights":false,"limit":1},"returns_refresh_policy_dry_run":true}},"api_request":{"method":"GET","path":"/inventory/operations/provider-sport-support-review-queue","query":{"provider_key":"the_odds_api","include_outrights":false,"include_supported_mapping_gaps":true,"include_team_mapping_gaps":true,"active_only":true,"provider_sport_id":null,"provider_league_key":null,"provider_league_id":null,"limit":12},"uses_live_provider_calls":false,"context":{"provider_key":"the_odds_api","include_outrights":false,"include_supported_mapping_gaps":true,"include_team_mapping_gaps":true,"active_only":true,"limit":12}},"targets":[]},"pickable_source_groups":{"provider_key":"the_odds_api","active_only":true,"generated_at":"2026-06-05T18:39:41.037512Z","source_policy":{"mode":"one_per_pick_identity","provider_priority":["the_odds_api"]},"totals":{"source_groups":6,"sources":6,"duplicate_source_groups":0,"suppressed_source_count":0}},"pick_board_contracts":{"generated_at":"2026-06-05T18:39:41.037558Z","filters":{"competition_id":null,"user_id":null,"competition_statuses":["active","scheduled"]},"totals":{"competitions":2,"periods":14,"selectable_periods":14,"unavailable_periods":0,"missing_option_sets":0,"stale_option_sets":0,"missing_marquee_periods":6,"open_options":84,"events":14,"event_odds_refresh_target_periods":0,"event_odds_refresh_targets":0,"event_odds_refresh_estimated_request_cost":0},"competitions":[{"competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","status":"active","generated_at":"2026-06-05T18:39:41.037558Z","periods":[{"pick_period_id":"c05305b2-7f8b-4f31-a2e0-ab2a56913922","label":"Friday","starts_at":"2026-06-05T00:00:00Z","ends_at":"2026-06-06T00:00:00Z","status":"open","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"75599b90-e531-4784-9676-17e99f697d15","option_set_generated_at":"2026-06-05T16:11:53.655626Z","option_set_valid_until":"2026-06-06T04:11:53.655626Z","option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":6,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":{"id":"50252be2-97b3-44f2-b445-41d13ef660b5","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"c05305b2-7f8b-4f31-a2e0-ab2a56913922","canonical_event_id":"3fb5e627-2405-41e3-8d45-f6c8bac70206","selected_by_user_id":"3e05274f-e5d1-4629-aa0e-f19cc3fd2c57","sport_code":"basketball","league_code":"basketball_nba","event_name":"Los Angeles Lakers at Boston Celtics","commence_time":"2026-06-06T00:10:55Z","home_team_name":"Boston Celtics","away_team_name":"Los Angeles Lakers","status":"active","selected_at":"2026-06-05T16:11:53.920093Z"},"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"c05305b2-7f8b-4f31-a2e0-ab2a56913922"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"c05305b2-7f8b-4f31-a2e0-ab2a56913922","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"1c266f3d-3c8b-48c9-b2a9-4981a2cb0bcc","label":"Saturday","starts_at":"2026-06-06T00:00:00Z","ends_at":"2026-06-07T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"62f6a09e-6345-4416-8dd1-ba305e835c58","option_set_generated_at":"2026-06-05T16:11:53.674347Z","option_set_valid_until":"2026-06-06T04:11:53.674347Z","option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":6,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":{"id":"10b36597-96bb-40c5-be7b-efeecad95a48","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"1c266f3d-3c8b-48c9-b2a9-4981a2cb0bcc","canonical_event_id":"3fb5e627-2405-41e3-8d45-f6c8bac70206","selected_by_user_id":"3e05274f-e5d1-4629-aa0e-f19cc3fd2c57","sport_code":"basketball","league_code":"basketball_nba","event_name":"Los Angeles Lakers at Boston Celtics","commence_time":"2026-06-06T00:10:55Z","home_team_name":"Boston Celtics","away_team_name":"Los Angeles Lakers","status":"active","selected_at":"2026-06-05T16:11:53.928205Z"},"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"1c266f3d-3c8b-48c9-b2a9-4981a2cb0bcc"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"1c266f3d-3c8b-48c9-b2a9-4981a2cb0bcc","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"4429f240-b356-4a87-8103-d0c19762f9ad","label":"Sunday","starts_at":"2026-06-07T00:00:00Z","ends_at":"2026-06-08T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"d8cc8e53-bcf1-4833-b8f4-4fb6ba0f33a5","option_set_generated_at":"2026-06-05T16:11:53.686820Z","option_set_valid_until":"2026-06-06T04:11:53.686820Z","option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":6,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":{"id":"8b40fb56-deb3-491a-b970-2f18a6878a6a","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"4429f240-b356-4a87-8103-d0c19762f9ad","canonical_event_id":"3fb5e627-2405-41e3-8d45-f6c8bac70206","selected_by_user_id":"3e05274f-e5d1-4629-aa0e-f19cc3fd2c57","sport_code":"basketball","league_code":"basketball_nba","event_name":"Los Angeles Lakers at Boston Celtics","commence_time":"2026-06-06T00:10:55Z","home_team_name":"Boston Celtics","away_team_name":"Los Angeles Lakers","status":"active","selected_at":"2026-06-05T16:11:53.934308Z"},"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"4429f240-b356-4a87-8103-d0c19762f9ad"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"4429f240-b356-4a87-8103-d0c19762f9ad","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"d98faa92-d39e-4b74-93b5-7b3d15d075fe","label":"Monday","starts_at":"2026-06-08T00:00:00Z","ends_at":"2026-06-09T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"d9df516a-fc5f-4027-8b16-345478a7324d","option_set_generated_at":"2026-06-05T16:11:53.724930Z","option_set_valid_until":"2026-06-06T04:11:53.724930Z","option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":6,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":{"id":"fb1d6cad-9285-4995-b6cb-af3df003f96e","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"d98faa92-d39e-4b74-93b5-7b3d15d075fe","canonical_event_id":"3fb5e627-2405-41e3-8d45-f6c8bac70206","selected_by_user_id":"3e05274f-e5d1-4629-aa0e-f19cc3fd2c57","sport_code":"basketball","league_code":"basketball_nba","event_name":"Los Angeles Lakers at Boston Celtics","commence_time":"2026-06-06T00:10:55Z","home_team_name":"Boston Celtics","away_team_name":"Los Angeles Lakers","status":"active","selected_at":"2026-06-05T16:11:53.939752Z"},"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"d98faa92-d39e-4b74-93b5-7b3d15d075fe"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"d98faa92-d39e-4b74-93b5-7b3d15d075fe","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"839b8c9d-14d9-438d-be36-f9ccc1db5d03","label":"Tuesday","starts_at":"2026-06-09T00:00:00Z","ends_at":"2026-06-10T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"cd693b78-456d-4dc2-ada8-176547b74517","option_set_generated_at":"2026-06-05T16:11:53.736940Z","option_set_valid_until":"2026-06-06T04:11:53.736940Z","option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":6,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":{"id":"9b0aea17-6850-43e2-b9ad-8f8f4c55e3e6","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"839b8c9d-14d9-438d-be36-f9ccc1db5d03","canonical_event_id":"3fb5e627-2405-41e3-8d45-f6c8bac70206","selected_by_user_id":"3e05274f-e5d1-4629-aa0e-f19cc3fd2c57","sport_code":"basketball","league_code":"basketball_nba","event_name":"Los Angeles Lakers at Boston Celtics","commence_time":"2026-06-06T00:10:55Z","home_team_name":"Boston Celtics","away_team_name":"Los Angeles Lakers","status":"active","selected_at":"2026-06-05T16:11:53.945169Z"},"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"839b8c9d-14d9-438d-be36-f9ccc1db5d03"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"839b8c9d-14d9-438d-be36-f9ccc1db5d03","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"824bb6ca-2a24-49a2-8876-7fbf6759c1c8","label":"Wednesday","starts_at":"2026-06-10T00:00:00Z","ends_at":"2026-06-11T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"6789bbf7-59cb-4f91-9850-04b986c3faec","option_set_generated_at":"2026-06-05T16:11:53.748684Z","option_set_valid_until":"2026-06-06T04:11:53.748684Z","option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":6,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":{"id":"7ead4db4-64e3-43ae-97b7-6c9c04a97825","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"824bb6ca-2a24-49a2-8876-7fbf6759c1c8","canonical_event_id":"3fb5e627-2405-41e3-8d45-f6c8bac70206","selected_by_user_id":"3e05274f-e5d1-4629-aa0e-f19cc3fd2c57","sport_code":"basketball","league_code":"basketball_nba","event_name":"Los Angeles Lakers at Boston Celtics","commence_time":"2026-06-06T00:10:55Z","home_team_name":"Boston Celtics","away_team_name":"Los Angeles Lakers","status":"active","selected_at":"2026-06-05T16:11:53.951574Z"},"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"824bb6ca-2a24-49a2-8876-7fbf6759c1c8"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"824bb6ca-2a24-49a2-8876-7fbf6759c1c8","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"c0fc59cc-cb4f-43b5-9a14-e73b22faa8cd","label":"Thursday","starts_at":"2026-06-11T00:00:00Z","ends_at":"2026-06-12T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"acdbd4d8-8fd5-41fb-930d-5b60696883cb","option_set_generated_at":"2026-06-05T16:11:53.761224Z","option_set_valid_until":"2026-06-06T04:11:53.761224Z","option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"hosted_dev_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":6,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":{"id":"969fd569-71d7-425d-b091-65479c828477","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"c0fc59cc-cb4f-43b5-9a14-e73b22faa8cd","canonical_event_id":"3fb5e627-2405-41e3-8d45-f6c8bac70206","selected_by_user_id":"3e05274f-e5d1-4629-aa0e-f19cc3fd2c57","sport_code":"basketball","league_code":"basketball_nba","event_name":"Los Angeles Lakers at Boston Celtics","commence_time":"2026-06-06T00:10:55Z","home_team_name":"Boston Celtics","away_team_name":"Los Angeles Lakers","status":"active","selected_at":"2026-06-05T16:11:53.956856Z"},"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"c0fc59cc-cb4f-43b5-9a14-e73b22faa8cd"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"1025770f-2f95-4602-9257-6e237f205c8d","pick_period_id":"c0fc59cc-cb4f-43b5-9a14-e73b22faa8cd","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}}]},{"competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","status":"active","generated_at":"2026-06-05T18:39:41.037558Z","periods":[{"pick_period_id":"5a6fafdf-a87e-4525-921d-069155cdbbc8","label":"Friday","starts_at":"2026-06-05T00:00:00Z","ends_at":"2026-06-06T00:00:00Z","status":"open","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"c67db6cf-28b4-4fd8-87a0-a52a8601e5f2","option_set_generated_at":"2026-06-05T16:10:55.958649Z","option_set_valid_until":"2026-06-06T04:10:55.958649Z","option_set_status":"active","generation_reason":"fixture_seed","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"fixture_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"fixture_seed","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":6,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":{"id":"83ad4e18-c228-45e2-8133-983dcbaf1f15","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"5a6fafdf-a87e-4525-921d-069155cdbbc8","canonical_event_id":"3fb5e627-2405-41e3-8d45-f6c8bac70206","selected_by_user_id":"3e05274f-e5d1-4629-aa0e-f19cc3fd2c57","sport_code":"basketball","league_code":"basketball_nba","event_name":"Los Angeles Lakers at Boston Celtics","commence_time":"2026-06-06T00:10:55Z","home_team_name":"Boston Celtics","away_team_name":"Los Angeles Lakers","status":"active","selected_at":"2026-06-05T16:10:55.984946Z"},"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"5a6fafdf-a87e-4525-921d-069155cdbbc8"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"5a6fafdf-a87e-4525-921d-069155cdbbc8","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"45be4e2a-8eb7-491f-a9c3-99975a5ad4f9","label":"Saturday","starts_at":"2026-06-06T00:00:00Z","ends_at":"2026-06-07T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"d01a470f-c9b7-442d-a93d-410f4e083397","option_set_generated_at":"2026-06-05T16:15:38.141713Z","option_set_valid_until":"2026-06-06T04:15:38.141713Z","option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","options_selectable":false,"stale_or_unavailable":true,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":0,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":null,"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected"}],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"45be4e2a-8eb7-491f-a9c3-99975a5ad4f9"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"45be4e2a-8eb7-491f-a9c3-99975a5ad4f9","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"a3de972f-c9a5-4b37-844d-e08417d11ffa","label":"Sunday","starts_at":"2026-06-07T00:00:00Z","ends_at":"2026-06-08T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"fc74c17e-333f-465b-90a1-1ea30676eeee","option_set_generated_at":"2026-06-05T16:15:38.168287Z","option_set_valid_until":"2026-06-06T04:15:38.168287Z","option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","options_selectable":false,"stale_or_unavailable":true,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":0,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":null,"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected"}],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"a3de972f-c9a5-4b37-844d-e08417d11ffa"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"a3de972f-c9a5-4b37-844d-e08417d11ffa","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"e0994189-34fc-4b52-8f42-2a8f884a4780","label":"Monday","starts_at":"2026-06-08T00:00:00Z","ends_at":"2026-06-09T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"26139e73-903c-4e2a-bb8e-cd5223f9d511","option_set_generated_at":"2026-06-05T16:15:38.193215Z","option_set_valid_until":"2026-06-06T04:15:38.193215Z","option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","options_selectable":false,"stale_or_unavailable":true,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":0,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":null,"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected"}],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"e0994189-34fc-4b52-8f42-2a8f884a4780"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"e0994189-34fc-4b52-8f42-2a8f884a4780","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"7460b1e3-78a1-4a23-93de-56e267f4ac05","label":"Tuesday","starts_at":"2026-06-09T00:00:00Z","ends_at":"2026-06-10T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"4aad6d3f-fa59-4367-bc7f-64e623003734","option_set_generated_at":"2026-06-05T16:15:38.221897Z","option_set_valid_until":"2026-06-06T04:15:38.221897Z","option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","options_selectable":false,"stale_or_unavailable":true,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":0,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":null,"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected"}],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"7460b1e3-78a1-4a23-93de-56e267f4ac05"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"7460b1e3-78a1-4a23-93de-56e267f4ac05","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"87bf3030-e9de-4319-84e0-5ad281dbe97d","label":"Wednesday","starts_at":"2026-06-10T00:00:00Z","ends_at":"2026-06-11T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"fbde11c9-7fc7-471b-a3cc-d3de70864030","option_set_generated_at":"2026-06-05T16:15:38.374426Z","option_set_valid_until":"2026-06-06T04:15:38.374426Z","option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","options_selectable":false,"stale_or_unavailable":true,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":0,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":null,"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected"}],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"87bf3030-e9de-4319-84e0-5ad281dbe97d"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"87bf3030-e9de-4319-84e0-5ad281dbe97d","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}},{"pick_period_id":"be7f51f7-9044-46b3-9267-508d15cf1f0f","label":"Thursday","starts_at":"2026-06-11T00:00:00Z","ends_at":"2026-06-12T00:00:00Z","status":"upcoming","max_picks_per_player":3,"free_pick_slots":2,"marquee_pick_slots":1,"accepting_picks":true,"blocked_reason":null,"option_set_id":"a0003809-79ae-4c55-87e7-1426b676e032","option_set_generated_at":"2026-06-05T16:15:38.426645Z","option_set_valid_until":"2026-06-06T04:15:38.426645Z","option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"},"serving_status":"available","serving_blocked_reason":null,"options_selectable":true,"slot_serving":{"free":{"serving_status":"available","blocked_reason":null,"options_selectable":true,"stale_or_unavailable":false,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}},"marquee":{"serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","options_selectable":false,"stale_or_unavailable":true,"option_set_status":"active","generation_reason":"refresh_policy","inventory_source_policy":{"mode":"one_per_pick_identity"}}},"stale_or_unavailable":false,"total_options":6,"event_count":1,"free_option_count":6,"marquee_option_count":0,"market_counts":{"h2h":2,"spreads":2,"totals":2},"marquee_event":null,"slot_availability":null,"event_odds_refresh_target_summary":{"uses_live_provider_calls":false,"target_count":0,"total_estimated_request_cost":0,"freshness_reasons":[],"skipped_unavailable_slots":[{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected"}],"api_request":{"method":"GET","path":"/inventory/operations/pick-period-event-odds-refresh-targets","query":{"competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"be7f51f7-9044-46b3-9267-508d15cf1f0f"},"context":{"operation":"pick_period_event_odds_refresh_target_discovery","query_scope":"competition_pick_period","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"be7f51f7-9044-46b3-9267-508d15cf1f0f","target_scope":"visible_pick_period_options_requiring_targeted_event_odds_refresh","inventory_source":"stored_canonical_pick_inventory","review_scope":"pick_period_event_odds_refresh_targets","uses_live_provider_calls":false},"uses_live_provider_calls":false}}}]}]},"active_board_event_odds_refresh_worklist":{"generated_at":"2026-06-05T18:39:41.501579Z","uses_live_provider_calls":false,"filters":{"competition_id":null,"user_id":null,"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"competition_statuses":["active","scheduled"],"period_statuses":["open","upcoming"],"default_request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"default_request_contract":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_gaps":[],"uses_live_provider_calls":false},"default_normalization_contract":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[],"uses_live_provider_calls":false}},"totals":{"competitions":2,"periods_scanned":14,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"retry_backoff_targets":0,"retry_review_targets":0,"selected_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"deduped_estimated_request_cost":0,"deduped_full_market_estimated_request_cost":0,"skipped_unavailable_slots":6},"skipped_unavailable_slots":[{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"45be4e2a-8eb7-491f-a9c3-99975a5ad4f9"},{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"a3de972f-c9a5-4b37-844d-e08417d11ffa"},{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"e0994189-34fc-4b52-8f42-2a8f884a4780"},{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"7460b1e3-78a1-4a23-93de-56e267f4ac05"},{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"87bf3030-e9de-4319-84e0-5ad281dbe97d"},{"slot_type":"marquee","serving_status":"marquee_unavailable","blocked_reason":"marquee_not_selected","competition_id":"dac9df11-5b80-4c3d-aa52-4bfefdefa804","pick_period_id":"be7f51f7-9044-46b3-9267-508d15cf1f0f"}],"execution_manifest":{"uses_live_provider_calls":false,"selected_target_count":0,"refreshable_target_count":0,"estimated_request_cost":0,"full_market_estimated_request_cost":0,"request_contracts_by_provider":{},"fallback_request_contract_providers":[],"request_contract_gaps_by_provider":{},"normalization_contracts_by_provider":{},"fallback_normalization_contract_providers":[],"normalization_contract_gaps_by_provider":{},"live_execution_blockers":[],"dry_run_api_requests":[],"execute_templates":[],"operator_commands":[],"execute_command_templates":[],"selected_provider_events":[],"live_provider_calls_require_execute_and_approval":false,"approval_policy":"Run each dry_run_api_request first, then execute only the corresponding execute_template after reviewing the dry-run approval hash and provider event identity.","batch_execute_api":null},"targets":[],"skipped_targets":[]},"refresh_policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:36.775187Z","policy":{"run_mode":"full","enabled_components":["events","local","odds","scores","sports"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T18:39:36.775187+00:00","commence_time_to":"2026-06-19T18:39:36.775187+00:00"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T18:39:36.775187+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":true,"due_count":1,"next_due_at":"2026-06-05T18:39:36.775187+00:00","next_due_sports":[{"provider_sport_key":"basketball_nba","sport_title":"NBA","last_success_at":null,"next_due_at":"2026-06-05T18:39:36.775187+00:00","stale_hours":24,"due":true}]},"odds":{"component_enabled":true,"due_count":0,"next_due_at":"2026-06-05T20:10:55.436542+00:00","next_due_sports":[{"provider_sport_key":"basketball_nba","sport_title":"NBA","last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-05T20:10:55.436542+00:00","stale_hours":4,"active_provider_lines":6,"due":false}]},"scores":{"component_enabled":true,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"fresh"},"events_refresh":{"candidate_count":1,"target_count":1,"skipped_target_count":0,"estimated_credits":0,"targets":[{"provider_sport_key":"basketball_nba","sport_group":"Basketball","sport_title":"NBA","refresh_priority_rank":0,"refresh_priority":null,"provider_events":1,"last_event_refresh":null,"estimated_credits":0,"reason":"never refreshed"}],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":["basketball_nba"],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":true,"can_execute_live":true,"live_execution_blockers":[],"approval_hash":"710f9b3c6d3f01de7b37c28754b7c79c8f91d0cbb2221260e159630deb4fd216","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"full","enabled_components":["events","local","odds","scores","sports"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":["basketball_nba"],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":1,"odds":0,"scores":0},"targets":{"events":[{"provider_sport_key":"basketball_nba","reason":"never refreshed","estimated_credits":0,"refresh_priority":null}],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":1,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":["basketball_nba"],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","basketball_nba","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","710f9b3c6d3f01de7b37c28754b7c79c8f91d0cbb2221260e159630deb4fd216"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","full","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","full","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","basketball_nba","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","710f9b3c6d3f01de7b37c28754b7c79c8f91d0cbb2221260e159630deb4fd216"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode full --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode full --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports basketball_nba --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash 710f9b3c6d3f01de7b37c28754b7c79c8f91d0cbb2221260e159630deb4fd216","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"full","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"full","enabled_components":["events","local","odds","scores","sports"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":1,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":["basketball_nba"],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":true,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"full","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":["basketball_nba"],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"710f9b3c6d3f01de7b37c28754b7c79c8f91d0cbb2221260e159630deb4fd216"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"full","enabled_components":["events","local","odds","scores","sports"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":1,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":["basketball_nba"],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":true,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":true},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"schedule_preflight":{"provider_key":"the_odds_api","provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"readiness":{"status":"degraded","ready_for_picks":true,"blocker_count":0,"warning_count":1,"refresh_policy_due":{"due":true,"sports":0,"events":1,"odds":0,"scores":0,"skipped_odds":0}},"onboarding_readiness":{"status":"ready","ready_for_onboarding":true,"blocker_count":0,"warning_count":0,"review_target_counts":{}},"provider_inventory_summary":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:41.781552Z","uses_live_provider_calls":false,"provider":{"registered":true,"enabled":true,"active_supported_sports":1,"supported_sports":1,"provider_sports":1},"canonical_inventory":{"provider_events":1,"canonical_events":1,"active_provider_lines":6,"inactive_provider_lines":0,"open_pickable_lines":6,"pickable_line_sources":6,"active_pickable_line_sources":6,"active_option_sets":14,"stale_active_option_sets":0,"option_set_regeneration_recommended":0,"option_set_regeneration_missing":0,"option_set_regeneration_stale":0,"option_set_regeneration_inventory_changed":0},"canonical_inventory_health":{"status":"healthy","uses_live_provider_calls":false,"thresholds":{"source_stale_cutoff":"2026-06-05T06:39:41.781552Z","source_max_age_seconds":43200,"lock_risk_cutoff":"2026-06-05T19:09:41.781552Z","close_to_lock_refresh_window_seconds":1800},"totals":{"open_eligible_lines":6,"open_eligible_events":1,"sport_count":1,"league_count":1,"market_count":3,"source_stale_lines":0,"serveable_source_stale_options":0,"serveable_source_stale_pickable_lines":0,"serveable_source_stale_events":0,"background_source_stale_lines":0,"near_lock_lines":0,"serveable_near_lock_options":0,"serveable_near_lock_pickable_lines":0,"serveable_near_lock_events":0,"background_near_lock_lines":0,"active_open_options":84,"serveable_open_options":84,"materialized_open_pickable_lines":6,"serveable_open_pickable_lines":6,"unmaterialized_open_pickable_lines":0,"active_option_sets":14,"serveable_option_sets":14,"max_source_age_seconds":8926,"min_seconds_to_lock":19873},"issue_counts":{},"market_counts":{"h2h":2,"spreads":2,"totals":2},"top_sports":[{"sport_code":"basketball","sport_title":"Basketball","open_eligible_lines":6,"open_eligible_events":1,"league_count":1,"next_commence_time":"2026-06-06T00:10:55Z","market_counts":{"h2h":2,"spreads":2,"totals":2}}],"recommended_actions":[]},"active_board_event_odds":{"limit":10,"max_estimated_request_cost":30,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"retry_backoff_targets":0,"retry_review_targets":0,"selected_estimated_request_cost":0,"deduped_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"deduped_full_market_estimated_request_cost":0,"execution_manifest":{"uses_live_provider_calls":false,"selected_target_count":0,"refreshable_target_count":0,"estimated_request_cost":0,"full_market_estimated_request_cost":0,"request_contracts_by_provider":{},"fallback_request_contract_providers":[],"request_contract_gaps_by_provider":{},"normalization_contracts_by_provider":{},"fallback_normalization_contract_providers":[],"normalization_contract_gaps_by_provider":{},"live_execution_blockers":[],"dry_run_api_requests":[],"execute_templates":[],"operator_commands":[],"execute_command_templates":[],"selected_provider_events":[],"live_provider_calls_require_execute_and_approval":false,"approval_policy":"Run each dry_run_api_request first, then execute only the corresponding execute_template after reviewing the dry-run approval hash and provider event identity.","batch_execute_api":null},"execution_handoff":{"dry_run_api_request":{"method":"POST","path":"/inventory/operations/active-board-event-odds-refresh","body":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320,"execute":false},"context":{"operation":"active_board_event_odds_refresh","selected_target_count":0,"skipped_target_count":0,"provider_events":[],"max_daily_request_credits":320,"max_estimated_request_cost":30,"estimated_request_cost":0,"worklist_totals":{"competitions":2,"periods_scanned":14,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"retry_backoff_targets":0,"retry_review_targets":0,"selected_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"deduped_estimated_request_cost":0,"deduped_full_market_estimated_request_cost":0,"skipped_unavailable_slots":6},"filters":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320},"request_contracts_by_provider":{},"normalization_contracts_by_provider":{},"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request_template":{"method":"POST","path":"/inventory/operations/active-board-event-odds-refresh","body":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320,"execute":true,"rebuild_local":true,"approved_provider_events":"<from dry-run approval.approved_provider_events>","approved_plan_hash":"<from dry-run approval.approved_plan_hash>"},"context":{"operation":"active_board_event_odds_refresh","selected_target_count":0,"skipped_target_count":0,"provider_events":[],"max_daily_request_credits":320,"max_estimated_request_cost":30,"estimated_request_cost":0,"worklist_totals":{"competitions":2,"periods_scanned":14,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"retry_backoff_targets":0,"retry_review_targets":0,"selected_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"deduped_estimated_request_cost":0,"deduped_full_market_estimated_request_cost":0,"skipped_unavailable_slots":6},"filters":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320},"request_contracts_by_provider":{},"normalization_contracts_by_provider":{},"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"request_contracts_by_provider":{},"normalization_contracts_by_provider":{}},"can_execute_live":false,"live_execution_blockers":[],"request_contracts_by_provider":{},"fallback_request_contract_providers":[],"request_contract_gaps_by_provider":{},"normalization_contracts_by_provider":{},"fallback_normalization_contract_providers":[],"normalization_contract_gaps_by_provider":{},"dry_run_command":"uv run python -m app.jobs.inventory active-board-event-odds-refresh --provider-key the_odds_api --limit 10 --max-estimated-request-cost 30 --limit-per-slot 500 --max-daily-request-credits 320 --json","execute_command_template":null,"execute_requires_dry_run_approval":false,"execution_uses_live_provider_calls":false},"selected_target_sample":[],"selected_urgency":{"status":"none","selected_targets":0,"urgent_targets":0,"source_stale_targets":0,"close_to_lock_targets":0,"proactive_targets":0,"no_reason_targets":0,"reason_counts":{},"max_source_age_seconds":null,"min_seconds_to_lock":null},"daily_remaining_partial_batch":{"available":false,"max_estimated_request_cost":320,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"selected_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"execution_manifest":{},"execution_handoff":{},"selected_target_sample":[],"selected_urgency":{"status":"none","selected_targets":0,"urgent_targets":0,"source_stale_targets":0,"close_to_lock_targets":0,"proactive_targets":0,"no_reason_targets":0,"reason_counts":{},"max_source_age_seconds":null,"min_seconds_to_lock":null}},"next_recovery_partial_batch":{"available":false,"available_at":null},"latest_refresh_job":null},"market_gap_summary":{"candidate_sports":0,"returned_items":0,"live_action_sports":0,"local_action_sports":0,"actionable_local_sports":0,"passive_wait_sports":0,"selected_event_refresh_sports":0,"selected_odds_refresh_sports":0,"coverage_limitation_status":"clear","coverage_limitation_passive_wait_sports":0,"missing_core_market_counts":{"h2h":0,"spreads":0,"totals":0},"recommended_operator_action":"No passive provider market-coverage waits are present.","uses_live_provider_calls":false},"quota":{"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"latest_quota_remaining":null,"latest_request_cost":0,"latest_request_type":"odds","latest_request_success":true,"latest_request_finished_at":"2026-06-05T16:10:55.436542Z","request_count_24h":2,"request_cost_24h":0,"request_cost_7d":0,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0},"latest_job_run":{"id":"fccfaa55-1d48-420a-a6ee-ce40b812c4b0","job_key":"run_refresh_policy","status":"succeeded","trigger":"manual","started_at":"2026-06-05T18:30:37.519548Z","finished_at":"2026-06-05T18:30:38.320204Z","summary_json":{"execute_live":true,"provider_key":"the_odds_api","run_mode":"local","max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":168,"request_scope":{"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null},"score_provider_sport_key":null,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"rebuild_local":true,"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"approved_plan_hash":null,"scheduled_profile_approval":null,"policy_plan":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:30:37.642347+00:00","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"lookahead_days":14,"skip_sports_refresh":false,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"commence_time_from":"2026-06-05T18:30:37.642347+00:00","commence_time_to":"2026-06-19T18:30:37.642347+00:00"},"sports_refresh":{"due":false,"estimated_credits":0,"last_success_at":"2026-06-05T16:10:55.436542+00:00","known_provider_sports":1,"active_supported_sports":1,"reason":"disabled_by_run_mode"},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"refresh_forecast":{"generated_at":"2026-06-05T18:30:37.642347+00:00","sports":{"component_enabled":true,"due":false,"last_success_at":"2026-06-05T16:10:55.436542+00:00","next_due_at":"2026-06-06T16:10:55.436542+00:00","stale_hours":24},"events":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"odds":{"component_enabled":false,"due_count":0,"next_due_at":null,"next_due_sports":[]},"scores":{"component_enabled":false,"due_count":0,"next_due_at":null},"policy":"Forecast is read-only and uses stored provider request timestamps plus configured freshness windows."},"events_refresh":{"candidate_count":0,"target_count":0,"skipped_target_count":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh broad event/team inventory across active supported sports before spending odds credits."},"odds_refresh":{"candidate_count":0,"selected_target_count":0,"skipped_target_count":0,"estimated_credits":0,"max_credits":90,"selection_credit_cap":90,"latest_quota_remaining":null,"targets":[],"skipped_targets":[],"policy":"Refresh broad odds only inside the explicit credit cap; low recent pickable yield ranks later unless explicitly prioritized."},"scores_refresh":{"target_count":0,"skipped_target_count":0,"estimated_provider_calls":0,"estimated_credits":0,"targets":[],"skipped_targets":[],"policy":"Refresh scores only for provider sports with pending picked events that have started."},"local_inventory":{"uses_live_provider_calls":false,"steps":["build_pickable_universe","regenerate_active_option_sets_when_recommended","expire_started_inventory","lock_started_picks","score_pending_picks_from_stored_provider_scores"]},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"execution_preview":{"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[],"approval_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","approval_snapshot":{"version":1,"provider_key":"the_odds_api","policy":{"run_mode":"local","enabled_components":["local"],"provider_enabled":true,"provider_capabilities":{"supports_odds":true,"supports_scores":true,"supports_event_odds_refresh":true},"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"skip_sports_refresh":false},"request_budget":{"estimated_credits":0,"uncapped_estimated_credits":0,"selection_credit_cap":120,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null},"approval":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"targets":{"events":[],"odds":[],"scores":[]}},"estimated_total_request_credits":0,"uncapped_estimated_total_request_credits":0,"estimated_odds_credits":0,"latest_quota_remaining":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"approval_args":["--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168"],"execute_command_args":["uv","run","python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--max-odds-credits","90","--max-score-refresh-calls","25","--max-total-request-credits","120","--max-daily-request-credits","320","--lookahead-days","14","--sports-stale-hours","24","--events-stale-hours","24","--odds-stale-hours","4","--empty-odds-stale-hours","24","--refresh-yield-lookback-hours","168","--execute","--approved-no-sports-refresh","--approved-event-sports","","--approved-odds-sports","","--approved-score-sports","","--approved-plan-hash","ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"],"dry_run_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168","execute_command":"uv run python -m app.jobs.inventory run-refresh-policy --provider-key the_odds_api --run-mode local --max-odds-credits 90 --max-score-refresh-calls 25 --max-total-request-credits 120 --max-daily-request-credits 320 --lookahead-days 14 --sports-stale-hours 24 --events-stale-hours 24 --odds-stale-hours 4 --empty-odds-stale-hours 24 --refresh-yield-lookback-hours 168 --execute --approved-no-sports-refresh --approved-event-sports '' --approved-odds-sports '' --approved-score-sports '' --approved-plan-hash ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67","dry_run_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":false,"rebuild_local":false},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_api_request":{"method":"POST","path":"/inventory/operations/refresh-policy","body":{"provider_key":"the_odds_api","markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_odds_credits":90,"max_event_sports":null,"max_total_request_credits":120,"max_daily_request_credits":320,"max_score_refresh_calls":25,"sports_stale_hours":24,"events_stale_hours":24,"odds_stale_hours":4,"empty_odds_stale_hours":24,"refresh_sport_priority":[],"refresh_yield_lookback_hours":168,"lookahead_days":14,"run_mode":"local","competition_id":null,"pick_period_id":null,"score_provider_sport_key":null,"execute":true,"rebuild_local":true,"approved_sports_refresh_due":false,"approved_event_sports":[],"approved_odds_sports":[],"approved_score_sports":[],"approved_plan_hash":"ffd93ed7a66755ff87c96a2c491302691f3c65002a48551beedc88798b1eca67"},"context":{"operation":"refresh_policy","provider_key":"the_odds_api","run_mode":"local","enabled_components":["local"],"markets":["h2h","spreads","totals"],"regions":"us","bookmakers":null,"max_event_sports":null,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"lookahead_days":14,"refresh_sport_priority":[],"event_provider_sport_keys":null,"odds_provider_sport_keys":null,"score_provider_sport_key":null,"competition_id":null,"pick_period_id":null,"selected_counts":{"sports":0,"events":0,"odds":0,"scores":0},"selected_provider_sport_keys":{"events":[],"odds":[],"scores":[]},"request_budget":{"max_credits":120,"max_total_credits":120,"max_daily_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"effective_max_credits":120,"selection_credit_cap":120,"latest_quota_remaining":null,"estimated_credits":0,"uncapped_estimated_credits":0,"skipped_sports":0,"skipped_events":0,"skipped_odds":0,"skipped_scores":0,"policy":"Select live provider call types inside configured provider usage-credit caps."},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"execute_requires_dry_run_approval":true,"uses_live_provider_calls":false},"policy":"Review the dry run, then execute only if the selected targets and estimated credits are acceptable."}},"provider_quota_health":{"provider_key":"the_odds_api","uses_live_provider_calls":false,"status":"ok","allowed":true,"blockers":[],"warnings":[],"planned_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"policy":"Final live refresh guard across selected sports, event, odds, and score provider calls."},"live_provider_calls":{"sports":0,"events":0,"odds":0,"scores":0,"skipped_scores":0,"estimated_odds_credits":0,"max_event_sports":null,"skipped_event_sports":0,"max_odds_credits":90,"max_score_refresh_calls":25,"max_total_request_credits":120,"max_daily_request_credits":320,"estimated_total_request_credits":0,"commence_time_from":"2026-06-05T18:30:37.642347+00:00","commence_time_to":"2026-06-19T18:30:37.642347+00:00","actual_request_cost":0},"sports_refresh":{"executed":false,"failures":0},"events_refresh":{"executed":0,"failures":0},"odds_refresh":{"executed":0,"failures":0,"request_cost":0},"scores_refresh":{"executed":0,"failures":0,"request_cost":0,"skipped":0,"scores":0,"canonical_events_updated":0,"canonical_event_results":0,"settled_canonical_event_results":0,"retired_pickable_lines":0,"retired_pick_options":0},"local_inventory":{"executed":true,"regenerate_option_sets":true,"prune_line_snapshots":true,"rebuild":{"pickable_universe":{"eligible_lines":6,"provider_lines_seen":6},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"reason":"refresh_policy"},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0}},"maintenance":{"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:30:38.142541+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"expired_inventory":{"locked_pickable_lines":0,"locked_pick_options":0},"provider_line_snapshots":{"retention_days":7,"cutoff":"2026-05-29T18:30:38.142541+00:00","deleted_snapshots":0,"disabled":false},"option_sets":{"eligible_periods":14,"option_sets":0,"options":0,"skipped_current":14,"regeneration_recommended":0,"status_counts":{"active_option_set_current":14,"no_active_option_set":0,"active_option_set_stale":0,"active_option_set_rules_changed":0,"active_option_set_inventory_changed":0},"generated":[],"reason":"local_maintenance","force":false},"locked_picks":{"locked_picks":0},"scored_picks":{"seen":0,"resolved":0,"pending":0,"cancelled":0,"unscorable":0},"needs_review":{"seen":0,"marked_needs_review":0,"grace_hours":48}},"actual_request_cost":0},"error_message":null},"latest_active_board_event_odds_refresh_job":null,"operator_next_action":{"key":"monitor","label":"Monitor inventory","uses_live_provider_calls":false,"reason":"Stored canonical inventory is present and no immediate active-board event odds batch is selected."}},"local_recovery":{"uses_live_provider_calls":false,"option_set_recovery_needed":false,"option_set_status":"ok","option_set_message":"14 of 14 current competition periods have current option sets.","option_set_regeneration_recommended":0,"option_set_regeneration_missing":0,"option_set_regeneration_stale":0,"recommended_command":null,"regenerate_option_sets_api_request":null,"local_maintenance_api_request":null},"cost_window":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:37.151117Z","request_count_24h":2,"failed_request_count_24h":0,"unresolved_failed_request_count_24h":0,"unresolved_failure_groups_24h":[],"request_cost_24h":0,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"request_count_7d":2,"failed_request_count_7d":0,"unresolved_failed_request_count_7d":0,"unresolved_failure_groups_7d":[],"request_cost_7d":0,"latest_request_finished_at":"2026-06-05T16:10:55.436542Z","latest_request_type":"odds","latest_request_success":true,"latest_quota_remaining":null,"latest_quota_used":null,"latest_request_cost":0,"latest_objects_returned":1,"latest_object_limit_remaining":null,"latest_request_limit_remaining":null,"latest_response_notice":null,"latest_next_cursor":null},"deployment_recommendation":{"posture":"local_enabled_provider_quota_review","reason":"The no-quota maintenance schedule is safe; live provider schedules need explicit quota review before enablement.","enable_by_default":["inventory-local-maintenance"],"keep_disabled_until_review":["inventory-broad-refresh","inventory-settlement"],"read_only_checks":["/inventory/operations/readiness","/inventory/operations/provider-inventory-summary","/inventory/operations/provider-onboarding-readiness","/inventory/operations/breadth-summary","/inventory/operations/provider-sport-market-gap-worklist","/inventory/operations/lookahead-policy-recommendation","/inventory/operations/breadth-refresh-plan","/inventory/operations/refresh-policy-plan"],"live_provider_due":true,"provider_inventory_header":{"provider_enabled":true,"active_supported_sports":1,"open_pickable_lines":6,"active_provider_lines":6,"active_option_sets":14,"active_board_selected_targets":0,"active_board_deduped_targets":0,"active_board_selected_estimated_request_cost":0,"active_board_selected_full_market_estimated_request_cost":0,"active_board_request_contracts_by_provider":{},"active_board_fallback_request_contract_providers":[],"active_board_request_contract_gaps_by_provider":{},"active_board_normalization_contracts_by_provider":{},"active_board_fallback_normalization_contract_providers":[],"active_board_normalization_contract_gaps_by_provider":{},"active_board_live_execution_blockers":[],"market_gap_candidate_sports":0,"market_gap_live_action_sports":0,"market_gap_actionable_local_sports":0,"market_gap_passive_wait_sports":0,"market_gap_coverage_limitation_status":"clear","daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"operator_next_action":{"key":"monitor","label":"Monitor inventory","uses_live_provider_calls":false,"reason":"Stored canonical inventory is present and no immediate active-board event odds batch is selected."},"uses_live_provider_calls":false},"provider_onboarding_gate":{"status":"ready","ready_for_onboarding":true,"blockers":[],"warnings":[],"blocker_count":0,"warning_count":0,"review_target_counts":{},"policy":"Provider-quota schedules should stay disabled until onboarding readiness has no blockers and any warning checks have been explicitly reviewed."},"local_recovery":{"uses_live_provider_calls":false,"option_set_recovery_needed":false,"option_set_status":"ok","option_set_message":"14 of 14 current competition periods have current option sets.","option_set_regeneration_recommended":0,"option_set_regeneration_missing":0,"option_set_regeneration_stale":0,"recommended_command":null,"regenerate_option_sets_api_request":null,"local_maintenance_api_request":null},"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"provider_quota_cost_gates":{"inventory-broad-refresh":{"status":"review_required","provider_quota":true,"profile_due":true,"uses_live_provider_calls":true,"estimated_request_credits":0,"uncapped_estimated_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":true,"live_execution_blockers":[],"skipped_live_targets":{"sports":0,"events":0,"odds":0,"scores":0},"refresh_policy_skipped_targets":{"total_skipped_target_count":0,"components":{"events":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"odds":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"scores":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]}}},"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":["basketball_nba"],"odds_sport_keys":[],"score_sport_keys":[]},"onboarding_gate":{"status":"ready","ready_for_onboarding":true,"blockers":[],"warnings":[],"blocker_count":0,"warning_count":0,"review_target_counts":{},"policy":"Provider-quota schedules should stay disabled until onboarding readiness has no blockers and any warning checks have been explicitly reviewed."},"blockers":[],"warnings":[],"operator_action":"manual_cost_review_required_before_enabling","policy":"Provider-quota schedules stay disabled until this read-only gate has no blockers and an operator accepts the current selected live targets and request-credit caps."},"inventory-settlement":{"status":"idle","provider_quota":true,"profile_due":false,"uses_live_provider_calls":false,"estimated_request_credits":0,"uncapped_estimated_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[],"skipped_live_targets":{"sports":0,"events":0,"odds":0,"scores":0},"refresh_policy_skipped_targets":{"total_skipped_target_count":0,"components":{"events":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"odds":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"scores":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]}}},"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"onboarding_gate":{"status":"ready","ready_for_onboarding":true,"blockers":[],"warnings":[],"blocker_count":0,"warning_count":0,"review_target_counts":{},"policy":"Provider-quota schedules should stay disabled until onboarding readiness has no blockers and any warning checks have been explicitly reviewed."},"blockers":[],"warnings":[],"operator_action":"keep_disabled_until_live_work_is_due","policy":"Provider-quota schedules stay disabled until this read-only gate has no blockers and an operator accepts the current selected live targets and request-credit caps."}},"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":["basketball_nba"],"odds_sport_keys":[],"score_sport_keys":[]}},"profiles":[{"profile_key":"inventory-local-maintenance","description":"Database-only inventory maintenance: expire started lines/options, lock started picks, score from stored facts, and regenerate stale/missing active option sets.","schedule_expression":"rate(15 minutes)","enabled_by_default":true,"provider_quota":false,"run_mode":"local","approval_policy":"not_required","gate_status":"default_enabled","operator_action":"safe_to_schedule","technical_blockers":[],"profile_due":false,"cost_gate":{"status":"not_applicable","provider_quota":false,"profile_due":false,"uses_live_provider_calls":false,"blockers":[],"warnings":[],"operator_action":"no_provider_quota_review_required"},"command":["python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","local","--lookahead-days","14","--regenerate-option-sets","--prune-line-snapshots","--execute"],"operator_endpoints":[{"method":"POST","path":"/inventory/operations/local-maintenance","uses_live_provider_calls":false,"purpose":"Run the database-only maintenance tick immediately."},{"method":"POST","path":"/inventory/operations/local-inventory-rebuild","uses_live_provider_calls":false,"purpose":"Rebuild PickCenter pickable inventory from stored provider rows."},{"method":"GET","path":"/inventory/operations/lookahead-policy-recommendation","uses_live_provider_calls":false,"purpose":"Review sport-specific lookahead overrides before rebuilding local inventory."},{"method":"POST","path":"/inventory/operations/active-option-sets","uses_live_provider_calls":false,"purpose":"Regenerate recommended active/upcoming option sets."}],"cost_controls":{"max_total_request_credits":null,"max_daily_request_credits":null,"max_odds_credits":null,"max_score_refresh_calls":null,"lookahead_days":14,"refresh_yield_lookback_hours":null,"provider_sport_lookahead_days":"","provider_sport_lookahead_days_map":{},"local_maintenance_regenerate_option_sets":true,"local_maintenance_prune_line_snapshots":true,"cost_notes":["Does not construct a live provider client.","Costs only the scheduled container task/database work.","Regenerates recommended active option sets from stored inventory by default.","Prunes provider line snapshots using the configured retention window by default."]},"current_plan":{"uses_live_provider_calls":false}},{"profile_key":"inventory-broad-refresh","description":"Quota-capped broad provider stocking: sports catalog, event refresh, odds refresh, local pickable-universe rebuild, and active option-set regeneration.","schedule_expression":"rate(4 hours)","enabled_by_default":false,"provider_quota":true,"run_mode":"broad_inventory","approval_policy":"disabled_until_manual_bootstrap_review","gate_status":"manual_enablement_required","operator_action":"review_provider_quota_caps_and_current_refresh_plan","technical_blockers":[],"profile_due":true,"cost_gate":{"status":"review_required","provider_quota":true,"profile_due":true,"uses_live_provider_calls":true,"estimated_request_credits":0,"uncapped_estimated_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":true,"live_execution_blockers":[],"skipped_live_targets":{"sports":0,"events":0,"odds":0,"scores":0},"refresh_policy_skipped_targets":{"total_skipped_target_count":0,"components":{"events":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"odds":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"scores":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]}}},"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":["basketball_nba"],"odds_sport_keys":[],"score_sport_keys":[]},"onboarding_gate":{"status":"ready","ready_for_onboarding":true,"blockers":[],"warnings":[],"blocker_count":0,"warning_count":0,"review_target_counts":{},"policy":"Provider-quota schedules should stay disabled until onboarding readiness has no blockers and any warning checks have been explicitly reviewed."},"blockers":[],"warnings":[],"operator_action":"manual_cost_review_required_before_enabling","policy":"Provider-quota schedules stay disabled until this read-only gate has no blockers and an operator accepts the current selected live targets and request-credit caps."},"command":["python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","broad_inventory","--max-total-request-credits","120","--max-daily-request-credits","320","--max-odds-credits","90","--lookahead-days","14","--refresh-yield-lookback-hours","168","--scheduled-profile-key","inventory-broad-refresh","--execute"],"operator_endpoints":[{"method":"GET","path":"/inventory/operations/provider-onboarding-readiness","uses_live_provider_calls":false,"purpose":"Review consolidated provider onboarding, source identity, pick-serving, and cost posture before enabling spend."},{"method":"GET","path":"/inventory/operations/refresh-policy-plan","uses_live_provider_calls":false,"purpose":"Review selected broad inventory targets and quota estimate before enabling spend."},{"method":"GET","path":"/inventory/operations/breadth-refresh-plan","uses_live_provider_calls":false,"purpose":"Convert breadth worklist rows into a bounded refresh-policy dry-run and execute template."},{"method":"POST","path":"/inventory/operations/refresh-policy","uses_live_provider_calls":true,"purpose":"Dry-run first, then execute approved broad inventory targets under configured caps."},{"method":"GET","path":"/inventory/operations/provider-sports","uses_live_provider_calls":false,"purpose":"Inspect supported sport breadth and per-sport recommended actions."},{"method":"GET","path":"/inventory/operations/breadth-summary","uses_live_provider_calls":false,"purpose":"Review top blockers and no-quota remediation options before widening provider spend."},{"method":"GET","path":"/inventory/operations/refresh-yield","uses_live_provider_calls":false,"purpose":"Review recent provider spend against current pickable inventory before enabling broad refresh spend."},{"method":"GET","path":"/inventory/operations/lookahead-policy-recommendation","uses_live_provider_calls":false,"purpose":"Review sport-specific lookahead overrides before enabling broad scheduled refresh."},{"method":"GET","path":"/inventory/operations/pickable-eligibility-diagnostics","uses_live_provider_calls":false,"purpose":"Explain why stored provider lines are or are not PickCenter-pickable."}],"cost_controls":{"max_total_request_credits":120,"max_daily_request_credits":320,"max_odds_credits":90,"max_score_refresh_calls":null,"lookahead_days":14,"refresh_yield_lookback_hours":168,"provider_sport_lookahead_days":"","provider_sport_lookahead_days_map":{},"local_maintenance_regenerate_option_sets":null,"local_maintenance_prune_line_snapshots":null,"cost_notes":["Spends live provider quota only inside the refresh-policy selected targets.","Disabled by default until a manual bootstrap confirms sport breadth and quota headroom."]},"current_plan":{"sports":0,"events":1,"odds":0,"skipped_odds":0,"estimated_odds_credits":0,"estimated_total_request_credits":0,"refresh_yield_lookback_hours":168,"next_due_at":{"sports":"2026-06-06T16:10:55.436542+00:00","events":"2026-06-05T18:39:36.775187+00:00","odds":"2026-06-05T20:10:55.436542+00:00"},"approval":{"sports_refresh_due":false,"event_sport_keys":["basketball_nba"],"odds_sport_keys":[],"score_sport_keys":[]},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":true,"live_execution_blockers":[]}},{"profile_key":"inventory-settlement","description":"Pending-pick settlement: refresh scores only for provider sports with started pending picks, then score from stored canonical result facts.","schedule_expression":"rate(30 minutes)","enabled_by_default":false,"provider_quota":true,"run_mode":"settlement","approval_policy":"disabled_until_pending_pick_review","gate_status":"idle","operator_action":"enable_when_real_pending_started_picks_need_score_refresh","technical_blockers":[],"profile_due":false,"cost_gate":{"status":"idle","provider_quota":true,"profile_due":false,"uses_live_provider_calls":false,"estimated_request_credits":0,"uncapped_estimated_request_credits":0,"max_total_request_credits":120,"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"latest_quota_remaining":null,"provider_credit_costs":{"sports_refresh":0,"events_refresh":0,"score_refresh":2},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[],"skipped_live_targets":{"sports":0,"events":0,"odds":0,"scores":0},"refresh_policy_skipped_targets":{"total_skipped_target_count":0,"components":{"events":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"odds":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]},"scores":{"skipped_target_count":0,"reason_counts":{},"sample_targets":[]}}},"selected_live_targets":{"sports_refresh_due":false,"event_sport_keys":[],"odds_sport_keys":[],"score_sport_keys":[]},"onboarding_gate":{"status":"ready","ready_for_onboarding":true,"blockers":[],"warnings":[],"blocker_count":0,"warning_count":0,"review_target_counts":{},"policy":"Provider-quota schedules should stay disabled until onboarding readiness has no blockers and any warning checks have been explicitly reviewed."},"blockers":[],"warnings":[],"operator_action":"keep_disabled_until_live_work_is_due","policy":"Provider-quota schedules stay disabled until this read-only gate has no blockers and an operator accepts the current selected live targets and request-credit caps."},"command":["python","-m","app.jobs.inventory","run-refresh-policy","--provider-key","the_odds_api","--run-mode","settlement","--max-total-request-credits","25","--max-daily-request-credits","320","--max-score-refresh-calls","25","--lookahead-days","14","--scheduled-profile-key","inventory-settlement","--execute"],"operator_endpoints":[{"method":"GET","path":"/inventory/operations/provider-onboarding-readiness","uses_live_provider_calls":false,"purpose":"Confirm provider onboarding and cost posture before enabling score-refresh spend."},{"method":"GET","path":"/inventory/operations/score-refresh-targets","uses_live_provider_calls":false,"purpose":"Inspect started pending picked events that need score refresh."},{"method":"POST","path":"/inventory/operations/score-settlement","uses_live_provider_calls":true,"purpose":"Dry-run first, then refresh approved score sports and settle picks."},{"method":"POST","path":"/inventory/operations/local-maintenance","uses_live_provider_calls":false,"purpose":"Settle from already stored canonical result facts without provider calls."}],"cost_controls":{"max_total_request_credits":25,"max_daily_request_credits":320,"max_odds_credits":null,"max_score_refresh_calls":25,"lookahead_days":14,"refresh_yield_lookback_hours":null,"provider_sport_lookahead_days":"","provider_sport_lookahead_days_map":{},"local_maintenance_regenerate_option_sets":null,"local_maintenance_prune_line_snapshots":null,"cost_notes":["Spends score endpoint calls only when pending submitted picks need results.","Disabled by default until there are real locked/pending picks to settle."]},"current_plan":{"scores":0,"skipped_scores":0,"estimated_provider_calls":0,"approval":{"score_sport_keys":[]},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"odds_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["odds_request_scope_factory","odds_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]}},{"profile_key":"inventory-breadth-expansion-plan","description":"Read-only breadth expansion plan: inspect provider sports with missing PickCenter core markets, separate no-spend/provider-coverage gaps from event-list refresh candidates, and render a bounded refresh-policy handoff without executing provider calls.","schedule_expression":"rate(6 hours)","enabled_by_default":false,"provider_quota":false,"run_mode":"breadth_expansion_plan","approval_policy":"dry_run_only_operator_handoff","gate_status":"optional_monitor","operator_action":"schedule_only_if_breadth_gap_monitoring_is_worth_task_cost","technical_blockers":[],"profile_due":false,"cost_gate":{"status":"not_applicable","provider_quota":false,"profile_due":false,"uses_live_provider_calls":false,"blockers":[],"warnings":[],"operator_action":"no_provider_quota_review_required"},"command":["python","-m","app.jobs.inventory","provider-sport-market-gap-worklist","--provider-key","the_odds_api","--limit","25","--max-refresh-sports","5"],"operator_endpoints":[{"method":"GET","path":"/inventory/operations/provider-sport-market-gap-worklist","uses_live_provider_calls":false,"purpose":"Inspect sports whose stored provider coverage is empty, event-only, inactive, or missing core markets."},{"method":"GET","path":"/inventory/operations/breadth-summary","uses_live_provider_calls":false,"purpose":"Review the same breadth blockers in PickCenter pickable-inventory terms."},{"method":"GET","path":"/inventory/operations/breadth-refresh-plan","uses_live_provider_calls":false,"purpose":"Render a bounded dry-run handoff for approved event-list expansion candidates."},{"method":"POST","path":"/inventory/operations/refresh-policy","uses_live_provider_calls":true,"purpose":"Execute only after reviewing the handoff; keep odds and score caps at zero when doing event-list expansion."}],"cost_controls":{"max_total_request_credits":null,"max_daily_request_credits":null,"max_odds_credits":null,"max_score_refresh_calls":null,"lookahead_days":null,"refresh_yield_lookback_hours":null,"provider_sport_lookahead_days":"","provider_sport_lookahead_days_map":{},"local_maintenance_regenerate_option_sets":null,"local_maintenance_prune_line_snapshots":null,"cost_notes":["Does not call the provider; it renders the gap worklist and a separate dry-run handoff.","Use it to review zero-odds event-list expansion candidates separately from broad odds refresh spend."]},"current_plan":{"breadth_expansion_limit":25,"breadth_expansion_max_refresh_sports":5,"approval_policy":"dry_run_only_operator_handoff","uses_live_provider_calls":false,"candidate_sports":0,"returned_items":0,"live_action_sports":0,"local_action_sports":0,"actionable_local_sports":0,"passive_wait_sports":0,"coverage_limitation_status":"clear","coverage_limitation_passive_wait_sports":0,"selected_event_sport_keys":[],"selected_odds_sport_keys":[],"estimated_live_request_credits":0,"dry_run_command":null}},{"profile_key":"inventory-active-board-event-odds-plan","description":"Read-only active-board event-odds refresh plan: scan active pick boards, dedupe stale visible provider events, and render approval-gated event-odds refresh handoffs without spending provider quota.","schedule_expression":"rate(30 minutes)","enabled_by_default":false,"provider_quota":false,"run_mode":"active_board_event_odds_plan","approval_policy":"dry_run_only_approval_required_for_execution","gate_status":"optional_monitor","operator_action":"schedule_only_if_active_board_event_odds_queue_monitoring_is_worth_task_cost","technical_blockers":[],"profile_due":false,"cost_gate":{"status":"not_applicable","provider_quota":false,"profile_due":false,"uses_live_provider_calls":false,"blockers":[],"warnings":[],"operator_action":"no_provider_quota_review_required"},"command":["python","-m","app.jobs.inventory","active-board-event-odds-refresh","--provider-key","the_odds_api","--limit","10","--max-estimated-request-cost","30"],"operator_endpoints":[{"method":"GET","path":"/inventory/operations/active-board-event-odds-refresh-worklist","uses_live_provider_calls":false,"purpose":"Inspect active-board event-odds targets, retry state, and capped worklist skips."},{"method":"POST","path":"/inventory/operations/active-board-event-odds-refresh","uses_live_provider_calls":false,"purpose":"Render the approval-gated active-board event-odds batch dry run without provider calls."},{"method":"POST","path":"/inventory/operations/active-board-event-odds-refresh","uses_live_provider_calls":true,"purpose":"Execute only after resubmitting exact dry-run approvals under reviewed caps."}],"cost_controls":{"max_total_request_credits":30,"max_daily_request_credits":320,"max_odds_credits":null,"max_score_refresh_calls":null,"lookahead_days":null,"refresh_yield_lookback_hours":null,"provider_sport_lookahead_days":"","provider_sport_lookahead_days_map":{},"local_maintenance_regenerate_option_sets":null,"local_maintenance_prune_line_snapshots":null,"cost_notes":["Does not call the provider unless a separate operator/API execution submits exact dry-run approvals.","Surfaces the active-board event-odds spend queue for cost review before any automated execution decision."]},"current_plan":{"active_board_event_odds_limit":10,"active_board_event_odds_max_estimated_request_cost":30,"approval_policy":"dry_run_only_approval_required_for_execution","uses_live_provider_calls":false,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"retry_backoff_targets":0,"retry_review_targets":0,"selected_estimated_request_cost":0,"deduped_estimated_request_cost":0,"execution_manifest_selected_target_count":0,"execution_manifest_estimated_request_cost":0,"live_provider_calls_require_execute_and_approval":false,"request_contracts_by_provider":{},"fallback_request_contract_providers":[],"request_contract_gaps_by_provider":{},"normalization_contracts_by_provider":{},"fallback_normalization_contract_providers":[],"normalization_contract_gaps_by_provider":{},"can_execute_live":false,"live_execution_blockers":[],"provider_daily_budget":{"max_daily_request_credits":320,"daily_used_credits":0,"daily_remaining_credits":320,"next_daily_credit_recovery_at":null,"next_daily_credit_recovery_credits":0,"latest_quota_remaining":null},"dry_run_command":"uv run python -m app.jobs.inventory active-board-event-odds-refresh --provider-key the_odds_api --limit 10 --max-estimated-request-cost 30 --limit-per-slot 500 --max-daily-request-credits 320 --json","dry_run_api_request":{"method":"POST","path":"/inventory/operations/active-board-event-odds-refresh","body":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320,"execute":false},"context":{"operation":"active_board_event_odds_refresh","selected_target_count":0,"skipped_target_count":0,"provider_events":[],"max_daily_request_credits":320,"max_estimated_request_cost":30,"estimated_request_cost":0,"worklist_totals":{"competitions":2,"periods_scanned":14,"period_targets":0,"deduped_targets":0,"selected_targets":0,"skipped_targets":0,"retry_backoff_targets":0,"retry_review_targets":0,"selected_estimated_request_cost":0,"selected_full_market_estimated_request_cost":0,"deduped_estimated_request_cost":0,"deduped_full_market_estimated_request_cost":0,"skipped_unavailable_slots":6},"filters":{"provider_key":"the_odds_api","limit":10,"max_estimated_request_cost":30,"limit_per_slot":500,"max_daily_request_credits":320},"request_contracts_by_provider":{},"normalization_contracts_by_provider":{},"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_requires_dry_run_approval":true,"operator_next_action":{"key":"monitor","label":"Monitor inventory","reason":"Stored canonical inventory is present and no immediate active-board event odds batch is selected.","uses_live_provider_calls":false,"urgency":null,"selected_targets":null,"estimated_request_cost":null,"daily_cap_allows_action":null,"partial_daily_cap_allows_action":null,"next_recovery_allows_action":null,"next_daily_credit_recovery_at":null,"sufficient_daily_credit_recovery_at":null,"partial_dry_run_command":null},"daily_remaining_partial_batch":{"available":false},"next_recovery_partial_batch":{"available":false},"latest_refresh_job":null}},{"profile_key":"inventory-readiness-check","description":"Read-only readiness gate for staging checks and scheduled-task monitoring.","schedule_expression":"rate(15 minutes)","enabled_by_default":false,"provider_quota":false,"run_mode":"readiness","approval_policy":"not_required","gate_status":"optional_monitor","operator_action":"prefer_external_monitor_unless_dedicated_task_cost_is_accepted","technical_blockers":[],"profile_due":true,"cost_gate":{"status":"not_applicable","provider_quota":false,"profile_due":true,"uses_live_provider_calls":false,"blockers":[],"warnings":[],"operator_action":"no_provider_quota_review_required"},"command":["python","-m","app.jobs.inventory","inventory-readiness","--provider-key","the_odds_api"],"operator_endpoints":[{"method":"GET","path":"/inventory/operations/readiness","uses_live_provider_calls":false,"purpose":"Read the current pick-serving readiness gate."},{"method":"GET","path":"/inventory/operations/provider-onboarding-readiness","uses_live_provider_calls":false,"purpose":"Read the provider onboarding gate used by provider-quota schedule preflight."},{"method":"GET","path":"/inventory/operations/dashboard","uses_live_provider_calls":false,"purpose":"Read the aggregate operations control plane."}],"cost_controls":{"max_total_request_credits":null,"max_daily_request_credits":null,"max_odds_credits":null,"max_score_refresh_calls":null,"lookahead_days":null,"refresh_yield_lookback_hours":null,"provider_sport_lookahead_days":null,"provider_sport_lookahead_days_map":{},"local_maintenance_regenerate_option_sets":null,"local_maintenance_prune_line_snapshots":null,"cost_notes":["Makes no provider calls.","Usually better as an external monitor or post-task check before paying for a dedicated task."]},"current_plan":{"refresh_due":true}}],"notes":["This preflight is read-only and makes no provider calls.","Enabled-by-default means safe default posture, not that hosted AWS resources already exist.","Provider-quota profiles should remain disabled until the listed operator gate is deliberately accepted."]},"score_settlement_work_queue":{"provider_key":"the_odds_api","generated_at":"2026-06-05T18:39:42.541961Z","uses_live_provider_calls":false,"status":"idle","filters":{"provider_sport_key":null,"competition_id":null,"pick_period_id":null,"max_score_refresh_calls":25,"limit":25},"totals":{"sports":0,"pending_score_refresh_sports":0,"selected_score_refresh_sports":0,"skipped_score_refresh_sports":0,"backoff_score_refresh_sports":0,"review_after_failure_sports":0,"pending_score_refresh_events":0,"pending_score_refresh_picks":0,"ready_to_score_picks":0,"needs_review_picks":0},"selected_score_refresh_sports":[],"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"score_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[],"local_maintenance_api_request":{"method":"POST","path":"/inventory/operations/local-maintenance","body":{"provider_key":"the_odds_api","regenerate_option_sets":false},"context":{"operation":"score_settlement","provider_key":"the_odds_api","provider_sport_key":null,"competition_id":null,"pick_period_id":null,"max_score_refresh_calls":null,"selected_score_refresh_sports":[],"stored_results_only":true,"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"score_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false,"note":"Scores pending picks from stored canonical results and can mark stale unresolved picks for review."},"stored_score_settlement_api_request":{"method":"POST","path":"/inventory/operations/local-maintenance","body":{"provider_key":"the_odds_api","regenerate_option_sets":false,"prune_line_snapshots":false},"context":{"operation":"score_settlement","provider_key":"the_odds_api","provider_sport_key":null,"competition_id":null,"pick_period_id":null,"max_score_refresh_calls":null,"selected_score_refresh_sports":[],"stored_results_only":true,"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"score_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false,"note":"Scores pending picks from stored canonical event results; does not refresh provider scores."},"score_settlement_api_request":{"dry_run":{"method":"POST","path":"/inventory/operations/score-settlement","body":{"provider_key":"the_odds_api","max_score_refresh_calls":25,"execute_live":false,"settle_after_refresh":true},"context":{"operation":"score_settlement","provider_key":"the_odds_api","provider_sport_key":null,"competition_id":null,"pick_period_id":null,"max_score_refresh_calls":25,"selected_score_refresh_sports":[],"stored_results_only":false,"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"score_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false},"execute_template":{"method":"POST","path":"/inventory/operations/score-settlement","body":{"provider_key":"the_odds_api","max_score_refresh_calls":25,"execute_live":true,"settle_after_refresh":true,"approved_score_sports":[],"approved_plan_hash":"0401f96c916d44244a83add60515e08dcab8355eefd458d830c5a1116f0d0382"},"context":{"operation":"score_settlement","provider_key":"the_odds_api","provider_sport_key":null,"competition_id":null,"pick_period_id":null,"max_score_refresh_calls":25,"selected_score_refresh_sports":[],"stored_results_only":false,"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"score_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[]},"uses_live_provider_calls":false,"can_execute_live":false,"live_execution_blockers":[]},"provider_contracts":{"normalization":{"normalization_contract":"provider_owned","normalization_contract_hooks":["sport_normalizer","event_normalizer","line_input_builder","score_normalizer"],"normalization_contract_gaps":[]},"score_request":{"request_scope_contract":"provider_owned","request_cost_contract":"provider_owned","request_contract_hooks":["score_request_scope_factory","score_request_cost_estimator"],"request_contract_gaps":[]}},"can_execute_live":false,"live_execution_blockers":[],"execute_requires_dry_run_approval":true,"note":"Execute only if the dry-run approval score_sport_keys exactly match approved_score_sports."},"sports":[],"targets":[]},"score_refresh_targets":[],"pick_reviews":[]}