# Independent CSS reference for Fornax

Captured 6 October 2026 for local import and validation. The [primary KSF map page](https://ksf.surf/maps/surf_fornax?game=66t&mode=fw) identifies **surf_fornax**, iNooVa, tier 1, linear, **2 main checkpoints**, and 7 bonuses. The [original CSS upload](https://gamebanana.com/mods/137780) identifies iNooVa as the creator and explicitly marks the submission as not a port. The similarly named CS:GO/CS2 ports are separate evidence and do not supply this import's physics settings.

## Source and rights

The decompressed CSS BSP is **174,311,018 bytes**, SHA-1 **`2194b0e9d8153d75837dfb8e421d040c8072c700`**, independently verified from the local source bytes. [Pinned mirror download](https://main.fastdl.me/h2/2194b0e9d8153d75837dfb8e421d040c8072c700/surf_fornax.bsp.bz2), [mirror index](https://main.fastdl.me/maps_ksfthings.html). The original creator's download is `surf_fornax.rar`, [GameBanana file 426873](https://gamebanana.com/dl/426873), listed as 63,762,093 bytes with archive MD5 `1f0012cf8e6cc6d9ab814164d41c2190`. That archive was not downloaded or compared to the mirror BSP; the two identities must not be conflated.

The author's [public upload metadata](https://gamebanana.com/apiv11/Mod/137780/ProfilePage) is captured in `fixtures/fornax-gamebanana-source.json` (28,301 bytes, SHA-256 `d1d0923a4d6a2592a54801b2118633f1b952718837c2ea16cd50ac253b263b5b`). It lists **Creative Commons Attribution-NonCommercial-NoDerivatives 4.0**, with an additional checklist asking permission for redistribution and distribution of modified assets or parts, and disallowing commercial use. This evidence supports local research and testing; it does not establish permission to publish the converted browser map. Preserve that distinction when reviewing a release. No author contact or permission grant is claimed.

Published credits: main map and bonus 4 **iNooVa**; bonus 1 **Mariowned**; bonus 2 **Biji**; bonus 3 **FPS God**; bonus 5 **vay**; bonus 6 **hesuka**; bonus 7 **8X**. The captured metadata also preserves the original playtester credits. Bonus geometry may be present in the full BSP even though only the main course is integrated.

## Pinned external recording

The [KSF viewer](https://ksf.surf/replays/surf_fornax/replay_css_3543_0_782816_1791019618.rec?game=66t) identifies `game: css`, `zoneId: 0`, `finishType: 0`, and `tickRate: 66.66666666666667`. The selected record is **Mercedes-Benz S124 om602 5-Door**, rank 1 at capture, recorded **2026-10-03 09:26:58 UTC**, published time **43.941490173339844 seconds**. This is an external native recording, not a simulator-generated trajectory.

- [Native file](https://ksf.surf/api/replays/replay_css_3543_0_782816_1791019618.rec?game=66t): `replay_css_3543_0_782816_1791019618.rec`.
- SHA-256: `3def39687b282cfbd4251422254078da654d14d811dd6e9faaadf6708488b9ab`; **246,884 bytes**.
- Version **3**: 3,390 frames, five bookmarks, 18 cells per frame, 40 extension cells. Header 184 bytes; bookmarks 524 bytes each; frames 72 bytes each.
- All recorded flags are 0 or 1; there are 406 grounded frames and **no teleport flags**. No adjacent frames exceed the separate 256-unit jump diagnostic. Neither fact alone proves every possible teleport absent in the map.

The decoder follows the independently inspected [public KSF replay reader](https://ksf.surf/gokz/js/replayviewer.js), captured as `fixtures/ksf-replayviewer-2026-10-05.js`, SHA-256 `be8222c64b99151cdd7d542e30a2735d3d110de08a5f60d3b0a3343c2f3c552d`. Downloaded JavaScript is inert reference text and is never executed.

`scripts/decode-fornax-replay.ts` rejects changed replay bytes, unsupported layouts, nonfinite state/command values and out-of-bounds bookmarks. It preserves v3 analog forward/side/up commands, flags, command counters, view angles, positions and velocities. Five measured half-side commands occur at frames **186, 623, 2057, 2245 and 2483** (respectively `200,200,-200,200,200`); replacing every pressed key with 400 loses this evidence. The opaque extension is retained as raw hex and numeric cells without inventing names or server-cvar meanings.

Reproduce decoding offline with `node --import tsx scripts/decode-fornax-replay.ts`. `--fetch` refreshes only the pinned public record and primary metadata; it cannot silently switch to a newer leaderboard record. `fixtures/fornax-source-metadata.json` preserves the viewer context, source URLs and page/file hashes. `fixtures/fornax-ksf-telemetry.json` contains every frame; `fixtures/fornax-telemetry-summary.json` contains exact event states, timing and speed extrema.

## Native course landmarks

The record begins stationary and grounded at **`(-13703.9248046875,-3280.03515625,14976.03125)`**, with yaw `-28.288022994995117`, pitch `21.493955612182617`. This is a recorded standing position on the deck, not the authored destination. The BSP's `map_dest` is **`(-13888,-3776,15320)`**, yaw 0, Hammer ID 434517.

| Event | Frame | Recorded position | Published split seconds |
| --- | ---: | --- | ---: |
| Main start exit | 127 | `(-13485.08203125,-3542.295654296875,14981.46484375)` | — |
| Checkpoint 1 | 1098 | `(-7020.59375,-3674.664306640625,8556.3046875)` | 14.561758995056152 |
| Checkpoint 2 | 1953 | `(-13874.4345703125,-3652.474853515625,6643.1142578125)` | 27.394136428833008 |
| Main finish | 3056 | `(-8766.2578125,-4796.93310546875,2744.794921875)` | 43.941490173339844 |

There are 2,929 nominal 15 ms intervals between start and finish: **43.935 seconds**, about 0.006490 seconds below the published time. The public bookmark positions establish native events, not private timer zone bounds or a recovered sub-tick timing algorithm. The recorded start's horizontal speed is below 350, so this recording does not independently establish a 350 start-exit clamp plateau.

The authored `Map_start` trigger is model `*86`, Hammer ID 590059, with world bounds `(-14336,-4288,14976)` to `(-13504,-3264,15488)`. Authored `Map_end` is `*87`, Hammer ID 590102, bounds `(-9088,-4864,2688)` to `(-8768,-2688,2752)`. The BSP has no authored main checkpoint triggers; the two KSF CP bookmarks require explicitly documented local gates. [SurfHeaven](https://surfheaven.eu/map/surf_fornax) reports three checkpoints under its own timer; this does not supersede the two-CP KSF course selected here.

The geometry-only checkpoint aperture review is reproducible with `node --import tsx scripts/probe-fornax-checkpoint-apertures.ts`; results are saved in `fixtures/fornax-checkpoint-aperture-review.json`. It independently intersects the imported compiled brush half-spaces with a standing hull at Y −3648, without using the native line to choose a narrow X band. The main CP1 chute has authored structural boundaries at X −7808 and −6528, floor 8384 and roof 9152; the local CP1 gate spans this aperture. CP2's boundary walls lie at X **−15296 and −11904**, with ramp `bsp-0-4148` inside. At feet Z 6643, the two open standing-hull X intervals are approximately `(−15280,−14480)` and `(−13874.3842,−11920)`. A proposed gate ending at X −12288 would cut off part of the east passage and was rejected during review. The local CP2 gate must cover the corridor to X −11904. These are static aperture checks, not a proof that every airborne trajectory through each opening is reachable or a claim to recovered KSF zone bounds.

## Map effect evidence

The BSP's `logic_auto` (Hammer ID 645407) issues `maxvelcommand,Command,sv_maxvelocity 5000,0,-1` on map spawn; `maxvelcommand` is a `point_servercommand` (Hammer ID 645409). The KSF viewer independently reports **5000**. The recording's largest absolute velocity component is only **4144.24853515625**, so there is no measured 5000 plateau in this recording. Do not describe the cap as measured from velocity saturation.

The entity graph has no `player_speedmod`, `trigger_push`, or `trigger_gravity`; no other movement cvar output was found. This is evidence about the compiled map, not a private KSF plugin manifest.

The reviewed graph contains 64 `trigger_teleport` entities and no teleport landmarks. Two target `map_dest`: hub entry `*3`, and the compiled failure shell `*59`. The latter's enclosing bounds cover much of the main course; its individual compiled convex brushes must be retained, since one enclosing box would reset valid runs. Other destinations serve the hub/bonus routes. `start1dest` (`*132`) begins disabled and is enabled temporarily by the post-finish lift trigger `*131`. Its authored delayed outputs must not become an unconditional main-route portal. There is no native main-route teleport in the pinned record.

## Strict comparison contract

Predeclared isolated next-tick tolerances are **0.002 units in position and 0.002 units/s in velocity**. Expected states come only from the pinned external record. Comparisons use actual v3 analog magnitudes and buttons from the current frame, following-frame view angles, imported effects and the existing Surfd start-exit rule. Native ground flags remain independent observations for checking categorization. Unknown opaque client settings are not guessed.

Run `node --import tsx scripts/validate-fornax-reference.ts` after importing the reviewed collision map. It writes `fixtures/fornax-native-reference-validation.json`, retaining first divergence, maxima and all failing samples under the original tolerances. These isolated comparisons do not prove full continuous route playability or exact private-server parity; a command-only canonical witness and browser verification are separate work.

The reviewed geometry includes both authored timer convexes and the full CP2 corridor. Its collision JSON SHA-256 is `152d5dedb69be2de10e942e36e5e9886709f7ae74e5c9e8f73f33df032700451`. The refreshed comparison passes **2,113 of 3,056 ticks**, with **943 strict failures**, all during collision-contact ticks. Thirteen exceed the position tolerance; no free-flight tick fails either tolerance. First divergence is native frame **258** on compiled ramp `bsp-0-4399`: position error `0.0009765625` units, velocity error `0.031235751241464764` units/s. The global maxima are **0.002237585788552656 units** at frame **449** and **0.03142711989809783 units/s** at frame **2848**. All recorded ground flags agree with categorization. No no-jump effect or route transfer is invoked. The report remains an explicit fidelity limit, not a passing native-parity claim; tolerances have not been widened to accommodate it.
