Five discoveries beyond the plan text: ChargeJump never called by
production code (StandingLongJump has never armed — W6 must wire the
charge-start call); the DefaultSink→sequencer path already exists
end-to-end (W6 = bind one property + delete UpdatePlayerAnimation +
the edge detector); skipTransitionLink already gone (stale plan
bullet); the #45 sidestep factor + ACDREAM_ANIM_SPEED_SCALE have no
equivalent in the shared sink path (decision required); ApplyServerRunRate's
apply_current_movement goes live once DefaultSink binds (fast re-speed
absorbs it — retail's own mid-run speed-change mechanism).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Workflow-produced pin pass over the R3 decomp extraction (3 independent
raw re-readers + adversarial refuters on the two load-bearing pins +
synthesis). No pin was refuted; none blocks on cdb.
Headlines:
- A1: motion_allows_jump 0x005279e0 is a BLOCKLIST (0 = pass, 0x48 =
blocked) — the BN extraction's whitelist annotation was inverted
(corrected in-place in §3a + §10). Retail blocks FALLEN 0x40000008
and PASSES Falling 0x40000015; ACE mis-transcribed the exact-id term
as Falling (one-off slip — ACE's own charge gates use Fallen).
Definitive literal-uint blocklist table recorded.
- A3: the raw-vs-interpreted dual-dispatch gate is IsThePlayer (vtable
slot +0x14, bound via the ACCWeenieObject vftable dump @0x007e3ea0),
NOT ACE's IsCreature — in all four functions. Anti-artifact proof:
HitGround/LeaveGround nearby call the +0x2c IsCreature slot, so BN
distinguishes the slots locally. Copying ACE's gate would send
remotes down apply_raw_movement against an empty raw state.
- A4: MovementParameters absolute-mask table pinned from acclient.h's
own bitfield struct; retail ctor default 0x1EE0F has can_charge
CLEAR (ACE sets it true) and walk_run_threshold 15.0 (ACE 1.0).
- A5/A6: both jump-velocity epsilons are 0.000199999995f (acdream's
0.001 must change); get_leave_ground_velocity's fallback matrix is
GLOBAL→LOCAL (index-pattern match against Frame::globaltolocalvec).
- A10: definitive error-code table from an exhaustive return-site
sweep, incl. a second 0x24 site (DoInterpretedMotion action-class
contact block) absent from the plan row.
- Adjacent: move_to_interpreted_state's apply_current_movement arg2 is
a garbled allowJump = (motion_allows_jump(old fwd) == 0) — polarity
trap for W-commits.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>