pathing: sidewall runup precondition via EntryPreparation

Introduce an EntryPreparationState carried on PathNode + A* context so
sidewall parkour can explicitly request one or more runway traverses
before takeoff instead of silently dropping the move. ParkourFeasibility
gains TryGetRequiredStaticEntryRunupSteps + HasPreparedRunup helpers so
long descends (major=5, dy=-1) only remain feasible when the preceding
node proved the runup.

Widen HasDominantAxisRunUp to accept cold-start sprint-jumps within
~3.1-3.5 blocks horizontally so lone overhang / staircase takeoffs stay
feasible without a 2-block runway (matches Baritone's MomentumBehavior
.ALLOWED contract).

Add a runtime SidewallParkourController that implements the corner
commitment + wall-hug chain during execution.

Extend pathing test fixtures with InitialMomentumTicks, add sidewall
accepted/rejected scenarios, and refresh timing + contract baselines to
reflect the new planner shapes. Document the design in
docs/superpowers/specs and plans.

Made-with: Cursor
This commit is contained in:
BruceChen 2026-04-19 17:03:03 +00:00
parent 95b20d9d1c
commit da52aa5c3c
15 changed files with 2925 additions and 25 deletions

View file

@ -321,26 +321,13 @@
"endBlock": {
"x": 622,
"y": 80,
"z": 620
}
},
{
"moveType": "Parkour",
"startBlock": {
"x": 622,
"y": 80,
"z": 620
},
"endBlock": {
"x": 624,
"y": 80,
"z": 621
}
},
{
"moveType": "Parkour",
"startBlock": {
"x": 624,
"x": 622,
"y": 80,
"z": 621
},

View file

@ -148,22 +148,17 @@
{
"scenarioId": "obstructed-parkour-l-turns",
"expectedTotalTicks": 50,
"maxTotalTicks": 62,
"maxTotalTicks": 80,
"segments": [
{
"moveType": "Parkour",
"expectedTicks": 13,
"maxTicks": 16
"expectedTicks": 20,
"maxTicks": 32
},
{
"moveType": "Parkour",
"expectedTicks": 21,
"maxTicks": 26
},
{
"moveType": "Parkour",
"expectedTicks": 16,
"maxTicks": 20
"expectedTicks": 30,
"maxTicks": 48
}
]
},