Repository navigation
Navigation: share wall convergence recovery across game adapters - #227
Merged
Merged
Conversation
This was referenced Nov 5, 2026
dayfine
marked this pull request as ready for review
November 5, 2026 19:45
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.
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
MovementPolicyprovides 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 borrowedstd::spanfor 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 separatesinputandexpectationstructs 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-extractionValidation
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.