brackt/app/models/__tests__
Claude dc4efe87cf
Unify futures odds with the simulation system
Make the futures-vs-Elo relationship an explicit, configurable rule and fix
futures odds failing to override stored Elo.

Root causes addressed:
- resolveSourceElos/resolveRatings used a hardcoded precedence (direct Elo ->
  projectedWins -> projectedTablePoints -> odds). The prior fix nulled sourceElo
  on futures entry but not projections, which still outranked odds.
- The override relied on a destructive null-on-save hack that also wiped
  manually entered Elo.
- Blended simulators buried their Elo/odds weight in module constants.
- Futures odds were not surfaced on the /admin/simulators inventory.

Changes:
- Add a configurable source policy: sourceEloPriority (ordered) and oddsWeight,
  parsed/clamped in getSimulatorInputPolicy. resolveSourceElos/resolveRatings now
  resolve each participant by the configured priority instead of a fixed order.
  Futures-centric simulators (ncaam, ncaaw, world_cup, ncaa_football,
  college_hockey) default to a futures-override priority.
- Drop the destructive nulling in batchSaveFuturesOddsForSimulator and
  batchSaveSourceOdds; override is now governed by policy, preserving stored Elo.
- Thread an optional SimulationContext (oddsWeight) through the Simulator
  interface so blended sims (UCL, World Cup, NCAA FB, MLB) read the blend weight
  from the season policy; defaults preserve prior calibration when no context is
  passed.
- Add a "Futures vs. Elo" strategy control and Odds Blend Weight input to the
  Simulator Setup input-policy card, persisted via save-input-policy.
- Surface futures on /admin/simulators: a source badge and a Futures Odds quick
  link; extend listSportsSeasonSimulatorSummaries with odds source info.
- Tests: configurable priority override (Elo/projections/rating), oddsWeight
  parsing/clamping, prefersFuturesOdds, manifest defaults, an NCAA Football
  context-blend behavioral test, and an updated non-destructive save test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QhNeB7gN6VKene7sdbBVQT
2026-06-25 22:11:32 +00:00
..
afl-finals.test.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
audit-log.test.ts Migrate auth from Clerk to BetterAuth (#354) 2026-04-29 10:03:50 -07:00
auto-pick.test.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
bracket-integration.test.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
bracket-seeding.test.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
bracket-templates.test.ts Fix college hockey bracket resolution (#396) 2026-05-08 12:29:39 -07:00
canonical-golf-skills.test.ts Canonical golf skills migration + copy participants feature (#369) 2026-05-02 10:29:28 -07:00
canonical-surface-elo.test.ts Canonical golf skills migration + copy participants feature (#369) 2026-05-02 10:29:28 -07:00
cfp-12-bracket.test.ts Add NCAA Football CFP simulator (12-team bracket) (#278) 2026-04-08 09:48:32 -04:00
commissioner.test.ts Refactor user profile to comprehensive settings page (#403) 2026-05-10 17:26:14 -07:00
cs2-major-stage.test.ts Add complete CS2 event reset to clear orphaned results/QP 2026-06-19 22:22:11 -07:00
draft-pick.test.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
executeAutoPick.timer.test.ts Fix draft timer: broadcasts, increments, reconnect sync, overnight pause (#72) 2026-06-06 05:57:46 +00:00
futures-odds-simulator.test.ts Unify futures odds with the simulation system 2026-06-25 22:11:32 +00:00
golf-skills.test.ts Canonical golf skills migration + copy participants feature (#369) 2026-05-02 10:29:28 -07:00
group-stage-match.test.ts Add FIFA World Cup 2026 support with group stage display and Monte Carlo simulator (#242) 2026-03-29 10:27:47 -07:00
ncaa-68-bracket.test.ts Fix oxlint warnings: no-shadow, consistent-function-scoping, no-non-null-assertion, and others (#196) 2026-03-21 10:59:51 -07:00
nfl-bracket.test.ts Fix oxlint warnings: no-shadow, consistent-function-scoping, no-non-null-assertion, and others (#196) 2026-03-21 10:59:51 -07:00
participant-expected-value.test.ts Remove flaky context menu click tests (#81) 2026-06-10 05:59:49 +00:00
participant.test.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
playoff-match-game.test.ts Add playoff match game scheduling and odds management (#135) 2026-03-11 14:17:43 -07:00
playoff-match-odds.test.ts Add playoff match game scheduling and odds management (#135) 2026-03-11 14:17:43 -07:00
point-progression.test.ts feat: add recharts library and implement PointProgressionChart component for historical views 2025-11-14 21:18:34 -08:00
process-match-result.test.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
progressive-floor-scoring.test.ts Fix partial bracket scoring, rank labels, and Discord notification bugs (#158) 2026-03-17 12:34:10 -07:00
qualifying-bracket-scoring.test.ts claude/bracket-wins-minimum-qp-el8z14 (#99) 2026-06-19 01:25:17 +00:00
qualifying-points.test.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
regular-season-standings.test.ts Fix standings upsert no-op: use EXCLUDED pseudo-table (#215) 2026-03-23 21:22:53 -07:00
scoring-calculator-qualifying.test.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
scoring-calculator.test.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
scoring-event-dashboard.test.ts Show events on multiple dates when games span requested date range (#254) 2026-04-01 13:39:03 -07:00
scoring-event-delete.test.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
scoring-event-tournament-helpers.test.ts Unify majors: score once, fan out across windows + tennis bracket EV 2026-06-22 20:32:22 -07:00
season-match.test.ts claude/great-lovelace-r3bznh (#88) 2026-06-12 22:35:35 +00:00
season-participant-copy.test.ts Canonical golf skills migration + copy participants feature (#369) 2026-05-02 10:29:28 -07:00
season-standings.test.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
simulator-inputs.test.ts Fix futures odds being ignored when stale Elo exists 2026-06-25 17:43:31 +00:00
sport.test.ts Add public sports overview page (#451) 2026-05-19 23:02:58 -07:00
sports-season.clone.test.ts Formalize simulator system with manifest, input-policy, runner, and admin UI (#409) 2026-05-11 21:09:53 -07:00
sports-season.test.ts Extract reusable league wizard components; wire settings page (#350) 2026-04-28 22:24:13 -07:00
standings-snapshots.test.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
surface-elo.test.ts Canonical tournament layer: 2026-05-01 21:04:48 -07:00
team-projected-score.test.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
team-score-events.test.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
tiebreaker-logic.test.ts Fix tiebreaker incorrectly separating tied teams with pending participants, fixes #244 (#245) 2026-03-29 16:59:13 -07:00
tournament-result.test.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
tournament.test.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
upcoming-calendar.test.ts claude/charming-tesla-re9ur7 (#93) 2026-06-16 22:11:01 +00:00
user.test.ts Refactor user profile to comprehensive settings page (#403) 2026-05-10 17:26:14 -07:00