Skip to content

[DO NOT MERGE] wc3 pathfinding wip - #537

Draft
lofcz wants to merge 218 commits into
corepunch:mainfrom
lofcz:wc3-pathfinding
Draft

lofcz wants to merge 218 commits into
corepunch:mainfrom
lofcz:wc3-pathfinding

Conversation

@lofcz

@lofcz lofcz commented Sep 27, 2026

Copy link
Copy Markdown
Contributor

so far this is in RE stage

Reconcile the Desktop stash with the current cursor integration, retaining save version 52 and upstream renderer regressions. Preserve the latest motion and initial order-admission oracle changes and document their verified boundaries.

Accounted for all 122 stashed paths; retain the original stash as backup. Clean up five SC2 misleading-indentation warnings encountered during validation.

Validation: 41 Python tests, JavaScript syntax, both updated retail motion/order-task oracles, boundary audits and full make test using isolated native SDL2 2.32.10. Both WC3 editions pass 35,956 assertions in 2,047 tests. Document the system sdl2-compat text-event crash and verification setup.
@lofcz
lofcz requested a review from corepunch as a code owner September 27, 2026 17:10
@lofcz
lofcz marked this pull request as draft September 27, 2026 17:10
Split all 81 original acceptance requirements into 210 numbered tasks with explicit observable outcomes. Place 24 evidence-backed completions alongside their remaining extensions, add per-area progress counts and a dependency-ordered next-work queue, and retain the full-fidelity handoff gates.

Validate parent coverage, task IDs and references, progress totals, evidence links, Markdown anchors and diff whitespace. Documentation-only change; no runtime tests rerun.
Port truncating scalar math and the speed/heading decision, apply scripted turn speed and pre-turn movement windows, guard close-goal arrival, and persist overrides in save format 54. Add raw Frida decision capture, exact C differential replay, repeated turning controls, and asset-free regression coverage.
lofcz added 30 commits October 6, 2026 19:54
…sses

Close ACC-01.1, ACC-01.2, ACC-02.2 and ACC-04.1 with completed retail handoffs. Preserve the 578-outcome inventory, all 3288 producer witnesses, marker-domain proofs and cost/budget evidence. Production regressions compare full routes, rare node tables, both identity modes, costs and nearest selection.

Remove redundant size2 side-interior reads at the proven call site; retain boundary/corner predicates and uint16-alias fallback. Add a fast target running the same kernel tests. Save 31 Ghidra annotations and 26 explicit ECX/stack ABIs, portable inputs and strict corpus evidence.

Classic/TFT: 56 focused tests and 2757467 assertions each; 25 Python checks. Fresh combined original reports match full frozen expectations, four strict original/C entries retain expected results, and all 358 inventory pins pass. 220/336 complete; 116 remaining.
Close SEP-01.3 with the repeated retail policy matrix and production eligibility/lifecycle regressions. Preserve integer selector bits and replace repulsors at channel/type transitions. Keep the remaining SEP-01.2 producers open.

Validation: Classic and TFT each pass 498 focused tests / 563,318 assertions; production and test builds pass. Fresh original replay, repeated capture/control analysis, 24 Python checks and 359 corpus inventory contracts pass. Save Ghidra annotations and preserve reusable Frida/original-code instruments. Full-suite checkpoint cadence remains unchanged.
Payoff129 closes MAP-06.1. Move level teardown ahead of world and typed-row replacement; join borrowed-geometry work, retire route/index/queue owners, and reset the arena before spawning the next map.

Retain the complete eight-restart/ChangeLevel evidence, observer-free marker controls, nine original release cases, and saved Ghidra mappings. Real MPQ reload regressions compare exact public movement across restarts and changed dimensions.

Validation: production and test builds; focused Classic/TFT each 213 tests / 435,603 assertions; 30 Python checks; 361-entry inventory with 455 pinned inputs; fresh strict oracle-map-lifetime. Full suite remains on the authorized batch cadence.
Replace server-area repulsion enumeration with a Move-owned active proximity index. Retain intersection priority, prepend entered cells, and preserve fine/proximity lifetimes independently. Save119 rebuilds both logical rectangles in save order; network layouts are unchanged.

Close SEP-02.2 with unchanged repeated retail captures, all 3055 complete engine visits and 2439 individual neighbor calls across 27 units. Save five Ghidra annotations and update MapPathfinding.java. Classic/TFT focused debug and release validation each passes 687 tests and 8305352 assertions; 26 staged Python checks and fresh original/spatial oracles pass.
Close SEP-02.3 and SEP-04.1 with unchanged complete retail overlap fixtures, real owner scheduling and individual endpoint/pair/RNG regressions. Cache incoming intrusive-list slots without changing authoritative order or Save119; validate and rebuild them on load. The failing 1024-owner pause regression drops from 524800 to 1024 membership visits, confirmed with Frida.

Validation: Classic/TFT each 678 focused release tests; latest debug/release separation checks; 32 isolated Python checks; 365 corpus contracts/508 pins; fresh full original replay; saved/read-back Ghidra notes and MapPathfinding annotations. Full suite follows the authorized twelve-commit cadence.
Close BASE-02.2 with the original producer/payload/consumer inventory and an engine payoff: items publish category18/query10/radius1, buildings retain their own fine record, and item placement/native/drop paths preserve admission and publication boundaries. Pickup/drop membership is current before saves; carried SetItemPosition preserves both publications.

