Skip to content

Pokemon navigation: run story checkpoints as events - #79

Closed
dayfine wants to merge 6 commits into
nav/corefrom
nav/event-model
Closed

dayfine wants to merge 6 commits into
nav/corefrom
nav/event-model

Conversation

@dayfine

@dayfine dayfine commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Depends on #66 (base nav/core). The diff also carries #72's MoveOnlyFunction files unchanged: the core no longer includes them, and StoryEvents holds its observations and actions in MoveOnlyFunctions; that copy goes when #72 merges.

AutoStory checkpoints are long C++ functions of walks, presses and waits, and a checkpoint only notices drift or a missed talk when a later step fails. This adds the game-neutral runner from the event-model design (#78): a checkpoint is a list of events with skip_if, require, an action, expects, a learned pose and named recoveries (wait, then re-anchor, then stop), plus per-checkpoint interrupts. run_checkpoint() skips events whose effect already shows, so a reload resumes by re-checking. It logs [Event] 00.04/3 talk_mom: start|done|skipped|failed: <why> lines for the lab watcher and reports which event failed. Observation and actuation are MoveOnlyFunctions, so the new Pokemon::StoryEvents unit tests run it against a scripted world (skips, recovery escalation, interrupts mid-event, resuming after a reload); no game uses it yet.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E

dayfine and others added 6 commits October 30, 2026 00:05
A checkpoint becomes a list of events, each with skip_if, require, an
action, expects, a learned pose and named recoveries that escalate from
wait to re-anchor to stop. Interrupts are declared per checkpoint and say
what they do to the pose and how the event resumes. run_checkpoint()
skips events whose effect already shows, so a reload resumes by
re-checking, and logs each event as "[Event] <checkpoint>/<n> <name>:
start|done|skipped|failed: <why>". Observation and actuation are
callables, so the tests run it against a scripted world.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Conflict in SourceFiles.cmake: kept both lists (StoryEvents, and the
TileGrid/MapSet files nav/core now carries).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
The core now holds only Grid and the leg planner; the walker, TileGrid,
MapSet and ScreenMachine moved to their users. StoryEvents stays.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
StoryEvents holds its observations and actions in MoveOnlyFunctions.
nav/core no longer includes the copy of #72, so it comes along here,
byte-identical to common/move-only-function, and goes when #72 merges.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
@dayfine

dayfine commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

Superseded by #114 (commit S4 f3a8943 of the shared-core collector). Branch kept.

@dayfine dayfine closed this Nov 1, 2026
@dayfine
dayfine deleted the nav/event-model branch November 3, 2026 05:46
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