{
  "schema": "wax.jedi-pmove-case-study.v1",
  "page": "https://waxlang.dev/jedi",
  "subject": "The player-movement region of Star Wars Jedi Knight: Jedi Academy (Raven Software, 2003; GPL source release maintained as OpenJK) reimplemented in Wax and integrated into the existing engine.",
  "fork": {
    "branch": "wax-pmove",
    "commit": "be0abfb7f27addcac9bf647fc3bf2202bca3418a",
    "license": "GPL-2.0-or-later, as OpenJK",
    "published": true,
    "note": "The fork is public. This commit identifies the source behind the published full-session viewer.",
    "url": "https://github.com/weichx/OpenJK/tree/wax-pmove"
  },
  "recording": {
    "id": "Recording_20260904_124124_825858950_666735_0000000000",
    "file": "recording.wxs",
    "onSite": false,
    "note": "The .wxs is not published. Every number below comes from waxdbg run against it locally.",
    "bytes": 2648006,
    "frameCount": 20394,
    "startFrame": 0,
    "lastFrame": 20393,
    "keyframeCount": 17,
    "keyframeIntervalInFrames": 1200,
    "framesStoredBytes": 1750824,
    "framesUncompressedBytes": 18105569,
    "keyframesStoredBytes": 690677,
    "keyframesUncompressedBytes": 36697212,
    "keyframeHeapImageBytes": 36622016,
    "source": "waxdbg recording info <recording.wxs>"
  },
  "commands": [
    "waxdbg recording scan <recording.wxs> --no-query-library --file Queries/Trajectory.wax --table > traj.txt",
    "waxdbg recording scan <recording.wxs> --no-query-library --file Queries/Jumps.wax --name JediPmove.Jumps --table > jumps.txt",
    "waxdbg recording query <recording.wxs> --frame 20393 --no-query-library --file Queries/Heightmap.wax --name JediPmove.Heightmap --args '{\"x0\":-1377.0,\"y0\":-1713.0,\"x1\":1825.4,\"y1\":2921.0,\"n\":120,\"zTop\":420.9}' > heightmap.json",
    "python3 codemp/game/wax/Tools/session-viewer.py heightmap.json traj.txt jumps.txt anomalies.json session.html <recording.wxs>",
    "python3 codemp/game/wax/Tools/render-session.py heightmap.json traj.txt session.svg session.png"
  ],
  "derivedNumbers": {
    "jumpLandings": 58,
    "landingsThatStartedWithAJump": 36,
    "landingsThatStartedWithAWalkOff": 22,
    "longestAirtimeMs": 1863,
    "longestAirtimeFrame": 2984,
    "highestJumpFrame": 9031,
    "highestJumpRiseAboveTakeoff": 238.1,
    "hardestLandingSpeed": 743.4,
    "hardestLandingFrame": 13959,
    "heightmapTraces": 14400,
    "source": "columns of jumps.txt, the table output of Queries/Jumps.wax"
  },
  "parityHarness": {
    "command": "codemp/game/harness/parity.sh",
    "movementScenarios": 21,
    "waxTicksCompared": 1919,
    "result": "byte-identical traces on every scenario",
    "closedRun": {
      "command": "codemp/game/harness/parity.sh --closed",
      "worldQueriesAnsweredInWax": 7453,
      "worldQueriesFellBackToHost": 0
    }
  },
  "sourceExcerpts": [],
  "assets": [
    {
      "path": "session.html",
      "bytes": 2685085,
      "sha256": "d7fc89d9270c400887c10c931cf056af3bca6fea20be8dd9787d7180679bedf4",
      "what": "self-contained session viewer; positions and a probed floor grid only",
      "presentation": "Responsive layout, scaled map marker hit testing, and a labeled height line without airborne bands or a separate landing strip; recorded query data unchanged."
    },
    {
      "path": "session.png",
      "bytes": 29967,
      "sha256": "35af5951ac636dcab3adf99f9532430fdd2b967601426a7776e66535b553d230",
      "what": "still of the same view"
    },
    {
      "path": "Jumps.wax",
      "bytes": 2557,
      "sha256": "a5a96f2f0046c373fecf387c5ea022c97fe4866c81c3287fb85bd86e83fb8b86",
      "what": "verbatim copy of codemp/game/wax/Queries/Jumps.wax"
    },
    {
      "path": "Heightmap.wax",
      "bytes": 1500,
      "sha256": "7c4f5808685b7436a0b6576429ed7f13c33f875139648cb83942028fa74c32c1",
      "what": "verbatim copy of codemp/game/wax/Queries/Heightmap.wax"
    },
    {
      "path": "Trajectory.wax",
      "bytes": 1707,
      "sha256": "62d70bc4ae8888796e6c1d8ccbeb993d08e2be79a1cd753b8c41e1191662707a",
      "what": "verbatim copy of codemp/game/wax/Queries/Trajectory.wax"
    },
    {
      "path": "Jumps-current.wax",
      "bytes": 5548,
      "sha256": "815e6940ef7cde17cc6d1a22718fd0291afe7890a47376fcbd1b09bf0b1f1513",
      "what": "Current landing query and investigation; see currentQuery for validation and provenance."
    }
  ],
  "assetPolicy": "Nothing from the retail game is published here. Every file is derived data: coordinates produced by the simulation, trace results probed out of the recorded collision world, source code, and tool output.",
  "currentQuery": {
    "path": "Jumps-current.wax",
    "forkCommit": "c65e8cf",
    "source": "codemp/game/wax/Queries/Jumps.wax",
    "what": "Current query and investigation: reads per-frame movement state and derives arcs by scanning recorded frames. No application history buffer.",
    "validation": {
      "recordingId": "Recording_20260907_095341_261048164_489287_0000000000",
      "frameRange": {
        "from": 0,
        "to": 123
      },
      "landings": 2,
      "note": "Verified with the investigation runner on a fresh recording. The full-session viewer and numbers above retain their original provenance; this source is not the query that generated that older artifact."
    },
    "sourceUrl": "https://github.com/weichx/OpenJK/blob/c65e8cfc41f7891faaa33dea239321b473f66bfc/codemp/game/wax/Queries/Jumps.wax"
  }
}
