# Demise, Kitsune, Aircontrol and Lux

Added locally on 5 October 2026. These are conversions of the original pinned CSS BSPs, with their geometry, textures, props and baked lighting. They are not approximations built from video or CS2 ports. All use the existing independent CSS movement simulation and float32 0.015-second interval.

| Map | Author | Main course | Component velocity limit | BSP SHA-1 |
| --- | --- | --- | --- | --- |
| surf_demise | elly | Linear, 2 checkpoints | 5000 | 15b16c315649d25420f25517e47454497f795b0c |
| surf_kitsune | Arblarg | 9 stages | 3500 | 41ff082a485d5b4a306589205187bc730ca4b2ac |
| surf_aircontrol_ksf | SnoopSh | Linear, 5 checkpoints | 10000 | 3c3b754ffb0f02b3d4a1506c8ffebdca5d18e902 |
| surf_lux | SSStormy | Linear, 3 checkpoints | 3500 | 54745509ca87f2616311a0b29e4774e80b566067 |

Primary course evidence: [Demise](https://ksf.surf/maps/surf_demise?game=66t&mode=fw), [Kitsune](https://ksf.surf/maps/surf_kitsune?game=66t&mode=fw), [Aircontrol](https://ksf.surf/maps/surf_aircontrol_ksf?game=66t&mode=fw), [Lux](https://ksf.surf/maps/surf_lux?game=66t&mode=fw). Pinned downloads come from the [KSF/OuiSURF mirror index](https://main.fastdl.me/maps_ksfthings.html). See `NEW-MAP-TELEMETRY.md` for exact replay URLs, players, dates and hashes.

Demise's 5000 override appears in the BSP and KSF viewer metadata. Aircontrol's viewer reports 10000 and its native samples exceed 3500. Kitsune/Lux viewer value 0 means unspecified, not zero; their repeated exact 3500 component plateaus support the default. No total-vector clamp was introduced.

## Map-specific behavior

**Kitsune:** red, orange, yellow, green, teal, blue, purple, pink, white. Public KSF samples directly show different spawn positions from the BSP destinations, zeroed horizontal velocity at stage arrival, and a one-tick handoff. The browser reproduces that observed handoff and stage spawns; it holds the view at the exit instead of rendering the recording's temporary `(0,0,n*1000)` coordinates. The whole-run timer includes later stage preparation. Failure volumes return to the corresponding stage with the timer still running. That convenient failure policy is not independently established as exact KSF failure semantics. R restarts the whole course; individual stage selection is explicitly practice-only. Stage exits use the documented local 325/350 start cap; exact private KSF rules remain unavailable.

**Lux:** both authored internal portals preserve world-space momentum, replace view with the destination angle, and preserve the crouched hull without a Z offset. Native CSS placement probes confirm position/velocity for standing and crouched players. Timer checks consider only actual swept movement, never the line connecting portal locations.

**Aircontrol:** only main-route filter semantics are enabled. The overlapping bonus speed modifier is not applied to the main route. Its canonical spawn is the reviewed start-deck destination used for local play. The authored finish triggers approximately 13 ticks after the reference KSF finish bookmark, so local times must not be presented as exact KSF times.

**Demise:** original brush ramps, displacement terrain and actual prop PHY collision are imported. Props without a native collision file are explicitly reported, never assigned invented collision. Native CSS confirms the version-49 tree models do load; their initial poses/skins/scales are rendered. Local checkpoints follow course apertures and independent replay landmarks. Bonus and secret modes are not offered.

## Playability evidence

Every route below starts at the unchanged shipped canonical spawn with zero velocity, supplies only legal per-tick movement/view commands, crosses every required checkpoint in order, and is accepted by the same server verifier used for online records. Offline planners are not live steering assistance and these automated witnesses are not human leaderboard records.

| Map | Commands including preparation | Local finish time |
| --- | ---: | ---: |
| Demise | 3244 | 37.173847 s |
| Kitsune | 6333 | 91.940469 s |
| Aircontrol | 3312 | 35.686688 s |
| Lux | 2827 | 31.267094 s |

`fixtures/new-map-command-validation.json` records exact per-tick agreement in position, velocity, contacts, events and time at 30, 60, 144 and 240 render FPS. `public/replays/` contains the playable Watch routes. Command-only approaches precede the recorded launch where necessary; start preparation is excluded by the start trigger, not subtracted afterward.

Aircontrol's original 2534 isolated native movement steps have maximum position error 0.001465 units and velocity error 0.000881 u/s, within the predeclared 0.002 tolerances. This does not establish whole-map parity: continuous errors accumulate, native contact flags are absent, and timer zones differ. Demise's stationary alternate route completes with small but nonzero contact/float differences. Kitsune requires one reconstructed half-strength strafe input because public button bits omit command magnitude. Lux's native line hits an authored reset boundary in this BSP; a bounded, ordinary yaw adjustment clears it. The reset hull was not shrunk to force agreement.

## Release checks

`npm test` passes all 343 tests, including imported geometry, independent native movement samples, thin portals, ordered stages, practice/replay restoration, unchanged legacy identities, and texture delivery. The three existing maps' six complete legacy/ranked command routes also match committed baseline code exactly across 20,556 ticks. Their previous leaderboard identities remain intact through an explicit, fail-closed compatibility certificate; all catalogs still publish the true current simulation source hash.

The production preview also completed every full Watch route in an actual Edge browser. Each final player state, elapsed time and split array exactly matched the independently run headless fixture. Checks included real Pointer Lock, keyboard movement/restart, pause, seven-map switching, all nine Kitsune practice choices, finish screens that do not save replay records, and menu layout at 1440, 1280 and 390 pixels wide. No browser console errors were recorded. Full-game samples held roughly 360 FPS on this machine; that is not a guarantee for other hardware. Results are retained in `fixtures/browser-new-map-results.json`, with screenshots in `docs/screenshots/new-maps/`.

Original GPU texture compression is retained on supported hardware, with a decoded fallback. Both paths have been rendered in an actual browser; unsupported compression was also exercised by denying the WebGL extension queries. Demise's compressed texture subset needs 84.1% less texture payload than equivalent decoded RGBA mipmaps, and its packed native visual download is 20.5% smaller. These are asset-derived savings, not measurements of total GPU memory. Fallback texture uploads happen while preparing the map to avoid first-visibility stalls during a run. Per-map transfer sizes and measured rendering limits are in `NEW-MAP-VISUALS.md`.

## Kitsune review following player feedback

The first visual export incorrectly omitted `tools/toolsblack`, a real opaque material used by 2,349 authored faces. Command-route completion did not detect those missing visible walls. A second leak through an authored sky surface also required world-depth occlusion. These are rendering corrections using the original BSP faces; they do not add collision or hide stages with scripted rules. Visual regressions now check the source flags/material and stage separation. See `NEW-MAP-VISUALS.md` for the exact source-ray evidence and validation.

After rebuilding, all 343 Node tests and three source-surface regressions passed. Kitsune's full 6,333-command route was rerun in the production browser: final state, all eight splits and 91.940469-second finish remained identical to the headless command simulation. All nine practice spawns, Pointer Lock, keyboard restart and finish flow passed without browser errors. The separate visual negative control reduced the S2 leak region from 959 white S9 pixels to zero. The gameplay report is `fixtures/browser-new-map-results-kitsune.json`; stage screenshots are in `docs/screenshots/new-maps/kitsune-stage-*.png`. These checks establish the reported visibility fix and unchanged command-route behavior, not universal native CSS parity.

Portal momentum was rechecked against three independently recorded KSF runners, covering 24 transfers. Every stored stage arrival has zero horizontal velocity. The stock CSS authored portal instead preserves momentum in the controlled native probe. The browser retains the reviewed KSF recording profile; the files do not prove which private server or exporter component causes that difference, or establish the current live configuration. Exact samples, public links and the bounded newer-record search are in `KITSUNE-TELEPORT-EVIDENCE.md`.

## Remaining fidelity gaps

- This is not certified exact CSS/KSF equivalence. Private KSF plugins, start/stage zone bounds, historical server/map modifications and some input/contact fields are unavailable.
- Timer boxes and full failure/recovery policies do not exactly reproduce all KSF server rules. Local records belong to their own versioned boards.
- Geometry contacts still expose small numerical discrepancies under strict native comparison. `fixtures/*-new-map-probe.json` retains failures; those limits were not widened after testing.
- Main routes are supported. Filter-driven secret/bonus entity I/O, general dynamic map scripting, animated props and Source's complete water/refraction/HDR pipeline are not emulated.
- Dynamic props with no PHY resource and Demise's missing authored water-underside material remain explicit resource limitations. See the visual and entity review reports.
- Browser performance depends on GPU and resolution; sustained browser measurements and texture-memory work are separate from headless movement proof.

Further evidence: `NEW-MAP-ENTITY-REVIEW.md`, `NATIVE-CSS-TELEPORT-PROBE.md`, `NEW-MAP-VISUALS.md`, and the reproducible workflow in `MAP-IMPORT.md`. Existing UI/input work remains intact. No production deployment is part of this local review pass.
