Repository navigation
Harness fixtures stop reaching ESPN (baseball, football, hockey, lacrosse) - #553
Merged
Merged
Conversation
…the managers read (1.49.3, 3.13.1) Both fixtures still seeded season keys (mlb_schedule_2026, nfl_schedule_2025) the managers stopped reading when #524 moved the schedule cache to per-window keys. Every Recent/Upcoming render missed the cache and fetched the frozen window from ESPN; those games are all final now, so mlb_upcoming and nfl_upcoming drew nothing at all eight sizes, and the fill warning flagged only five of them. The fixtures now seed <league>_schedule_window_14_7. Test fixtures only, no runtime change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…agers read (1.36.1) The fixture still seeded nba_schedule_2025, a key the managers stopped reading when #524 moved the schedule cache to per-window keys. Every Recent/Upcoming render missed the cache and fetched the frozen January 2026 window from ESPN; those games are all final now, so nba_upcoming drew nothing at all eight sizes. The fill warning only covers panels at least twice the design size, so it flagged five of them. The fixture now seeds nba_schedule_window_14_7. Test fixture only, no runtime change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Up to standards ✅🟢 Issues
|
The harness made 112 live ESPN requests per run and, after freeze_time ended, fetched next season's schedule (20270101-20270601, rejected as a range). freezegun hands the real clock to calls made within a few frames of a thread's run(), so the SwitchRefresh thread display() starts always sees its manager as due and runs update(). Football and baseball do the same, but their update() only reads the seeded cache and finishes inside the freeze. Lacrosse's fetched: - other_games_min_quality defaults to 'ranked', so every update() fetched the live NCAA poll -- held in memory, unseedable, and it made which fixture games pass the filter depend on that day's poll. - The live manager fetched today's scoreboard on every render. With no live games it polls on its idle back-off, not the 9999999999 update_intervals.live the fixture relied on to stop it. The last thread was still on the network when the freeze ended, and its schedule read then used the real date. The fixture now sets filtering.other_games_min_quality 'any' and test_mode (passed through since the note saying otherwise was written) and drops the dead interval guard. 0 requests across three runs; all 16 frames are pixel-identical to before. Test fixture only, no runtime change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The harness made 16 live ESPN scoreboard requests per run, one per render: the always-instantiated NHL live manager fetched today's games because, with no live games, it polls on its idle back-off rather than the 9999999999 update_intervals.live the fixture relied on to stop it. The fixture now sets test_mode (passed through since the note saying otherwise was written), so the live manager simulates its game, and drops the dead interval guard. 0 requests across three runs; all 16 frames are pixel-identical to before. Test fixture only, no runtime change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-fixture-keys # Conflicts: # plugins.json # plugins/baseball-scoreboard/CHANGELOG.md # plugins/baseball-scoreboard/manifest.json # plugins/football-scoreboard/CHANGELOG.md # plugins/football-scoreboard/manifest.json # plugins/hockey-scoreboard/CHANGELOG.md # plugins/hockey-scoreboard/manifest.json # plugins/lacrosse-scoreboard/CHANGELOG.md # plugins/lacrosse-scoreboard/manifest.json
…-fixture-keys # Conflicts: # plugins/baseball-scoreboard/CHANGELOG.md # plugins/baseball-scoreboard/manifest.json # plugins/football-scoreboard/CHANGELOG.md # plugins/football-scoreboard/manifest.json # plugins/hockey-scoreboard/CHANGELOG.md # plugins/hockey-scoreboard/manifest.json # plugins/lacrosse-scoreboard/CHANGELOG.md # plugins/lacrosse-scoreboard/manifest.json
ChuckBuilds
added a commit
that referenced
this pull request
Sep 29, 2026
#553 took baseball 1.51.2, football 3.15.2, hockey 1.37.2 and lacrosse 1.33.2; this branch's entry moves to .3 on top of it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Four scoreboard harness runs were fetching live from ESPN. That made them non-deterministic, and two of them rendered a blank Upcoming screen. All changes are to test fixtures only; runtime behavior is unchanged.
Baseball and football: stale schedule keys (1.51.2, 3.15.2)
#524 moved the schedule cache to
f"{sport_key}_schedule_window_{lookback}_{lookahead}". These fixtures still seeded the old season keys, so every Recent and Upcoming render missed the cache and fetched the frozen window live. Those games are all final now, so Upcoming drew nothing.mlb_schedule_2026mlb_schedule_window_14_7nfl_schedule_2025nfl_schedule_window_14_714_7is the schema default (14-day lookback, 7-day lookahead), and neither harness config overrides it. The basketball equivalent landed separately in #549; merging main here cancels out the duplicate.Lacrosse: harness no longer touches the network (1.33.2)
Each run made 112 live ESPN requests. After
freeze_timeended, it also fetched next season's schedule (20270101-20270601).run(). TheSwitchRefreshthread thatdisplay()starts therefore always sees its manager as due and callsupdate(). Football and baseball do the same, but theirupdate()reads only the seeded cache and finishes inside the freeze. Lacrosse'supdate()went to the network:other_games_min_qualitydefaults to"ranked", so everyupdate()fetched the live NCAA poll. The poll is held in memory, so the fixture can't seed it. It also made which fixture games passed the filter depend on that day's poll.update_intervals.live: 9999999999the fixture relied on to stop it.filtering.other_games_min_quality: "any"andtest_mode: true, and drops the interval guard that did nothing.test_modehas been passed through to the managers since the fixture's old note said it wasn't.Hockey: harness no longer touches the network (1.37.2)
Same live-manager pattern as lacrosse: 16 live
scoreboard?dates=requests per run, one per render, despiteupdate_intervals.live: 9999999999. The fixture now setstest_mode: trueand drops the guard. Result: 0 requests across 3 runs, and all 16 frames pixel-identical to before. Hockey's committed goldens cover only the celebration screens, so they're unaffected.Lacrosse (
ncaa_mens_lacrosse_schedule_2026) and F1 (f1_schedule_2026) schedule keys were also checked. Their code still builds season-year keys, which match the fixtures at the frozen dates.Verification
Ran the core harness from a fresh
git archive origin/mainof LEDMatrix (6cfcf2e3), on this branch after merging main. Each run was wrapped so that everyrequestscall is logged with its thread name and then blocked.mlb_upcomingblank at 8/8 sizes (fill warning caught 5)nfl_upcomingblank at 8/8 sizes (fill warning caught 5)scoreboard?dates=requests from the live managerSwitchRefreshthreads, and today's scoreboard; then a 2027 fetch after the freeze endedBlank means
getbbox() is Noneon*_upcoming.png.check_version_bump.py --base origin/mainpasses for all three plugins.update_registry.pyis in sync, and the module-collision check is clean.🤖 Generated with Claude Code