Skip to content

FRLG AutoStory: replay the 00.27 Route 10 door failures from their frames - #307

Draft
dayfine wants to merge 12 commits into
frlg/stage8-rocktunnelfrom
frlg/frame-replay-0027
Draft

dayfine wants to merge 12 commits into
frlg/stage8-rocktunnelfrom
frlg/frame-replay-0027

Conversation

@dayfine

@dayfine dayfine commented Nov 9, 2026

Copy link
Copy Markdown
Owner

Depends on #293 (base frlg/stage8-rocktunnel) and #306 (merged in); the diff shows #306's files too until it lands in the base.

Replays the 00.27 route10_nurse failures ("no fade in and out after walking onto the warp to Route10_PokemonCenter_1F", console B 2026-11-09, runs 2 and 3) through the walk's real warp watcher and FRLG's screen events.

  • The walk's wait (BlackScreenOverWatcher after a one-tile hold, 8 s) and FrlgScreenObserver + judge_warp() / classify_interrupt() both say: no fade, no interrupt. The real detectors were right. The walk ended off the door (Route10 (14, 10) and (16, 19)), which matches the map-evidence notes (timed legs one tile off), so the fix belongs in the route, not the detectors.
  • Fixtures are each run's end frame only: lab-B kept no error report or stream-history video for these failures, nor for the 01:41 CeruleanCity one. The frames live outside the repo at ~/FRLGLab/captures/frame-replay/CommandLineTests/PokemonFRLG/FrameReplay/0027-route10-run{2,3}/0.png (1080p, 2.2-2.5 MB each); the cases skip without them.
  • Registered from the screen events' test registration, as PokemonFRLG_Tests.cpp is at its 1000-line limit.

Testing

Headless SerialProgramsTests (scratch merge with upstream/headless-tests), filters Pokemon::, PokemonFRLG::AutoStory - Screen, Frame replay, with the fixtures linked as build/CommandLineTests: 208 passed, 0 failed, 2 skipped; both 00.27 replay cases ran (not skipped). Code health: 0 failures.

🤖 Generated with Claude Code

https://claude.ai/code/session_013VUubhHeYSMGSSDXZkKZss

dayfine and others added 12 commits November 9, 2026 10:40
A frame source serves a recording's frames ("<ms>.png") by virtual time,
and replay_until / replay_events feed them to VisualInferenceCallbacks
or a ScreenEventObserver at the inference period on one thread, so a
console failure can become a deterministic test of the real detectors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VUubhHeYSMGSSDXZkKZss
…ames

The walk's warp watcher and FRLG's screen events, replayed over each
run's end frame (CommandLineTests/PokemonFRLG/FrameReplay/), agree that
no fade showed: the walk ended off the door, not past a missed fade.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VUubhHeYSMGSSDXZkKZss
…stration function at 50 lines

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VUubhHeYSMGSSDXZkKZss
…ents' tests

PokemonFRLG_Tests.cpp is at its 1000-line limit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VUubhHeYSMGSSDXZkKZss
The late-watcher case showed a fade missed by a watch that starts after
the hold; it now replays the walk's watch (WatchAlong over the hold, then
the same watcher on) and checks it sees a door's black that is over before
a 2000 ms hold ends, while a watcher started at the end of the hold still
misses it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VUubhHeYSMGSSDXZkKZss
replay_watcher() shows the hold's frames to the walk's BlackScreenOverWatcher
through a WatchAlong, then waits on with it, as walk_overworld_route() does
since its fade watch covers the hold; a fade over before the hold ends
reads "fade over during the hold".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VUubhHeYSMGSSDXZkKZss
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant