Add disabled GPS momentum penalty prototype

This commit is contained in:
2026-06-27 02:42:21 -05:00
parent 7ee09de73f
commit 12fb5d3b55
3 changed files with 279 additions and 9 deletions
+24 -9
View File
@@ -403,18 +403,33 @@ Add tests targeted at the new model:
## Practical Next Step
Before coding the full patch, do one static pass to finish the field map around
`0x40b304`, `0x40b540`, and `0x40ba58`:
The static pass around `0x40b304`, `0x40b540`, and `0x40ba58` is complete
enough for the first prototype:
- `0x40ba58` has four direct callers: `0x40b175`, `0x40b4ac`, `0x40b6d5`,
and `0x40bca7`.
- The ordinary adjacency walkers are the two clean first patch sites:
`0x40b4ac` from `0x40b304`, and `0x40b6d5` from `0x40b540`.
- At both ordinary sites, the live context contains solver, current state,
neighbor state, current node, neighbor node, current progress, neighbor
progress, vanilla `g`, and vanilla `f`.
- A disabled-by-default RED4ext prototype now patches the two ordinary sites by
adding a fixed nonnegative per-edge penalty before calling vanilla
`0x40ba58`.
Remaining static work before the full momentum model:
- Confirm candidate vector layout at `0x40b8f0`/state allocation.
- Confirm predecessor state pointer/index path from `state+0x1e`.
- Confirm route-mode values at `solver+0xc4` for manual driving vs AutoDrive.
- Identify a cheap way to detect road-class transition from current/neighbor
node flags.
- Decide whether the first prototype patches only the two main relax callsites
(`0x40b4ac`, `0x40b6d5`) or also the special/helper relax paths
(`0x40b175`, `0x40bca7`).
- Decode predecessor geometry from `state+0x1e` well enough to compute
predecessor/current/neighbor turn angle.
- Decide whether the later turn/ramp model should also patch the special/helper
relax paths (`0x40b175`, `0x40bca7`) or keep them vanilla.
After that, implement the smallest live-tunable prototype with additive
penalties only. Keep highway multiplier support available as a diagnostic knob,
but do not use it as the primary default behavior.
Next implementation step is to enable and test the smallest additive prototype
with route-result comparisons. If the fixed per-edge penalty moves paths in the
right direction and remains stable, extend it into a live-tunable cost file and
then add turn/continuity penalties. Keep highway multiplier support available as
a diagnostic knob, but do not use it as the primary default behavior.