# Classic Surf validation and remaining gaps

Updated 2 October 2026. Three original CSS maps are available: Boreas, Utopia NJV and Mesa Fixed. The previous single-map report is retained as `VALIDATION-v2.md`; Northline remains a regression fixture and a source for the authored laboratory ramps.

## Current release

The final automated suite passes **162/162 tests**, with no failures or skipped tests. All three shipped default-profile command witnesses complete their entire course with authored resets active and no assists:

| Map | Commands | Local run time | Ordered checkpoints | 30/60/144/240 FPS |
|---|---:|---:|---:|---|
| Boreas |2758|39.495360 s|2|Every tick identical|
| Utopia NJV |3867|53.349069 s|3|Every tick identical|
| Mesa Fixed |3653|52.635008 s|3|Every tick identical|

Each starts stationary at a legal point on its start deck and is verified through the complete `GameSession`. No intermediate position/velocity edits, scripted boosts, skipped resets or relaxed collision bounds are used. Mesa also has a separately completed 3598-command alternate. The shipped route's development and scope are documented in `MESA-ROUTE-WITNESS.md`; the full deterministic report is `fixtures/classic-playability-results.json`.

Final production Edge checks against `http://localhost:4173` passed **35 checks, zero failures**: Boreas controls/game flows 17/17; classic selection, lab, graphics and audio 9/9; replay-rule restoration 3/3; all three complete browser replays and restarts 6/6. There were no console errors or warnings. One renderer-only marker inspection is explicitly omitted from the production suite because it imports development modules; it already passed separately at 15 native approach-camera views. No gameplay check was skipped. Reports are `fixtures/browser-boreas-results.json`, `browser-classic-results.json`, `browser-replay-state-results.json`, and `browser-classic-replay-results.json`.

Every served replay hash matched its validated source. The actual browser reached every finish with exactly the expected final state, splits and elapsed time, and Watch never wrote a PB. Live raw mouse events initially exposed assumptions in the browser test, not a runtime defect: the final mouse oracle uses a passive event ledger aligned to actual simulation commands, keeping its original 1e-6-degree tolerance. WASD is evaluated relative to the received view angles; manual wheel-jump tests wait for a sampled release before the next press. The initial failed report is retained for investigation. These browser tests establish event behavior, not physical input-to-photon latency or all-case CSS parity.

Simulation remains fixed at float32 0.015 seconds. Boreas movement and its saved command trajectory are unchanged by the renderer work. Prop batching, conservative visibility culling and shared buffers reduce average Boreas draw calls from 221.3 to 70.8. At DPR 1, three comparison views have zero differing pixels; mean CPU submission fell from .497 to .264 ms. Balanced rendering caps the drawing buffer at DPR 1 without changing FOV, input, physics or timing. These are measured rendering costs, not a promised FPS multiplier. See `RENDER-PERFORMANCE.md`.

The practice facility has eight stationary, untimed stations. Its command witness traverses both surf faces and the transfer: 232 first-ramp contacts, 137 second-ramp contacts, peak speed 1735.13 u/s. Separate checks exercise jumping, stairs, crouch clearance and collision. It renders in roughly 11–18 draws. See `LABORATORY.md`.

Browser checks cover procedural wind's gesture gate, pause/suspend lifecycle, environment, persistent volume/mute, map switching and resource disposal. Green start and gold finish markings project onto landing floors without changing timer geometry. Placement was inspected at 15 native route-camera views. Independent review fixed demonstration-profile leakage and a stale-rAF timestamp race; the dedicated Edge regression passes 3/3 checks with no console errors. See `INDEPENDENT-REVIEW.md`.

`tests/classic-playability.test.ts` and `scripts/validate-classics.ts` require legal stationary starts, normal commands, every checkpoint, a finish, and no resets or assists. Every tick's state, contacts and timer is compared at 30/60/144/240 FPS with zero tolerance and first-divergence diagnostics. Missing fixtures fail. These tests establish playability and deterministic scheduling, not independent native parity.

## Utopia and Mesa independent evidence

