# Derpis and Prelude

Integrated locally for the next release, alongside Tendies. Summer and Forbidden Ways are already live in both multiplayer regions. These two additions are not yet registered or advertised by the production rooms.

## Pinned sources

| Map | Author | Course | Original CSS BSP SHA-1 |
| --- | --- | --- | --- |
| `surf_derpis_ksf` | felix | Tier 1, six stages | `9732ac6e2fd3659e45c135083df713b7158a36af` |
| `surf_prelude_fix` | nappa | Tier 1, linear, three checkpoints | `23c97af4b0bf7167210b211e182e89c4ae37116a` |

Source URLs and expected byte lengths are in `scripts/fixtures/new-maps-sources.json`. The CSS66t forward/main-course references and author/course metadata are captured from [Derpis](https://ksf.surf/maps/surf_derpis_ksf?game=66t&mode=fw) and [Prelude](https://ksf.surf/maps/surf_prelude_fix?game=66t&mode=fw). The Prelude revision is the CSS `fix`, not the similarly named CSGO conversion. Hash-pinned recordings, captured pages and independent decoded samples are retained in `fixtures/easy-three-source-metadata.json` and the per-map telemetry files. Original authors retain their rights; conversion does not assert additional redistribution permission.

## Geometry and gameplay

Derpis imports 3,902 collision brushes and the original six stage starts, five checkpoint arrival convexes and finish convex. Original intermediate rooms and momentum are retained for the early stage transitions. Two independent 2024 KSF recordings show the stage-five/six reset handoff; an older 2020 recording differs. The two later handoffs therefore use the existing, explicit KSF stage policy. That rule is separate from authored Source entity behavior. Evidence: `fixtures/derpis-stage-transition-evidence.json`.

The complete Derpis witness starts at the authored spawn. Nineteen ordinary idle commands reach the first recorded falling pose. It then completes 5,024 commands in **72.411336 seconds**, through all five checkpoints, without a fall or stage retry. Input planning includes eight inferred v2 analog inputs, two small yaw-adjustment windows, and ordinary delays/crouch inputs through the stage transitions. The stage-five adjustment avoids a thin reset brush crossed by the runtime sweep between two native end poses. The brush remains unchanged. No position, velocity, collision or timer state is injected. This is an automated possibility witness, not a human run or an exact reproduction of the native record.

Prelude imports 2,765 collision brushes, including 33 solid props. Its five original timer models (60–64) provide the start, three checkpoints and finish; the unnamed models are selected explicitly. Original active spawn-return volumes are retained. The two legacy jail triggers with no player-touch flag remain metadata, not executable reset zones. The authored spawn is rounded to Source float32; one ordinary falling tick reaches the reference's first pose. Two v2 analog inputs are inferred for the complete witness, which needs no yaw optimization. It completes **3,092 commands / 42.793383 seconds** through all three checkpoints. Its continuous trajectory stays within approximately 0.012 position units of the reference, while timing uses the imported hulls rather than private KSF zone data.

Both routes pass the production server verifier and exact state, contact, event and timer comparisons under 30, 60, 144 and 240 FPS schedules. All seven authored practice starts settle on legal ground and remain explicitly unranked. The independent isolated native comparisons deliberately exclude inferred witness commands: Derpis passes 4,947/4,986 comparisons, with 39 retained discrepancies; Prelude passes 3,088/3,091, with three retained discrepancies, at 0.002 position/velocity tolerances. These results do not establish universal CSS parity. See the native-reference and command-validation fixtures for the full differences.

## Original artwork and limits

Derpis retains 12,936 faces, 95 source images and baked lighting, with no missing-asset warnings. All 95 images and ten native compressed textures are checked against the source pixels/blocks. Twelve unedited browser views cover all six stages.

Prelude retains 10,984 faces, 42 static props, one dynamic prop in its initial pose, 82 images and baked lighting. Its source omits `models/props_lights/lights.vmt`, used by a decorative museum-light model, and that material is also absent from the installed CSS resource archives. The importer retains the model with its explicit untextured fallback and records the warning. No replacement texture or claim of complete native visual parity is made. Eight unedited browser views cover the course. Texture integrity and source-feature audits are in `fixtures/easy-three-visuals/`.

All 82 Prelude images and 27 native compressed textures match their source pixels/blocks. Both native and decoded texture paths pass browser rendering checks for all three additions. The final production-format build passed 513 application tests, 21 importer tests and TypeScript. Its real browser completed all three routes with exact final state and splits, no browser errors, working keyboard/Pointer Lock, restart, responsive menus, all six Derpis practice destinations and persisted map selection. Evidence: `fixtures/browser-new-map-results-easy-three-local.json`. Observed median playback was approximately 360 FPS on this machine; this is not a universal performance claim.

Supported shaders, first frames of animated textures, static prop poses and baked lightmaps do not reproduce all Source rendering or entity I/O. Bonus/secret rooms, legacy jail/team logic, delayed outputs and decorative interactions are not fully emulated. Main-course traversal and timing are the reviewed scope.

## Reproduction and release boundary

Use `scripts/import_new_maps.py`, `scripts/import_boreas_visuals.py`, and `scripts/easy_three_profiles.py` with the pinned BSPs and read-only CSS assets. `scripts/decode-easy-three-replays.ts` checks the retained original recording hashes. `plan-classic-five-routes.ts <slug> --canonical`, `validate-new-maps.ts`, and `tests/derpis-prelude.test.ts` check complete routes and legal starts. `browser-summer-forbidden-qa.ts` accepts both new slugs for the built-game checks.

The existing 17 released maps retain their geometry, configuration and board identities under the reviewed certificate in `fixtures/legacy-physics-compatibility.json`. These two imports required no further runtime physics change beyond the opt-in Tendies output support. A subsequent shared collision-reset repair is documented in `SUMMER-FORBIDDEN.md`; use `scripts/certify-reset-recovery.ts --check` for the current certificate. The earlier easy-three certificate remains historical evidence. A production release must coordinate board registration, the multiplayer room catalog, matching client/verifier physics and website promotion, then verify the served content and both live room catalogs.
