# Fornax command playability

`public/replays/fornax-complete.json` is an automated full-route witness from the imported canonical spawn. It contains ordinary forward, side, jump, duck, yaw and pitch commands. It never injects a position, velocity, contact state, checkpoint or timer value. This is a planned route for the existing simulator, not a human performance or an exact CSS/KSF parity claim.

The authoritative reproduction command is:

```sh
npx tsx scripts/plan-fornax-route.ts
```

The script reconstructs the native v3 commands, applies the two explicitly recorded yaw windows, writes `fixtures/fornax-planned-commands.json`, and calls the existing canonical export verifier. The final report is `fixtures/fornax-command-validation.json`; `fixtures/fornax-planning-evidence.json` also records source identity, the unmodified continuous-route diagnostic, the trigger-sweep limitation and planning decisions. Geometry, replay and trajectory hashes identify the actual validated files.

## Route and validation

The canonical spawn is `(-13888,-3776,14976.03125)`, yaw 0, with zero velocity. The existing `appendCanonicalApproach` helper reaches native frame zero `(-13703.9248046875,-3280.03515625,14976.03125)` with 727 ordinary ground commands, remains inside the start zone, and finishes stationary without starting the timer. Another 3,056 normal commands complete the route, for 3,783 commands overall.

The canonical fixture is accepted by `server/verify.ts`. Its report compares 30, 60, 144 and 240 FPS schedules against the same baseline at every physics tick: complete player state, full movement results including contacts and segments, timer state and events are byte-identical. The route touches 66 collision surfaces and has 943 surf-contact ticks. It never resets, enters practice mode or modifies initial player state.

The accepted elapsed time is **43.942787 seconds**, with ordered splits **14.561853 / 27.394243 seconds**. Start, CP1, CP2 and finish occur at canonical command ticks **854 / 1825 / 2680 / 3783**. The start and finish use authored `Map_start` (`*86`) and `Map_end` (`*87`) trigger geometry. The two CP gates are independently reviewed local corridor boxes, not recovered private KSF zone boundaries.

## Independent native record and adaptations

The source is the public CSS 66t forward main-course record by **Mercedes-Benz S124 om602 5-Door**, published on 2026-10-03 with time 43.941490173339844 seconds. The pinned recording is `replay_css_3543_0_782816_1791019618.rec`, SHA-256 `3def39687b282cfbd4251422254078da654d14d811dd6e9faaadf6708488b9ab`, 246,884 bytes. [KSF map](https://ksf.surf/maps/surf_fornax?game=66t&mode=fw), [native replay viewer](https://ksf.surf/replays/surf_fornax/replay_css_3543_0_782816_1791019618.rec?game=66t).

The independent v3 decoder preserves analog forward/side commands and flags. Reconstruction uses movement magnitudes and button bits from sample `i`, and view angles from sample `i+1`. Native forward/side magnitudes, jump, duck and pitch are unchanged. Only yaw is adapted, with smooth bounded windows at zero-based command indexes 450–650 and 775–940. The largest absolute control knot is 0.100677513031 degrees. The complete knot values and interpolation are in the reproduction script and planning report.

The first window was found with `plan-nyx-reprise-optimize.ts fornax --native-only --begin 450 --end 650 --target 800 --sigma .05 --generations 40 --population 30 --dimensions 6 --velocity-weight .2`. The second used `--begin 775 --end 940 --target 1000 --sigma .08 --generations 40 --population 30 --dimensions 8 --velocity-weight .3` on the resulting plan. Search clones contain only already-simulated command prefixes; the final export replays everything from canonical spawn.

The completed planned trajectory has maximum aligned native position error 7.396918108 units at native frame 3056 and velocity error 174.556827772 units/second at frame 2060, when the simulated player contacts `bsp-0-4153`. The preceding frame's velocity error is 0.053230611 units/second, showing how sensitive that contact is to small accumulated position differences. Native comparisons use the fixed 0.002-unit and 0.002-unit/second strict tolerances; the route does not pass native parity. The separate isolated next-tick native report must not be confused with continuous traversal or canonical command playability.

## Thin reset trigger limitation

Unmodified reconstructed commands follow the native record closely but reset at native tick 761, with maximum continuous position error 0.421185902 units and velocity error 0.072588458 units/second up to that point. More significantly, even the exact recorded native segment 760→761 intersects imported authored reset brush `bsp-59-5696` between samples. Both recorded endpoints are outside the trigger. Its bounds are approximately X `[1086,2306]`, Y `[-624,-336]`, Z `[12032,12034]`; the ducked player hull intersects it during the sweep.

The current engine tests complete movement sweeps. The recording shows that native play survives this crossing but does not by itself establish the private server's trigger-touch policy. The first steering window avoids the existing brush; it does not remove or shrink the trigger. The second returns the route close to native targets for subsequent surf contacts. No shared physics, collision, timer or reset semantics were changed to make this witness pass.

This work is local validation. Map source availability does not establish redistribution rights or authorize deployment.
