Repository navigation
Reconsider settled pathfinder goals after adding roots - #192
Merged
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #192 +/- ##
==========================================
+ Coverage 86.03% 86.05% +0.01%
==========================================
Files 29 29
Lines 7583 7586 +3
==========================================
+ Hits 6524 6528 +4
+ Misses 1059 1058 -1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
HexDecimal
approved these changes
Oct 12, 2026
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.
Pathfinder.resolve(goal)returns immediately for a previously visited goal even when a new root is waiting in the frontier. Lowering an existing root's distance also leaves cached distances unchanged:When the frontier is nonempty, queue the visited goal at its current distance. The search can then find a shorter route, while the queued goal bounds the work if no improvement is possible. An empty frontier still returns immediately. Add regression coverage for C/F indexing, partial/full initial resolution, heuristics enabled/disabled and a cached-goal control that checks the search does not resolve the entire map.
On three MovingAI Dragon Age maps, 2,268 of 2,304 lazy queries retain stale distances after lowering a destination's weight. All distances match independent Dijkstra calculations with this change. In a separate integration run with #191, adding destinations produces 1,600 incorrect routes out of 2,304 before this change and none afterward. #191 addresses predecessor termination; this PR addresses when the frontier is searched. Each has a separate regression on current main.
Validation on Linux/Python 3.12 with the pinned native libtcod: 12 new cases fail before the change; all 14 pass afterward. The suite excluding window and audio tests passes (197 passed, 94 skipped); Mypy and project formatting hooks pass. Full audio-inclusive validation is incomplete: the dummy audio run stalls in stream binding, while the ordinary audio configuration lacks a device. No complete graphical/audio-suite pass is claimed.