# Independent native CSS replays for four additional courses

Retrieved 5 October 2026 from KSF's public map pages, replay viewers and binary replay endpoints. These are independent recorded player states, not expectations generated by the browser simulator. They establish reference routes and observed server behavior; they do not establish exact simulation, entity, timer, or current-server parity.

## Source selection

All sources were selected from `game=66t&mode=fw` main-map leaderboards. Each viewer identifies `game: css`, `zoneId: 0`, `finishType: 0`, the exact map name, and `tickRate: 66.66666666666667`. Thus these are main-course CSS forward-style records, not bonus or individual-stage records. Ranks and display names below are those returned when retrieved and may change.

| Map and map-author source | Course | Selected runner / rank | Published record seconds | Record date UTC |
|---|---|---|---:|---|
| [surf_demise — elly](https://ksf.surf/maps/surf_demise?game=66t&mode=fw) | Linear, 2 checkpoints | levi / 2 | 37.13803482055664 | 2026-07-28 11:48:30 |
| [surf_kitsune — Arblarg](https://ksf.surf/maps/surf_kitsune?game=66t&mode=fw) | 9 stages | .x / 1 | 91.934898 | 2024-09-22 01:37:28 |
| [surf_aircontrol_ksf — SnoopSh](https://ksf.surf/maps/surf_aircontrol_ksf?game=66t&mode=fw) | Linear, 5 checkpoints | levi / 1 | 35.488685 | 2024-01-12 23:19:08 |
| [surf_lux — SSStormy](https://ksf.surf/maps/surf_lux?game=66t&mode=fw) | Linear, 3 checkpoints | agent nex / 1 | 31.267492 | 2026-01-14 09:55:24 |

Demise's rank-one entry is `.x`, 37.114688 seconds, recorded 25 March 2026, but its public record has `file: null`. The fixture therefore uses the highest-ranked available downloadable recording, rank two. It must not be called the world-record replay.

| Fixture slug | Native download | Bytes / frames / bookmarks | SHA-256 |
|---|---|---|---|
| demise | [replay_css_5121_0_540902_1785239310.rec](https://ksf.surf/api/replays/replay_css_5121_0_540902_1785239310.rec?game=66t) | 107,916 / 2,632 / 5 | `d796ba2c14f3e56ff0f64236ab01527b243b2d79be30ce5892f262f15cb74996` |
| kitsune | [replay_css_2000_0_712551_1726969048.rec](https://ksf.surf/api/replays/replay_css_2000_0_712551_1726969048.rec?game=66t) | 276,652 / 6,667 / 19 | `274ad1f6486452755d3f96074357a68618308a52ff7a5f19964bd2f72a4a4aa0` |
| aircontrol | [replay_css_15_0_540902_1705101548.rec](https://ksf.surf/api/replays/replay_css_15_0_540902_1705101548.rec?game=66t) | 114,448 / 2,756 / 8 | `67d260c28d40c1cef166e9573011e49cf8a8571881f191c266a9d4b272b7b552` |
| lux | [replay_css_2985_0_877922_1768384524.rec](https://ksf.surf/api/replays/replay_css_2985_0_877922_1768384524.rec?game=66t) | 104,400 / 2,531 / 6 | `b224c057ba5e527e923ecd67ef08c5322b70a60d55e4b950b329339ec7ab4696` |

The matching native files are `fixtures/{slug}-native.rec`; exact decoded binary32 samples are in `fixtures/{slug}-ksf-telemetry.json`. Each JSON retains the established `{source,header,bookmarks,frames}` shape. Bookmark `targetName` and `className` strings are also retained because maps can filter entity touches using them. Do not trim these strings: Kitsune's target name is a single space.

`fixtures/new-map-source-metadata.json` captures the selected record, rank-one record, public viewer properties, page hashes, binary hash, author text and course-count text. `fixtures/new-map-telemetry-summary.json` contains all bookmark states, first states, velocity extrema, complete before/after discontinuity states and Kitsune's explicit stage transitions. Positions, velocities, angles and buttons in that summary are unrounded. No large frame array needs to be printed to inspect the landmarks.

## Decoding and checks

Run `npx tsx scripts/decode-new-map-replays.ts` to decode the pinned local binaries offline. On Node 24, `node scripts/decode-new-map-replays.ts` also works. `--fetch` redownloads the pinned replay filenames and captures fresh metadata from their public pages; a changed leaderboard that no longer lists a pinned record causes source capture to fail visibly rather than silently selecting another run. The initial capture used ordinary HTTP downloads and parsed inert JSON from the public server-rendered pages.

The independently written decoder verifies the captured SHA-256 and byte length, version 2, total layout size, bookmark frame bounds, finite coordinates/angles/velocities, and ordered main start/finish bookmarks. The layout is a 16-byte header, 524-byte bookmarks, and 40-byte frames. Bookmark fields are frame, type, stage, 256-byte target name and 256-byte class name. Types 1, 2 and 3 are continue, stop and start respectively. [Public ReplayViewer structure definitions](https://github.com/crashfort/ReplayViewer/blob/0341fea8ba85fbb7c3d352b4b5ddf704a659fd4d/src/rv_priv.inc).

## First recorded state

Coordinates use Source X/Y horizontal and Z up, with player feet origins. Values in this document are rounded to six decimals; fixture values remain exact. A recording's first state is not necessarily a stationary spawn.

| Slug | Frame-0 position | Frame-0 velocity | Pitch / yaw | Buttons | Entity target name |
|---|---|---|---|---:|---|
| demise | (-11184.183594, -3911.715576, 15038.109375) | (-100.788055, -290.968018, 73.993378) | 70.397705 / -103.514610 | 1030 | `allows3` |
| kitsune | (-15360, -15024, 959.820007) | (0, 0, -18) | 16.528782 / 94.515366 | 0 | one space |
| aircontrol | (-2440.565186, -9504.291992, 14479.769531) | (-37.677769, -19.491684, -288) | 0 / 90 | 16 | `main` |
| lux | (-58.811485, 2117.576416, 1600.031250) | (0, 0, 0) | 35.420570 / -70.239693 | 0 | empty |

All four record `className: player` and keep their listed target name at every bookmark. In particular, Demise starts already moving with `allows3`; this replay alone cannot establish how a newly spawned player acquires that name, or prove that intermediate target-name changes never occur between bookmarks.

## Timing and linear-course landmarks

The viewer rate corroborates nominal 15 ms sampling. The native file has frame indices, not per-frame wall-clock timestamps. Published record times differ slightly from bookmark interval counts, so bookmark arithmetic does not establish KSF's exact timer boundary or sub-tick semantics.

| Slug | First start frame | Finish frame | Intervals | Intervals × .015 s | Published minus this value |
|---|---:|---:|---:|---:|---:|
| demise | 33 | 2509 | 2476 | 37.140 | -0.001965179443 s |
| kitsune | 204 | 6333 | 6129 | 91.935 | -0.000102 s |
| aircontrol | 168 | 2534 | 2366 | 35.490 | -0.001315 s |
| lux | 113 | 2197 | 2084 | 31.260 | +0.007492 s |

| Slug | Event / bookmark stage | Frame | Position |
|---|---|---:|---|
| demise | Start / 1 | 33 | (-11182.163086, -4039.968506, 14976.724609) |
| demise | CP1 / 2 | 783 | (11467.323242, -4153.684082, 7636.634277) |
| demise | CP2 / 3 | 1680 | (4055.793945, 1500.589478, 4694.838379) |
| demise | Finish / 99 | 2509 | (-11230.682617, 7533.611816, -3694.643311) |
| aircontrol | Start / 1 | 168 | (-2357.851318, -9229.839844, 14336.724609) |
| aircontrol | CP1 / 2 | 619 | (-2901.667969, -669.681946, 12200.659180) |
| aircontrol | CP2 / 3 | 1075 | (-12393.955078, 6989.348145, 8617.500977) |
| aircontrol | CP3 / 4 | 1545 | (4534.850586, 1088.244019, 3070.059082) |
| aircontrol | CP4 / 5 | 1903 | (-9172.749023, -8434.259766, -1912.635254) |
| aircontrol | CP5 / 6 | 2197 | (-9135.171875, 10744.531250, -5538.016602) |
| aircontrol | Finish / 99 | 2534 | (11557.597656, 3388.930176, -13396.194336) |
| lux | Start / 1 | 113 | (-220.241180, 1900.088867, 1600.726196) |
| lux | CP1 / 2 | 683 | (-365.668976, -2489.216309, -2555.614014) |
| lux | CP2 / 3 | 1152 | (49.865139, -5565.773926, -5610.058594) |
| lux | CP3 / 4 | 1803 | (7147.271484, -5448.883789, -1877.989136) |
| lux | Finish / 99 | 2197 | (6914.706543, 14724.418945, -8608.441406) |

These positions locate recorded timing events. They are not bounds for server-side zones. The summary also preserves the viewer's published main-course cumulative split times. The viewer's separate `stagePrs` entries are individual-stage personal bests, and must not be substituted for this full-run's stage times.

## Kitsune stage transitions

Kitsune has start/stop bookmarks for each of nine stages and a final stage-99 stop. The full-course start is frame 204 at (-15155.500977, -14797.662109, 821.466125); the finish is frame 6333 at (-15541.924805, 9942.676758, -11881.974609). Its stage-one entry is frame 0, but the record begins after the exact spawn placement, so no exact stage-one teleport destination is claimed.

For stages 2–9 the recording first moves to `(0,0,1000 × previous stage)` for one frame, preserving horizontal velocity and applying one normal -12 vertical-velocity step. The next frame places the player at the exact stage spawn listed below, with velocity `(0,0,-6)`, pitch 0, roll 0 and the listed yaw. The entry bookmark is one frame after that placement, when gravity has reached -18. These are consecutive recorded samples, each nominally 15 ms apart; they do not prove how the server implements the intermediate travel or whether the replay exporter applies transformations.

| Stage | Intermediate frame / Z | Exact recorded spawn frame / origin | Spawn yaw | Entry / exit bookmarks | Entry-to-exit frames / seconds |
|---|---|---|---:|---|---|
| 1 | Not recorded | First state 0: (-15360, -15024, 959.820007) | First yaw 94.515366 | 0 / 204 | 204 / 3.060 (pre-roll) |
| 2 | 456 / 1000 | 457: (-13312, -15072, -320) | 90 | 458 / 572 | 114 / 1.710 |
| 3 | 796 / 2000 | 797: (-11264, -15072, -1600) | 90 | 798 / 910 | 112 / 1.680 |
| 4 | 1230 / 3000 | 1231: (-8192, -15072, -2848) | 90 | 1232 / 1335 | 103 / 1.545 |
| 5 | 1696 / 4000 | 1697: (-5120, -15072, -5312) | 90 | 1698 / 1802 | 104 / 1.560 |
| 6 | 2157 / 5000 | 2158: (-2048, -15072, -7776) | 90 | 2159 / 2267 | 108 / 1.620 |
| 7 | 2679 / 6000 | 2680: (512, -14784, -12032) | 90 | 2681 / 2783 | 102 / 1.530 |
| 8 | 3439 / 7000 | 3440: (8192, -512, 6624) | 270 | 3441 / 3539 | 98 / 1.470 |
| 9 | 4097 / 8000 | 4098: (-15104, 14928, 10880) | 270 | 4099 / 4201 | 102 / 1.530 |

The 91.935-second first-start-to-finish count includes these intermediate samples and later stage preparation. The first three public cumulative splits, 3.809884, 8.910013 and 15.419838 seconds, correspond closely to frames 458, 798 and 1232 measured from frame 204. There is no evidence in these data for subtracting all later stage preparation time from the main-course total.

The pinned original CSS BSP (`41ff082a485d5b4a306589205187bc730ca4b2ac`) contains no entity origins at these eight `(0,0,Z)` intermediate points. Its authored color destinations also differ from these recorded spawns; for example `orange` is (-13312,-15216,-455), whereas the recorded stage-two spawn is (-13312,-15072,-320). This is evidence of a server or replay-layer difference, not proof of a specific installed plugin. A bounded public-source search did not identify KSF's authoritative per-map plugin/Stripper configuration. [wrldspawn's public surf-zones project](https://github.com/wrldspawn/surf-zones) explicitly describes itself as an approximation of KSF; its [Kitsune zone file](https://raw.githubusercontent.com/wrldspawn/surf-zones/main/z/surf_kitsune.json) is useful supporting context but is not substituted for native evidence here.

## Other large position discontinuities

The summary flags per-frame travel over 256 Source units. This diagnostic is deliberately separate from entity classification; smaller teleports and hull changes can fall below that threshold, and replay files do not contain entity-touch events.

- **Demise:** no frame-to-frame displacement exceeds 256 units. This does not prove that the map has no entity effects.
- **Lux, 1609 → 1610:** position changes from (296.840851,15139.075195,-9397.790039) to exactly (7168,-15168,-1856), a 31,978.277501-unit jump. Velocity changes from (265.827759,3445.113281,4.342194) to (319.924957,3440.556396,-7.657806), retaining substantial momentum instead of zeroing it. The -12 Z change is consistent with a normal gravity step. Both full angle states are in the summary; this evidence does not on its own identify which map entity or fix performs the teleport.
- **Aircontrol, 2729 → 2730:** after the frame-2534 finish, position jumps from the stopped end room to (-2078.310059,-9511.769531,14759.400391), velocity remaining zero. At 2754 → 2755 it jumps again to (-2440,-9504,14484) while Z velocity changes -288 → -300. Both are post-finish tail events, so neither should be counted as a failure during the completed course.

## Velocity components and cap evidence

The following extrema cover the full saved recordings, including pre-roll and tails. All listed peak frames fall before or at the main finish. Speeds are Source units per second. A component limit is not a horizontal-vector or total-vector speed limit.

| Slug | Max absolute X (frame) | Max absolute Y (frame) | Max absolute Z (frame) | Peak horizontal / total speed |
|---|---:|---:|---:|---:|
| demise | 4968.539063 (2508) | 4635.968262 (2106) | 1953.900635 (2368) | 4968.544361 / 5113.407677 |
| kitsune | 3500 (5498) | 3268.602783 (5743) | 3500 (5434) | 3659.230992 / 4544.127011 |
| aircontrol | 5376.755371 (2294) | 5728.947754 (2507) | 2811.728027 (2496) | 5741.902755 / 6002.104867 |
| lux | 2744.029297 (1051) | 3500 (2086) | 2676.242920 (2084) | 3727.611534 / 4347.768116 |

- [Demise's public viewer](https://ksf.surf/replays/surf_demise/replay_css_5121_0_540902_1785239310.rec?game=66t) reports `maxVelocity: 5000`. The samples exceed 3500 but never reach 5000 exactly. Thus 5000 is public metadata supported by compatible observations, not a cap independently measured by a plateau in this run.
- [Aircontrol's viewer](https://ksf.surf/replays/surf_aircontrol_ksf/replay_css_15_0_540902_1705101548.rec?game=66t) reports `maxVelocity: 10000`. The recorded components exceed 5000, but do not approach 10000. This run disproves a 3500 or 5000 component ceiling for its recorded route; it does not independently locate the 10000 ceiling.
- [Kitsune's viewer](https://ksf.surf/replays/surf_kitsune/replay_css_2000_0_712551_1726969048.rec?game=66t) reports `maxVelocity: 0`, which is not evidence for zero movement or an unlimited cap. X has 264 frames at exactly ±3500; Z has 60 at exactly -3500. No component exceeds 3500. A 3500 component cap is strongly supported by these plateaus.
- [Lux's viewer](https://ksf.surf/replays/surf_lux/replay_css_2985_0_877922_1768384524.rec?game=66t) also reports 0. Y has 114 frames at exactly +3500 and no component exceeds 3500, supporting the same inferred component cap.

## Remaining gaps

The files omit command analog magnitudes, engine build, cvars, plugin versions, grounded/contact flags, active crouch hull and per-tick target-name changes. Reconstructing held buttons and view angles requires the independently established alignment described in [the existing revision report](REVISION-VALIDATION.md), and the new routes have not yet independently re-established every input assumption. Native repeated-jump rules, surface friction and entity queue timing cannot be fully derived from these files alone.

Map geometry checks, continuous command-driven reproduction, legal stationary starting states and local timer-zone validation remain separate work. In particular, Demise and Aircontrol's first recorded frames already move, and Kitsune contains explicit server/replay stage relocation. Using recorded positions to place a local checkpoint or teleport destination does not validate the path that reaches it. No full-route parity or simulator completion claim is made by this telemetry capture.