Native public KSF recordings, source URLs and hashes are in `fixtures/{utopia,mesa}-ksf-telemetry.json`. The movement-only comparison keeps the existing .002-unit / .002-u/s tolerances. It deliberately excludes reset/timing events because these KSF recordings cross several authored reset edges. It is not the playable demonstration or an all-systems completion test.

| Map / comparison | Steps | Max position error | Max velocity error | First divergent tick |
|---|---:|---:|---:|---:|
| Utopia isolated |3868|.004854|.088105|731|
| Utopia continuous |3868|.088736|.132074|380|
| Mesa isolated |3395|33.549978|2236.146946|521|
| Mesa continuous |3395|12.878937|244.532538|234|

Mesa's large isolated outlier is retained: recorded states around 521–523 begin slightly inside a downloaded compiled playerclip surface, producing an all-solid stop in a subsequent local step. That origin is approximately .05 units beyond the BSP plane. Continuous traversal passes this area but has several contact-timing differences. These errors are not declared parity or hidden by loosening tolerances. Native contact flags are unavailable, preventing a direct contact-state comparison. `scripts/classic-movement-probe.ts` regenerates these reports.

The new recordings support a 3500 u/s per-component velocity limit, exported as an explicit map profile override; Boreas retains 5000. Mesa's authored push uses Source base velocity. Fifteen native entry/inside/exit steps pass the strict tolerances, with maximum .001138 units and .000223 u/s error; see `MAP-PUSH.md`.

An isolated real CSS server (build 11003710) measured standing Z 0–62 and crouched 0–45 hulls and reproduced the disputed resets at supplied native-recorded points. The browser therefore retains authored reset geometry and full hulls. The KSF server/revision difference remains unresolved. These short native contact probes do not prove whole-run parity. See `NATIVE-CSS-PROBE.md` and `CLASSIC-MAPS.md`.

The following Boreas measurements remain the previously established independent baseline; earlier release counts below describe that baseline.

## Boreas independent native evidence

The public KSF CSS forward-style run by .x (23 November 2025, published 39.495121 s) supplies 2,960 recorded frames, including 2,758 movement steps from stationary start through finish. Comparison uses original BSP/PHY/displacement geometry, buttons from frame i, view angles from i+1, a reconstructed half-strength first keyboard press, the observed 350 u/s start clamp, the map speed modifier and the evidenced incline fix. No native build/plugin dump or contact flags are available.

Predeclared comparison tolerances remain **.002 units position / .002u/s velocity**. They were not widened after seeing results.

| Comparison | Steps | Maximum position error | Maximum velocity error | First tick outside tolerance |
|---|---:|---:|---:|---:|
| Ground acceleration and first crouch jump, equivalent flat geometry |65|0|.00003146|None|
| Selected native ballistic air transitions |1672|.00048828|.00088027|None|
| All isolated native steps on actual map |2758|.00690534|.00374460|334|
| Continuous native command reconstruction on actual map |2758|.03162542|.00614367|199|

The isolated comparison resets to each recorded starting position/velocity; it verifies local movement, not whole-run drift. The continuous comparison begins once at the legal stationary start-deck position and then uses commands and explicit server/map rules only. Its final position error is .01162444 units. Twenty-seven isolated steps exceed the strict tolerance. Full per-tick errors are retained in `fixtures/boreas-reference-validation.json`; near agreement is not declared exact parity. Native grounded/contact-state differences cannot be measured from this recording.

Regression fixtures explicitly cover the native curved seams, two BSP ramp departures, the shallow skin contact, and the neutral uphill landing plus manual follow-through. They caught and helped correct false epsilon contacts and the distinction between compiled brushes and VPhysics hulls. The public replay and sources are documented in `REVISION-VALIDATION.md`.

## Playability and determinism

Both profiles finish the actual two-checkpoint course using normal view/button commands:

- Reference-style run: approximately 39.495235 s.
- Requested auto-bhop / open-start run: approximately 39.495360 s.

