diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 107fec3d..5f56a824 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -206,6 +206,29 @@ and trace validate_walkable @0x0050d010 / transitional_insert @0x0050b6f0 / adjust_sphere_to_plane @0x00538210 WHILE the glide happens — the diff between retail's live inputs and ours in the same scenario IS the answer. +### LIVE RETAIL TRACE 2026-08-08 — the glide IS cliff_slide, firing every tick; the divergent branch is pinned + +cdb attached to the PDB-paired retail client while the user glided the +45-degree protocol (`345-retail-glide.cdb.log`): `edge_slide` and +`cliff_slide` fired **594 times each, in lockstep** (~30/s through the glide +windows) with `set_sliding_normal` tracking at 538; **`step_up` fired ZERO +times**; `adjust_sphere_to_plane`/`walkable_hits_sphere` zero (outdoor +terrain walkables go through `validate_walkable` only). Ours in the same +scenario: the edge family fired 18 times total and the stuck ticks +dead-looped on insert retries without reaching it. + +**The divergence, exactly:** retail's `transitional_insert`, when the +walkable validation refuses the steep plane, proceeds INTO the +step-down-failed/edge_slide path on every tick — the D0 pass's +"Adjusted just retries from scratch" reading missed the branch retail +actually takes here. Ours retries the insert without entering the edge +family, exhausts attempts, restores. The fix target is that one branch in +our `TransitionalInsert` against retail's @0x0050b6f0, with the edge-entry +anchors already mapped in the #32 research (step-down-failed at +~0x0050b8xx-0x0050b921). The response machinery downstream is already +proven faithful AND live-healthy (this morning's 18 firings all applied +clean constraints). + **The two prior validations (both now resolved — the user's observation answers 1 and mandates 2's runtime session):** 1. **The cheapest decisive test needs no debugger: the USER walks their diff --git a/tools/cdb/345-glide-profile.cdb b/tools/cdb/345-glide-profile.cdb new file mode 100644 index 00000000..7f46270a --- /dev/null +++ b/tools/cdb/345-glide-profile.cdb @@ -0,0 +1,26 @@ +.logopen C:\Users\erikn\source\repos\acdream\345-retail-glide.cdb.log +.sympath C:\Users\erikn\source\repos\acdream\refs +.symopt+ 0x40 +.reload /f acclient.exe + +r $t0 = 0 +r $t1 = 0 +r $t2 = 0 +r $t3 = 0 +r $t4 = 0 +r $t5 = 0 +r $t6 = 0 +r $t7 = 0 +r $t8 = 0 + +bp acclient!OBJECTINFO::validate_walkable "r $t0 = @$t0 + 1; .if (@$t0 % 500 == 0) { .printf \"[c] vwalk=%d tins=%d edge=%d cliff=%d adjplane=%d whits=%d stepup=%d vtrans=%d slidn=%d\\n\", @$t0, @$t1, @$t2, @$t3, @$t4, @$t5, @$t6, @$t7, @$t8 }; .if (@$t0 >= 20000) { qd } .else { gc }" +bp acclient!CTransition::transitional_insert "r $t1 = @$t1 + 1; gc" +bp acclient!CTransition::edge_slide "r $t2 = @$t2 + 1; gc" +bp acclient!CTransition::cliff_slide "r $t3 = @$t3 + 1; gc" +bp acclient!CPolygon::adjust_sphere_to_plane "r $t4 = @$t4 + 1; gc" +bp acclient!CPolygon::walkable_hits_sphere "r $t5 = @$t5 + 1; gc" +bp acclient!CTransition::step_up "r $t6 = @$t6 + 1; gc" +bp acclient!CTransition::validate_transition "r $t7 = @$t7 + 1; gc" +bp acclient!COLLISIONINFO::set_sliding_normal "r $t8 = @$t8 + 1; gc" + +g