Skip to content

Replay captured checkpoints with registered handlers and semantic action checks - #73

Merged
dayfine merged 6 commits into
mainfrom
story/parcel-replay
Nov 8, 2026
Merged

dayfine merged 6 commits into
mainfrom
story/parcel-replay

Conversation

@dayfine

@dayfine dayfine commented Nov 8, 2026 •

Copy link
Copy Markdown
Owner

The runner now also accepts the lean data-authored frlg-parcel-00.05.plan.json via authored-binding.json, with a dedicated JSON Schema and parser. The same file is used by the production story table in dayfine/Arduino-Source#260. Native CI checks byte equality and runs all seven Python scenarios; native engine integration tests pass on Linux and Windows. Captured exports remain separate migration fixtures, and authored reports do not claim a native source revision or observed state.

Load captured checkpoint events through a reusable offline runner with registered handlers. FRLG spatial behavior lives in the game adapter; scene receipt requirements are binding data. The real Parcel capture is the first example, and a synthetic checkpoint with different IDs/order/repeated steps/receipt verifies reuse.

Selected cases set input.check_actions: true and list the entire ordered expectation.actions. These are semantic intents: straight walks for X tiles, facing changes, hops, map transitions and scene requests. They do not count button presses or encode timings. Missing/extra/reordered actions and incorrect directions/distances fail even if the final status says complete. An interrupted walk retains its requested distance; its uncertain displacement is asserted separately.

Start with data/story/parcel-pilot/CASES.md, generated from authored fixtures and checked for drift. The success case parcel-all-events lists all 23 semantic actions. Four cases assert exact actions, including an empty list on failed entry and no scene after an unconfirmed Mart transition. Then review checkpoint_replay.py, games/frlg/story_replay.py, the handler/binding modules and adjacent tests. Schemas enforce the opt-in assertion contract; CI uploads the actual diagnostic trace even when other checks fail.

This remains an offline diagnostic: observations are synthetic, scene dialogue/animation is not simulated, save/retry policy is explicitly stop/no-save, and native execution parity remains open. No native authoring table, approved map bytes or consumer pins change.

Validation: local full suite 520 tests passed (39 optional skips); schema/semantic checks, compact formatting and generated case docs pass. Negative controls alter successful action logs to verify omissions/extras/reordering/direction/distance failures; tests also distinguish requested walk distance from uncertain progress, split hops/warps from walking, and reject unexecuted planner endpoints. CI reruns on this revision.

Next: native trace consumer and actual runtime/save/retry policy export, reconcile initializer/STEP/scene/end-save semantics, then bind recovery and BDSP capture. Native exact-leg comparison requires matching planner policies; these expectations currently describe the pinned Python profile.

@dayfine
dayfine marked this pull request as ready for review November 8, 2026 17:28
@dayfine dayfine changed the title Replay the captured FRLG Parcel checkpoint with explicit offline bindings Replay captured checkpoints with registered handlers and exact action checks Nov 8, 2026
@dayfine dayfine changed the title Replay captured checkpoints with registered handlers and exact action checks Replay captured checkpoints with registered handlers and semantic action checks Nov 8, 2026
@dayfine
dayfine merged commit fc8e199 into main Nov 8, 2026
8 checks passed
@dayfine
dayfine deleted the story/parcel-replay branch November 8, 2026 23:13
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