# Nyx and Reprise: original CSS imports

Local review build, 5 October 2026. These are converted original CSS maps, not
reconstructed courses or CS2 ports. Exact native parity is not claimed.

| Map | Credit | KSF difficulty | Main route | Velocity limit |
| --- | --- | --- | --- | --- |
| surf_nyx | Syncronyze; Shadow Sheep | Tier 1 | Linear, 2 checkpoints | 4000 per component |
| surf_reprise | TeMP | Tier 2 | Linear, 3 checkpoints | 4000 per component |

Primary [Nyx](https://ksf.surf/maps/surf_nyx?game=66t&mode=fw) and
[Reprise](https://ksf.surf/maps/surf_reprise?game=66t&mode=fw) pages, viewer metadata,
native recordings and BSP hashes are pinned in `NYX-REPRISE-REFERENCE.md` and
`scripts/fixtures/new-maps-sources.json`. Reprise is labelled according to KSF's
tier 2 classification; another server's tier 1 label was not substituted.

## Course behavior

- Both maps retain the existing float32 15 ms movement profile, with their
  independently evidenced 4000 component limits. Surf acceleration and collision
  geometry were not adjusted to make command routes work.
- Nyx retains the actual VPhysics curved ramps, full-resolution displacement
  terrain, start/end trigger brushes and main-route fail volumes. Its authored
  no-jump region suppresses jumping and scales movement time by .9999, using the
  existing map-effect implementation.
- Nyx has no authored main checkpoint triggers. Its two local gates span real
  course corridors and are placed from independent KSF bookmarks. Their exact
  private KSF boundaries remain unknown. Bonus-climb checkpoints are not mistaken
  for main-course checkpoints.
- Reprise retains all three authored checkpoint brushes, its start and finish,
  and both landmark teleports. A landmark translates the player's offset rather
  than snapping everyone to one point. It retains view angles and world velocity.
  Both actual native portal transitions pass the predeclared .002 unit/.002 u/s
  comparison, with exact positions and view angles. Timer sweeps never include
  the line connecting separate rooms.
- Bonuses, bonus timer boards, interactive secret sequences and combat mechanics
  are outside these main-route imports. Authored static geometry remains present.

## Nyx spawn policy and precision limit

The authored `map_start` position is `(14120,-8248,2216)`. Its deck is at Z2072,
and the native recording begins grounded at Z2072.03125. The local canonical
spawn uses the authored X/Y and that grounded deck height, with authored yaw270.
It begins stationary inside the original start zone, without a launch or boost.

An idle drop from the authored airborne height exposed an existing numerical
edge case: the double-precision sweep endpoint was just above the floor, then
stored float32 position rounded onto it; the next tick reported all-solid.
Settling the spawn on its actual deck makes spawning/restarts reliable. It does
not resolve that general trace-rounding limitation. Shared collision precision
was not silently changed, nor were old leaderboard records reinterpreted.

## Artwork, performance and provenance

Original materials, UVs, props, ramps, lightmaps, opaque tool surfaces and world
sky depth are preserved through the importer. Menu previews are real rendered
views. Original GPU-compressed textures are used where supported, with decoded
fallbacks and bounded cached asset packs. Only the selected map is loaded.

Reprise contains zero texture dimensions in some BSP metadata; normalization now
uses dimensions read from its actual VTF files. Nyx has two non-solid decorative
props with invalid skin indices: an explicit, documented skin-0 fallback retains
their meshes. Native equivalence of that fallback is not established. See
`NYX-REPRISE-VISUALS.md` for source checks, assets, unsupported material effects,
performance evidence and screenshots.

Nyx's author submission lists CC BY-NC-ND 4.0. Imported maps and assets retain
their authors' rights; local conversion is not a claim of permission to publicly
redistribute adapted assets. No deployment was performed for this request.

## Validation and remaining differences

Final local validation passed:

- Production build, TypeScript checks, 359 automated JavaScript/TypeScript tests
  and 10 Python visual-import regression tests.
- Complete canonical-spawn routes using ordinary tick commands: Nyx 3480 commands,
  40.548546 seconds and both checkpoints; Reprise 3877 commands, 55.555266 seconds
  and all three checkpoints. Both are accepted by server replay verification.
- Every route produces identical tick states and timing at 30, 60, 144 and
  240 FPS render schedules.
- Actual production-browser playback matches the headless final states, times
  and checkpoint splits exactly. Pointer Lock, keyboard movement, restart,
  finish screens and the nine-map menu passed; no browser errors were reported.
  Menu layouts were checked at 1440, 1280 and 390 pixels. Cloud transport was
  disabled during these checks, so no test times were posted to live boards.
- Both GPU-compressed and decoded texture paths passed source-asset checks and
  animated rendering tests. Repeated map switching returned to the same GPU
  resource counts. See the visual report for measured downloads and performance;
  local frame rates are not a guarantee for other hardware.
- An independent final review found no blocker in map profiles, landmark
  handling, ranked verification, source identities or documented fidelity gaps.

Machine-readable browser results are in
`fixtures/browser-new-map-results-nyx-reprise.json`; command and render-schedule
results are in `fixtures/new-map-command-validation-nyx-reprise.json`.

Reproduction commands:

```sh
python scripts/download_new_maps.py
python scripts/import_new_maps.py nyx --game-dir "PATH/Counter-Strike Source"
python scripts/import_new_maps.py reprise --game-dir "PATH/Counter-Strike Source"
npx tsx scripts/validate-nyx-reprise-reference.ts
npx tsx scripts/validate-new-maps.ts nyx reprise
npm test
npm run build
npx tsx scripts/browser-new-map-qa.ts nyx reprise
```

The independent native report distinguishes command-only playability from exact
native trajectory comparison. Known differences include some ramp-contact
precision and Nyx air-uncrouch command cropping; tolerances were not widened to
hide them. Complete-route commands use ordinary inputs, not recorded position
or velocity injection. Native map/server timer boundaries can differ from the
local imported timer geometry.

The optional landmark extension has been reviewed against the seven existing
maps. Six original-map baseline routes and the prior four new-map route hashes
remain unchanged. See `fixtures/nyx-reprise-prior-map-compatibility.json` and the
explicit legacy board certificate. Live board IDs for the original three maps
are retained; new map identities use the actual current physics source hash.
