# Fornax local import

6 October 2026. **surf_fornax by iNooVa**, original CS:S tier-1 linear main course, two checkpoints. Added to the map menu, featured rotation, remembered selection, real-render preview, Watch route, local records and generated online map identity. This is a local review build; no deployment or database write was performed.

## Source and implementation

Pinned BSP SHA-1 `2194b0e9d8153d75837dfb8e421d040c8072c700`, 174,311,018 bytes. Sources and source-reference hashes are in [FORNAX-REFERENCE.md](FORNAX-REFERENCE.md). Geometry and artwork come from this same CSS BSP; no CS:GO or CS2 port is used. The shared movement, collision, timing, input and renderer implementation is unchanged.

- 5,314 compiled solid brushes with their original planes/bevels. All 434 visual displacements are excluded from player collision by source metadata; no collision proxy was invented. The 198 static props are non-solid in the BSP.
- Original `Map_start` / `Map_end` convex volumes, main failure shell, and map-authored 5,000-unit per-component velocity limit. The native KSF viewer corroborates that limit.
- The canonical spawn uses authored `map_dest` X/Y and yaw, settled on its real deck at Z14976.03125. Both player hulls are unobstructed and the spawn remains grounded without input.
- Two local checkpoint slabs follow KSF's two main-course bookmarks. Their widths span the physical corridors, including both sides of the second ramp. Private KSF timer-zone coordinates were not available. Exact bounds and entity review are in `scripts/import_new_maps.py` and `fixtures/fornax-entity-review.json`.
- The original reset shell remains a union of compiled convex brushes. Its enclosing bounding box alone would incorrectly reset valid routes. Bonus/hub triggers and the initially disabled post-finish return are not enabled as main-course portals.
- The 0.015-second float32 simulation, air acceleration, start restrictions and leaderboard validation rules remain the existing Surfd configuration. All nine previous board identities are retained exactly; the new map has its own geometry/configuration identity.

Only the main course is integrated. Seven bonuses are present in the source artwork but are not selectable courses or ranked bonus routes. Animated end-door/lift behavior after the main finish is outside the integrated route.

## Validation and limits

The [complete command witness](FORNAX-PLAYABILITY.md) starts at the unchanged canonical spawn, walks to a stationary reference starting point and surfs the entire course with normal movement/view commands. It passes server verification in **43.942787 seconds**, with both ordered checkpoints and no resets. All 3,783 command ticks, contact results and timing agree exactly under 30/60/144/240 FPS schedules.

Separate independent next-tick comparisons use the pinned native KSF v3 recording, including its analog input magnitudes. At the predeclared .002-unit / .002-unit-per-second limits, **2,113 of 3,056 comparisons pass**. All 943 strict failures involve collision contact; maximum errors are **.002238 units / .031427 units per second**, first divergence tick258, and all native grounded flags agree. These are reported failures, not a claim of exact equivalence.

Continuous native replay also exposes a thin-reset-trigger difference: native samples survive crossing a 2-unit trigger between their endpoints, whereas this simulator checks the complete movement sweep. The playable witness uses two declared tiny yaw adjustments to avoid that original trigger and correct later drift; no geometry, velocity, timer or player-state corrections are injected. Full-route aligned errors reach 7.397 units and 174.557 units/s at different contact times. See the evidence and reproduction in [FORNAX-PLAYABILITY.md](FORNAX-PLAYABILITY.md).

[Visual validation](FORNAX-VISUALS.md) checks the imported world/prop buffers, original material metadata, image pixels and compressed texture bytes. Two original bonus-area resources are missing and are reported without guessed substitutions. Source shader proxies, water/refraction, some lighting features, particles and animated brush/model behavior remain approximations or unsupported. Native pixel parity is not claimed.

## Completed review checks

- `npm test`: **371 passed**; importer Python suite: **17 passed**. Type checking and the production build pass. Vite retains the existing large-renderer-chunk advisory.
- All seven added-map canonical routes pass server verification and all four render schedules. Existing nine-map catalog entries match `fixtures/fornax-prior-online-catalog.json` exactly.
- The built game completes all **3,783 commands** in the actual browser with the same full player state, time and splits as headless verification. Real keyboard/Pointer Lock, R restart, walking into the failure shell, practice save/restore, menu sizes 1440/1280/390px and remembered map selection are exercised. Cloud transport is disabled in QA; no live record is written. Evidence: `fixtures/browser-new-map-results-fornax.json`.
- Both native-compressed and decoded texture loading paths pass request-set checks without errors. Native/fallback/native repeated-load resource counts return to the same values. The local 1280×720 renderer sample measured approximately **357–360 FPS**, p95 frame interval **2.9ms**; this is one machine's measurement, not a hardware-wide guarantee. Native packed transfer is **52.0MB / 25 requests**, fallback **65.3MB / 21 requests**, including visual manifest. See `fixtures/fornax-visuals/performance.json` and `packed-transfer.json`.
- An independent reviewer checked authored bounds, reset union, spawn, CP aperture coverage, exact compressed replay upload verification, file/catalog hashes and existing board compatibility. No remaining actionable integration finding was identified. The native fidelity limits above remain open and explicitly separate from passing browser/playability tests.

## Reproduce

Use the pinned source downloader, then the existing converters with a read-only licensed CSS installation:

```sh
python scripts/download_new_maps.py
python scripts/audit-nyx-reprise.py fornax
python scripts/import_new_maps.py fornax --game-dir "PATH/Counter-Strike Source"
python scripts/import_boreas_visuals.py node_modules/.map-imports/surf_fornax.bsp --slug fornax --map-id surf_fornax --author iNooVa --game-dir "PATH/Counter-Strike Source" --texture-format lossless-webp --compressed-textures
python scripts/validate_new_map_visuals.py --slugs fornax --game-dir "PATH/Counter-Strike Source"
npx tsx scripts/decode-fornax-replay.ts
npx tsx scripts/validate-fornax-reference.ts
npx tsx scripts/plan-fornax-route.ts
npm test
npm run validate:new-maps
npm run build
npm run preview -- --port 4197
```

`UI_BASE_URL=http://127.0.0.1:4197 npx tsx scripts/browser-new-map-qa.ts fornax` exercises the built game, complete route, Pointer Lock, restart, menu layout and finish splits without online writes. For renderer-only captures and performance, use the development server (4196 in this review), which exposes renderer source modules. `CAPTURE_MAPS=fornax` selects the deterministic real-render preview camera.

## Publication and credit

The [author's upload](https://gamebanana.com/mods/137780) explicitly lists **CC BY-NC-ND 4.0** and asks permission for redistribution or distribution of modified parts. No permission grant has been established here. Review/resolve those rights before publishing this converted map; do not treat its public download as a permissive asset licence. Main map/bonus4: iNooVa; bonus contributors: Mariowned, Biji, FPS God, vay, hesuka, 8X. Full captured source credits and third-party notices are retained.
