# Native CSS trigger probe — 2 October 2026

An isolated, local Counter-Strike: Source dedicated server was used to investigate the remaining reset-trigger disagreement with public KSF replays. This is a direct, limited native-engine test. It is **not** a claim that the browser reproduces a complete native run exactly.

## Environment and isolation

- Installed executable: `C:/Program Files (x86)/Steam/steamapps/common/Counter-Strike Source/srcds_win64.exe`.
- Native `version`: build/server/network patch **11003710**, protocol **24**, server AppID **232330**.
- Startup reported `SV_ActivateServer: setting tickrate to 66.7`; this display is rounded and does not replace the independently established 0.015-second simulation interval.
- Test mod and writable files: `node_modules/.native-css-probe/cstrike` inside this project. Installed binaries and asset packs were mounted as read-only search paths. No installed configuration or map files were changed.
- Server used `-insecure -ip 127.0.0.1 -port 27025`, a local password, hidden window and no human client. Bots were used. There were no SourceMod, Metamod, KSF or other movement plugins.
- The probe loaded the same downloaded Mesa/Utopia BSP files used by the browser importer. Their provenance and hashes remain in the map import metadata.
- The server was stopped with its `quit` command after testing. The process was confirmed absent.

## Measured bounds

Built-in VScript `GetBoundingMins()` and `GetBoundingMaxs()` returned:

| State | Minimum, relative to feet | Maximum, relative to feet |
| --- | --- | --- |
| Standing | `(-16, -16, 0)` | `(16, 16, 62)` |
| Crouched | `(-16, -16, 0)` | `(16, 16, 45)` |

Crouched `GetCenter()` was feet plus 22.5 units vertically. The observed entity bounds do **not** support raising the crouched trigger hull's bottom by 9, 31 or 32 units. Those candidate changes were rejected.

## Native trigger outcomes

The bot had the measured 45-unit crouched bounds at each recorded test. `Teleport()` placed it at the specified origin with supplied velocity, without tracing a movement path from spawn. The script printed the immediate origin to confirm the placement; a following RCON read inspected the subsequent native result.

| Probe | Position supplied | Result |
| --- | --- | --- |
| Mesa recorded frame 401 | `(159.6418, 3327.4126, 9528.7471)` | Native authored reset returned the bot near `(0, -800, 102xx)` |
| Mesa approach from frame 400 | `(167.6383, 3314.57495, 9536.78809)`, velocity `(-566.536, 833.601, -530.092)` | Native authored reset returned the bot near spawn |
| Mesa recorded frame 2523 | `(477.62857, 6157.87744, 361.0672)` | Native authored reset returned the bot near spawn |
| Utopia recorded frame 798 | `(-1064.533813, -457.993744, 9986.02832)` | Native authored reset returned the bot to `(-13368.400391, -26.910000, 12795.299805)` |

The Mesa trigger output was independently logged as model `*1`. The position in that output is already the post-teleport position, so it is not used as pre-contact telemetry. Exact captured outputs are in `fixtures/native-css-mesa-trigger-probe.txt`, `fixtures/native-css-utopia-trigger-probe.txt` and `fixtures/native-css-trigger-events.txt`.

The reset convexes were separately checked using BSP model-to-brush membership and the BSP's decoded VPhysics model data. Their native-recorded points genuinely penetrate the trigger shapes; this is not just an AABB corner false positive. For example, Utopia frame 798 is approximately 19.45 units inside the nearest VPhysics plane. All original reset volumes therefore remain present. The browser does not shrink their hulls, remove selected resets or exempt replay positions to force a passing record.

## Interpretation and limits

The downloaded BSPs, stock installed CSS and the public KSF recordings disagree at these particular reset contacts. The direct native tests support retaining the authored reset geometry and the measured full crouched hull. They do not identify the cause of the KSF disagreement. A server-side map revision, entity modification or plugin behavior remains possible; no public KSF configuration establishing a specific explanation was found.

These are short contact probes, not a whole-route command replay in the native server. Repositioning can affect native contact state, and the subsequent inspection occurs several native ticks later. We also have not established that installed build 11003710 is exactly the build on which the KSF records were made. Those limitations prevent claiming native whole-route parity or declaring a specific KSF fix as fact.

## Reproduction

Use a locally installed, licensed CSS copy. Make a separate `cstrike` directory under the project; do not modify the installation. Its `gameinfo.txt` needs the installed `cstrike/bin` as `gamebin`, the installed CSS VPK as `game+mod`, and the installed HL2 packs as `game`. Put `mod+mod_write+default_write_path` and `game+game_write` on the local probe directory. Using only `game` for the CSS assets is insufficient: encrypted weapon data is read through the `MOD` search path. Add `cfg/valve.rc` containing `stuffcmds`, and local configuration with `sv_lan 1`, `sv_cheats 1`, a test RCON password and `bot_join_after_player 0`.

Launch the installed dedicated executable hidden with the isolated directory as `-game`, `-insecure -ip 127.0.0.1 -port 27025 +exec probe.cfg +map surf_mesa_fixed`. Add two bots, use `bot_stop 1` and `bot_crouch 1`, then run built-in VScript through local RCON:

```squirrel
p <- Entities.FindByClassname(null, "player");
printl(p.GetBoundingMins());
printl(p.GetBoundingMaxs());
p.Teleport(true, Vector(167.6383, 3314.57495, 9536.78809),
           false, QAngle(0, 0, 0),
           true, Vector(-566.536, 833.601, -530.092));
printl(p.GetOrigin());
```

Read `p.GetOrigin()` again after native movement has run. Put multiple Squirrel statements in a `.nut` file and invoke `script_execute`; unquoted console semicolons separate console commands rather than Squirrel statements. Repeat after a `changelevel surf_utopia_njv`, recreating the bots if needed. Shut down the isolated server when finished.
