{
  "schema": "prototype-native-movement-comparison-v1",
  "generatedAt": "2026-10-09T02:54:52.298Z",
  "gameDllCommit": "96b2ef2727d3d3ed07db641874fd1c5d56db44f5",
  "mapSha256": "df6471d8985838a060cbd1312a88c21f7f65f7c0e79013a4e3a43edd921b42fb",
  "hashes": {
    "physics": "6795d7bb32ee34b6c438b2f7d2529ed9cb3da6b5c877f41b3bc846669e43f898",
    "baseline": "d5365910eebf0e4b7920a43fcb5ab38f5fb492a03c375ce8263cdfbca0594552",
    "advanced": "dae129e928793f2806e99f8b28c51cbb02161e406fce85e0523d4a7a4426309c",
    "ladder": "e3937952d8f8a63f5c425c37ec865ff603c79b0b641fe86c4068243d9e8d99a8"
  },
  "method": "Compare genuine recorded native RG_PM_Move pre/post states against independently executed TypeScript and compiled BSP collision. Continuous scenarios inject only engine maxspeed/clientmaxspeed and previous full usercmd buttons; no native positions/velocities/timers are injected between steps.",
  "passed": true,
  "reports": [
    {
      "mode": "independent",
      "suite": "baseline",
      "samples": 1250,
      "tolerance": 0.001,
      "worst": {
        "position": {
          "error": 9.765699360286817e-10,
          "case": "air_strafe",
          "step": 92,
          "expected": [
            -195.866104125,
            -1706.303344726,
            837.03125
          ],
          "actual": [
            -195.86610412597656,
            -1706.3033447265625,
            837.03125
          ]
        },
        "velocity": {
          "error": 0.00003051828127809131,
          "case": "air_strafe",
          "step": 67,
          "expected": [
            257.47000122,
            -17.332910537,
            0
          ],
          "actual": [
            257.47003173828125,
            -17.33290672302246,
            0
          ]
        },
        "view": {
          "error": 0.000001906380493021942,
          "case": "duck_hold_release",
          "step": 24,
          "expected": [
            0,
            0,
            2.096000432
          ],
          "actual": [
            0,
            0,
            2.095998525619507
          ]
        },
        "stamina": {
          "error": 9.375185072713066e-10,
          "case": "ground_jump",
          "step": 81
        },
        "duckTime": {
          "error": 0
        },
        "command": {
          "error": 0
        }
      },
      "perCase": {
        "ground_idle": {
          "position": 0,
          "velocity": 0,
          "flags": 0,
          "count": 60
        },
        "ground_accelerate": {
          "position": 9.374616638524458e-10,
          "velocity": 0.000015258679695762112,
          "flags": 0,
          "count": 130
        },
        "ground_friction": {
          "position": 9.374616638524458e-10,
          "velocity": 0.000015258460933864626,
          "flags": 0,
          "count": 80
        },
        "ground_jump": {
          "position": 9.687255442258902e-10,
          "velocity": 8.437268661509734e-10,
          "flags": 0,
          "count": 130
        },
        "held_jump": {
          "position": 9.687255442258902e-10,
          "velocity": 8.437268661509734e-10,
          "flags": 0,
          "count": 210
        },
        "air_strafe": {
          "position": 9.765699360286817e-10,
          "velocity": 0.00003051828127809131,
          "flags": 0,
          "count": 100
        },
        "duck_hold_release": {
          "position": 9.374616638524458e-10,
          "velocity": 0.000015258656247851832,
          "flags": 0,
          "count": 180
        },
        "duck_jump": {
          "position": 9.687255442258902e-10,
          "velocity": 8.437268661509734e-10,
          "flags": 0,
          "count": 150
        },
        "jump_release_rejump": {
          "position": 9.687255442258902e-10,
          "velocity": 8.437268661509734e-10,
          "flags": 0,
          "count": 210
        }
      },
      "flagMismatchCount": 0,
      "mismatches": [],
      "passed": true
    },
    {
      "mode": "independent",
      "suite": "advanced",
      "samples": 640,
      "tolerance": 0.001,
      "worst": {
        "position": {
          "error": 9.843859061220428e-10,
          "case": "east_roof_edge",
          "step": 55,
          "expected": [
            192.670501708,
            -1696,
            814.95123291
          ],
          "actual": [
            192.67050170898438,
            -1696,
            814.9512329101562
          ]
        },
        "velocity": {
          "error": 0.000015259398423950188,
          "case": "prespeed_299_jump_strafe",
          "step": 72,
          "expected": [
            -9.109740257,
            156.078948974,
            0
          ],
          "actual": [
            -9.109739303588867,
            156.07896423339844,
            0
          ]
        },
        "view": {
          "error": 8.466791712180566e-10,
          "case": "dd_groundstrafe",
          "step": 1,
          "expected": [
            0,
            0,
            16.957593917
          ],
          "actual": [
            0,
            0,
            16.95759391784668
          ]
        },
        "stamina": {
          "error": 9.374616638524458e-10,
          "case": "prespeed_299_jump_strafe",
          "step": 0
        },
        "duckTime": {
          "error": 0
        },
        "command": {
          "error": 8.59387228047126e-10,
          "case": "dd_groundstrafe",
          "step": 3
        }
      },
      "perCase": {
        "dd_groundstrafe": {
          "position": 9.843574844126124e-10,
          "velocity": 0.000003814896487597252,
          "flags": 0,
          "count": 170
        },
        "prespeed_299_jump_strafe": {
          "position": 9.687255442258902e-10,
          "velocity": 0.000015259398423950188,
          "flags": 0,
          "count": 110
        },
        "prespeed_301_jump_strafe": {
          "position": 9.687255442258902e-10,
          "velocity": 0.000015258785154514953,
          "flags": 0,
          "count": 110
        },
        "west_wall_slide": {
          "position": 9.687255442258902e-10,
          "velocity": 0.00001525885937780913,
          "flags": 0,
          "count": 150
        },
        "east_roof_edge": {
          "position": 9.843859061220428e-10,
          "velocity": 9.453060556552373e-10,
          "flags": 0,
          "count": 100
        }
      },
      "flagMismatchCount": 0,
      "mismatches": [],
      "passed": true
    },
    {
      "mode": "rollout",
      "suite": "baseline",
      "samples": 1250,
      "tolerance": 0.01,
      "worst": {
        "position": {
          "error": 9.765699360286817e-10,
          "case": "air_strafe",
          "step": 92,
          "expected": [
            -195.866104125,
            -1706.303344726,
            837.03125
          ],
          "actual": [
            -195.86610412597656,
            -1706.3033447265625,
            837.03125
          ]
        },
        "velocity": {
          "error": 0.00006103472657059683,
          "case": "duck_hold_release",
          "step": 111,
          "expected": [
            -0.000010832,
            247.827804565,
            0
          ],
          "actual": [
            -0.000010832902262336574,
            247.82774353027344,
            0
          ]
        },
        "view": {
          "error": 0.000001906380493021942,
          "case": "duck_hold_release",
          "step": 24,
          "expected": [
            0,
            0,
            2.096000432
          ],
          "actual": [
            0,
            0,
            2.095998525619507
          ]
        },
        "stamina": {
          "error": 9.375185072713066e-10,
          "case": "ground_jump",
          "step": 81
        },
        "duckTime": {
          "error": 0
        },
        "command": {
          "error": 0
        }
      },
      "perCase": {
        "ground_idle": {
          "position": 0,
          "velocity": 0,
          "flags": 0,
          "count": 60
        },
        "ground_accelerate": {
          "position": 9.374616638524458e-10,
          "velocity": 0.00004577625782076211,
          "flags": 0,
          "count": 130
        },
        "ground_friction": {
          "position": 9.374616638524458e-10,
          "velocity": 0.00003814689843295582,
          "flags": 0,
          "count": 80
        },
        "ground_jump": {
          "position": 9.687255442258902e-10,
          "velocity": 8.437268661509734e-10,
          "flags": 0,
          "count": 130
        },
        "held_jump": {
          "position": 9.687255442258902e-10,
          "velocity": 8.437268661509734e-10,
          "flags": 0,
          "count": 210
        },
        "air_strafe": {
          "position": 9.765699360286817e-10,
          "velocity": 0.00003051828127809131,
          "flags": 0,
          "count": 100
        },
        "duck_hold_release": {
          "position": 9.374616638524458e-10,
          "velocity": 0.00006103472657059683,
          "flags": 0,
          "count": 180
        },
        "duck_jump": {
          "position": 9.687255442258902e-10,
          "velocity": 8.437268661509734e-10,
          "flags": 0,
          "count": 150
        },
        "jump_release_rejump": {
          "position": 9.687255442258902e-10,
          "velocity": 8.437268661509734e-10,
          "flags": 0,
          "count": 210
        }
      },
      "flagMismatchCount": 0,
      "mismatches": [],
      "passed": true
    },
    {
      "mode": "rollout",
      "suite": "advanced",
      "samples": 640,
      "tolerance": 0.01,
      "worst": {
        "position": {
          "error": 9.843859061220428e-10,
          "case": "east_roof_edge",
          "step": 55,
          "expected": [
            192.670501708,
            -1696,
            814.95123291
          ],
          "actual": [
            192.67050170898438,
            -1696,
            814.9512329101562
          ]
        },
        "velocity": {
          "error": 0.0001220703046840299,
          "case": "west_wall_slide",
          "step": 118,
          "expected": [
            0,
            218.103225708,
            0
          ],
          "actual": [
            0,
            218.1031036376953,
            0
          ]
        },
        "view": {
          "error": 8.466791712180566e-10,
          "case": "dd_groundstrafe",
          "step": 1,
          "expected": [
            0,
            0,
            16.957593917
          ],
          "actual": [
            0,
            0,
            16.95759391784668
          ]
        },
        "stamina": {
          "error": 9.374616638524458e-10,
          "case": "prespeed_299_jump_strafe",
          "step": 0
        },
        "duckTime": {
          "error": 0
        },
        "command": {
          "error": 8.59387228047126e-10,
          "case": "dd_groundstrafe",
          "step": 3
        }
      },
      "perCase": {
        "dd_groundstrafe": {
          "position": 9.843574844126124e-10,
          "velocity": 0.000007630291015914281,
          "flags": 0,
          "count": 170
        },
        "prespeed_299_jump_strafe": {
          "position": 9.687255442258902e-10,
          "velocity": 0.00004577585937681761,
          "flags": 0,
          "count": 110
        },
        "prespeed_301_jump_strafe": {
          "position": 9.687255442258902e-10,
          "velocity": 0.000045776218740911645,
          "flags": 0,
          "count": 110
        },
        "west_wall_slide": {
          "position": 9.687255442258902e-10,
          "velocity": 0.0001220703046840299,
          "flags": 0,
          "count": 150
        },
        "east_roof_edge": {
          "position": 9.843859061220428e-10,
          "velocity": 9.453060556552373e-10,
          "flags": 0,
          "count": 100
        }
      },
      "flagMismatchCount": 0,
      "mismatches": [],
      "passed": true
    },
    {
      "mode": "independent",
      "suite": "ladder",
      "samples": 200,
      "tolerance": 0.001,
      "worst": {
        "position": {
          "error": 9.218865670845844e-10,
          "case": "ladder_climb_descend_jump",
          "step": 126,
          "expected": [
            -28.599994659,
            576,
            334.040008544
          ],
          "actual": [
            -28.599994659423828,
            576,
            334.0400085449219
          ]
        },
        "velocity": {
          "error": 5.554283820086148e-10,
          "case": "ladder_climb_descend_jump",
          "step": 0,
          "expected": [
            0,
            -0.000017484,
            200
          ],
          "actual": [
            0,
            -0.00001748455542838201,
            200
          ]
        },
        "view": {
          "error": 0
        },
        "stamina": {
          "error": 0
        },
        "duckTime": {
          "error": 0
        },
        "command": {
          "error": 0
        }
      },
      "perCase": {
        "ladder_climb_descend_jump": {
          "position": 9.218865670845844e-10,
          "velocity": 5.554283820086148e-10,
          "flags": 0,
          "count": 200
        }
      },
      "flagMismatchCount": 0,
      "mismatches": [],
      "passed": true
    },
    {
      "mode": "rollout",
      "suite": "ladder",
      "samples": 200,
      "tolerance": 0.01,
      "worst": {
        "position": {
          "error": 9.218865670845844e-10,
          "case": "ladder_climb_descend_jump",
          "step": 126,
          "expected": [
            -28.599994659,
            576,
            334.040008544
          ],
          "actual": [
            -28.599994659423828,
            576,
            334.0400085449219
          ]
        },
        "velocity": {
          "error": 5.554283820086148e-10,
          "case": "ladder_climb_descend_jump",
          "step": 0,
          "expected": [
            0,
            -0.000017484,
            200
          ],
          "actual": [
            0,
            -0.00001748455542838201,
            200
          ]
        },
        "view": {
          "error": 0
        },
        "stamina": {
          "error": 0
        },
        "duckTime": {
          "error": 0
        },
        "command": {
          "error": 0
        }
      },
      "perCase": {
        "ladder_climb_descend_jump": {
          "position": 9.218865670845844e-10,
          "velocity": 5.554283820086148e-10,
          "flags": 0,
          "count": 200
        }
      },
      "flagMismatchCount": 0,
      "mismatches": [],
      "passed": true
    }
  ],
  "limits": [
    "Sampled native build/map/commands only; not universal parity",
    "Ladder fixture covers one original brush ladder; water physics is not implemented",
    "Differences under 1e-9 can reflect nine-decimal CSV serialization",
    "Continuous rollouts reset once per scenario, including its native setup/settling commands"
  ]
}
