Monorepo for Aesthetic.Computer aesthetic.computer

oskiewar netplay: a sword nobody restored master

`saberPickups` was sim state that the rollback snapshot did not restore. It is mutated during the fight -- a blade goes inactive when it is taken, and a new one is pushed onto the map when an item arm comes off -- and it was missing from `netSimArrays`, so a rewind re-simulated frames in which a sword had already been picked up, or picked one up that the rewound timeline had not yet dropped. What made it so quiet is that `swordHeld` itself lives on the player and was always restored. The two seats agreed about every single number they hashed while disagreeing about whether somebody was holding a sword -- and a sword is a 1.5x reach multiplier in `meleeSpecFor`, so they went on agreeing for hundreds of frames until one seat's strike reached and the other's did not. The evidence was a `hitStunUntil` exactly 16,667us apart: one frame. So `swordHeld` is hashed now too. The fix is the snapshot line; the hash line is so that the next bug of this shape reports itself at the frame it happens instead of at the frame it finally changes an outcome. Found by keeping the JSON the hash was taken over -- behind `__oskiewarHashTrace`, off by default -- and diffing the two seats at the first frame they disagree. That is the tool this needed and did not have: a desync report names a frame and two numbers, and this turns those numbers back into fields. It is left in place. This is NOT a skatepark bug. It is on `main` at v114 and has been since the sabers landed; the park only made the fighters reach a blade during the netplay suite's choreography. The netplay suite is 18/0 here against 16/3 on main -- this also repairs the pre-existing "rounds roll over inside the fight" failure, which was the same fault wearing a different hat. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>