Validation: 945 focused tests and 7,791,459 assertions per Classic/TFT release mode; 8 new category regressions; 27 Python integrity/corpus tests; fresh 50,112 original eligibility cases, 16 complete producer scenarios and two controlled Frida captures. Save 31 Ghidra mappings and 3 partial layouts/15 fields. FOOT-03.1/03.2 remain open for full raw-link semantics. Implementation commit 11 since full checkpoint 1435775.
Integrate native ordered perimeter sampling, fine node metadata, stable raw membership identities, independent spatial maintenance and Save121 stamps. Preserve strip intersections and read blocker/target encounter order directly instead of sorting reconstructed ranks.

Close SEP-03.1/03.2/03.3 and MAP-05.3 with fresh original allocation/growth controls, saved Ghidra readback, engine regressions and focused Classic/TFT validation. Static regions and the hierarchy record cap remain FOOT-03 work.
Replace baked widget blocking in native consumers with separate pooled region identities. Preserve retire versus inverse-raster history, ordinary flight stamps, sparse membership and inverse pixels through Save122; transpose save cells once in linear time.

Closes FOOT-03.2. Test-first engine regressions, 16 original/C composed scenarios at O0/O2 with every stamp, saved Ghidra mapper evidence and complete supplied Frida controls pass. Focused Classic/TFT debug and release suites and strict fresh corpus pass; full repository checks remain on the authorized batch cadence.
Close ROUTE-01.1 with all-class oblique reconstruction through complete original fine/coarse producers and 200 literal Move adapter regressions. Borrow retained native-coordinate point arrays directly, removing three O(route length) scratch copies per advance while preserving point words and Save122 layout.

Validation: 656 tests and 7,655,695 assertions per Classic/TFT variant in debug and release; 24 Python checks; fresh strict route corpus; O0/O2 production comparisons match all 13,320 original requests. Save seven Ghidra annotations and mirror the mapper. Full repository validation remains on the authorized batch cadence.
Match all 452 fine and 152 adaptive builds reached by the frozen buffer controls at O0/O2. Preserve setup0/1 node identities and accepted query parameters; reserve owned point stores in retained 128-point blocks. Rebuild derived capacities with Save123.

Add failing stale-prior and growth regressions, completing Frida outside-axis repeats/control, saved twelve-function Ghidra readback and strict corpus integration. Classic/TFT debug/release: 660 focused tests and 7,656,364 assertions each; 27 Python checks pass. ROUTE-01.2 stays open for full actual-engine public advance and post-load invalid-start state.
Close ROUTE-01.2 with 56 initialized invalid-start scenarios and 112 complete member decisions matching retail buffers, work, retries and raw owner RNG. Discard unsaved fine/adaptive query history at ReadGame while keeping saved unit curves. Seven regression failures reproduce the stale-history bug.

Two completed Frida UI-load repeats and one observer-free UI-load control match 597 unique public position samples. Save seven Ghidra roles and update MapPathfinding plus strict corpus evidence. Fix the release model-copy warning and an undersized sound test handle.

Validation: Classic/TFT each pass 663 affected debug tests; final warning-free debug/release each pass 316 targeted tests per edition, plus sound checks. 30 Python tests, 610 isolated index pins and fresh strict routes corpus pass. Full repository validation remains on the authorized 12-commit cadence; this is commit 8 after Payoff135.
Port prior-deep amphibious selection, saved refresh state and non-forcing idle physics from original684480/66d780. Keep MAP-02.2 open for exact terrain/water/deck/air geometry.

Test-first: old behavior fails 4105 support assertions and the corrected boat deck fixture. Classic/TFT debug/release focused validation passes 2248 test executions and 10906462 assertions, including both optimized movement sweeps. Fresh original oracle8068 cases and Frida3171 refreshes/193 control markers pass; Ghidra saved and mapper updated. Full repository suite follows the authorized approximately12-chunk cadence (chunk10 since Payoff135).
Apply the original fine-scalar target-speed policy at the Move owner commit, retain hidden target samples and unseen counters through save126, and distinguish pursuit visibility from presentation ownership shortcuts.

Failing-first moving-target and fog regressions; Classic/TFT focused validation: 550 engine test executions and 12,874,888 assertions. Exact original policy oracle: 6,480 cases, 96 adjustments. Delivered Frida repeats: 4,671 speed words, 226 adjustments, 147 observer-free markers. Six evidence mutation checks, 22 corpus checks and both fresh strict corpus entries pass. Save Ghidra notes and mirror them in MapPathfinding.java. GROUP-03.2 remains open for Attack-owned exemptions.
Share Move proximity records with column-first widget queries, retain candidate identities across callbacks, and apply authored help radii plus candidate collision and directional diplomacy. Preserve peers' explicit orders and independent exact cap/help requests in Save128.

Save Ghidra annotations and repeated Frida controls; correct the prior notification guard oracle's field offset. Focused Classic/TFT checks pass 1,534 executions, plus 14 final targeted executions; 37 Python checks and three fresh corpus entries pass. GROUP-03.2 remains open for AI enrollment/propagation and remaining guard/producer domains.
Use intrinsic ability ownership for removed Attack objects, preserve strict rawcode Hero and temporary early-return semantics, and exclude absent Attack from siege roster refresh. Add failing-first creation/captain/save regressions and strict repeated Frida evidence; persist Ghidra annotations and mapper updates.

Validated production/test builds, 1750 focused Classic/TFT tests with 10,515,284 assertions, 37 Python checks and a fresh live corpus contract. GROUP-03.4.6.2.1.2 remains open for suppression, automatic temporary admission and complete public factory/departure lifecycles.

This branch has not been deployed

No deployments
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