Skip to content

Navigation: share wall convergence recovery across game adapters - #227

Merged
dayfine merged 5 commits into
nav/sharedfrom
nav/recovery-core-extraction
Nov 5, 2026
Merged

dayfine merged 5 commits into
nav/sharedfrom
nav/recovery-core-extraction

Conversation

@dayfine

@dayfine dayfine commented Nov 5, 2026 •

Copy link
Copy Markdown
Owner

Base: nav/shared (#114). Shared extraction and test registration only; FRLG #228 and BDSP #229 consume it through their game adapters.

Find safe directional wall holds that converge from every possible starting position. A hold means keeping a direction pressed until a wall stops movement. The compile-time MovementPolicy provides static operations; runtime map/movement data is supplied separately as context, with no policy instance or global map.

The header declares its public find_wall_anchors() API before internal helpers, which are defined in place, documents its namespace-scope symbols, and accepts a borrowed std::span for input. Search branches own their hypothesis vectors. Minimum-hold priority, held-tile ordering and directional tie order are preserved.

How to review

Read the public types/API and movement-policy contract, then WallRecoveryInternal, then the two native case tables. Each case separates input and expectation structs and checks expected/observed position and directional hold distances. The fixed-array corner input and vector corridor input both exercise the span API. The search comes from the combined FRLG #224 baseline; game-specific movement and route execution remain in adapters.

git diff --color-moved=dimmed-zebra --color-moved-ws=allow-indentation-change nav/shared...nav/recovery-core-extraction

Validation

10 shared native tests pass, with diagrams documenting known walls and walkable bounds in the synthetic corridor/room. The static-policy adapters pass 58 FRLG and 48 BDSP focused native cases; #228/#229 have been updated to select their policy types explicitly and pass runtime context. Full native CI runs for this revision: macOS, Windows. The previous revision passed both platforms.

Separate lint PR #231 rejects the original header/tests with structural findings and accepts this revision with zero findings. Its 112 self-tests and Agents Check pass. This PR replaces its older branch-local linter workflow with the fork's canonical agents-based workflow; merge #231 to activate the new rules in that CI/pre-push source. The candidate was also used directly for this push's normal pre-push gate.

Evidence and ownership. No console/save changes.

@dayfine
dayfine marked this pull request as ready for review November 5, 2026 19:45
@dayfine
dayfine merged commit 546b3c0 into nav/shared Nov 5, 2026
9 of 10 checks passed
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