Going to make a new post for this because I want it to be seen. This was quite an interesting pursuit.
Got it! I was right, KR detaching and reattaching input during custom movement throws it off. Currently minisphere has an optimization (premature, as I now see) where it runs a trigger check if and only if two conditions are met: 1) There is an input person, and 2) that person has moved since the last frame. In this case, when the engine runs the trigger check, no input is attached because the game reattaches it in a person script. And that script runs on the frame AFTER all movement has ceased:
QueuePersonCommand(thePC.name, COMMAND_MOVE_NORTH, false); // <-- is_immediate is false, suspends command execution until next frame
QueuePersonScript(thePC.name, "trigtest(); if (!Kbusy && !climbmode[0]) AttachInput(thePC.name); walking=false; ", false);
Note the trigtest(); in the reattachment script. This would normally mitigate the issue, but the function is bugged. Long story short, this game is very, VERY lucky to be playable at all, even in vanilla Sphere. The ONLY reason it works in vanilla is because Sphere always walks the trigger list on every update, even if the input person is stationary. It looks like I will have to do the same if I want to support this corner case.
So yes, this game is broken, but the fact that it works in the original engine makes it interesting: In many cases it's hanging on to its stability by a thread, so the smallest difference in engine behavior under the hood can break everything. If ever there were a testcase to punish premature optimizations and incomplete reverse engineering, this is it.