Both touch 103 distinct solids, cross CP1 at tick 1231, CP2 at 2303, and finish at 2758, with no reset or invalid record. The requested run's initial approach is fitted offline by changing seven view angles; it does not edit state or velocity. Playback contains only recorded commands and has no steering controller. Both fixtures start stationary at a legitimate location on the original start platform, matching the independent recording rather than the center teleport destination. They are explicit fixture initial states, not mid-run teleports.

All **116 automated regression tests pass**, with no skipped tests. `tests/boreas-playability.test.ts` compares every state, contact and timer event for the full requested course at 30/60/144/240 FPS. Physics and timing remain identical. Separate tests cover actual teleport-destination spawning, convex trigger unions, high-speed checkpoint crossing, practice/restart behavior, jump/wheel semantics, focus cleanup and record versioning. Regression passes do not override the explicitly reported native comparison residuals above.

## Geometry and visuals

Collision comprises 178 compiled BSP brush solids, 148 original PHY convex instances, and 129,728 displacement triangles. The importer honors player hull flags and includes the map's original nonrectangular reset unions. Independent raw-PHY transform checks and native deck height support scale/orientation. BVH candidate membership/order is checked against a separate linear oracle.

Visual import contains 1,783 visible BSP faces, 1,125 displacements, 26 model types and 1,587 original props, with original material coordinates, textures, lightmaps, vertex lighting and cubemaps. `fixtures/boreas-asset-validation.json` checks finite/index-valid assets and exact shared displacement decoding. This is internal geometry integrity, not CSS pixel parity. See `BOREAS-VISUALS.md` for unsupported material/effect details.

## Browser verification

The final production integration run passed **17/17 checks**, with zero skipped checks, console errors, warnings or failed requests. It used installed Edge 154 with real Pointer Lock, keyboard, mouse and wheel events against `http://localhost:4173`. The game-state seam is read-only. Checks cover launch, spawn settling, movement/crouch, raw-count camera scaling, configurable wheel/key bindings, numeric sensitivity, persistence, auto-bhop/manual styles, focus/menu/restart, practice saves, map switching, completion, record protection and resizing. The complete command replay finished in 39.495359573 s with ordered splits of 16.594048415 and 32.681057494 s. Final results are recorded in `fixtures/browser-boreas-results.json`; inspected screenshots are in `docs/screenshots/boreas/`. This headless browser validation establishes event flow and functional behavior, not subjective human feel or physical input latency.

## Remaining fidelity gaps

1. Exact native CSS build and current KSF cvar/plugin manifest remain unknown. Global hold-jump auto-bhop and open prestarts are requested local rules, with separate records; they are not advertised as universal KSF normal-style rules.
2. Small native float/contact differences remain, as quantified above. VPhysics/displacement edge filtering, contact ordering and all arbitrary approach cases are not proven identical.
3. The authored .9999 no-jump modifier is modeled from hull overlap. Native telemetry suggests a small entry/I/O scheduling difference; it is reported rather than hidden by changing trigger bounds.
4. Native client-frame fractional keyboard commands, every partial-duck reversal/spam case, step-camera adjustment, and native client prediction are not fully reproduced. Pointer Lock counts also depend on browser/device support.
5. The local timer sweeps actual trigger geometry. Its checkpoint fractions differ slightly from KSF bookmark/display splits; exact KSF timer internals are unavailable. Local records are not KSF-comparable records.
6. Some Source material passes and map effects remain simplified: directional bumped lighting, reflection/refraction/water details, HDR, proxies, animation, particles, sounds and two unavailable stock textures. Actual traversal geometry and original assets are present.
7. Local native CSS testing now covers limited hull/trigger contact probes only. The user has provided positive subjective movement feedback, but there is no controlled experienced-player parity study or whole-route native harness. Reference recordings cannot establish all-case equivalence.

## Reproduce

`npm test` runs automated regressions. `npm run validate` regenerates both normal-command witnesses and the native comparison report. With a local preview running, `npm run test:browser` performs browser integration checks; set `SURF_QA_URL=http://localhost:4173` for production. Offline importer/visual checks are documented alongside their scripts. Map and physics versions namespace records and replays.
