# Reviewed player trigger outputs

The Rookie-five import adds reviewed delayed **targetname** outputs for Summit and filtered teleport selection for Summit/Whiteout. These outputs use simulation ticks, survive leaving their trigger, and clear on restart. Arbitrary delayed entity I/O remains unsupported. See `ROOKIE-FIVE.md` and the isolated native event-marker transcript for the 0.24-second fail-name delay. The historical scope and evidence below describe the original Tendies implementation.

Tendies adds opt-in support for immediate `!activator,AddOutput` changes to `targetname` and `basevelocity`, on `OnStartTouch` and `OnEndTouch`. The importer explicitly admits five original main-course triggers: models 1, 2, 5, 6 and 154. Their compiled convexes, values and filter definitions are retained. Bonus triggers and other entity I/O remain metadata.

The implementation in `src/game/map-push.ts` distinguishes geometric contacts from contacts accepted by the entry filter. Changing the player's name on entry does not cancel that accepted contact's exit output. Output assignments are applied after movement; pending base velocity is consumed before the following movement step using the existing Source-style base-velocity conversion. Values replace base velocity rather than continually accelerating the player. Restart clears this state; practice save/restore retains it.

Reference semantics were checked against Valve's [trigger implementation](https://github.com/ValveSoftware/source-sdk-2013/blob/b8cfb12c0e083a2ef5b2f9f9b50f3902fa034474/src/game/server/triggers.cpp) and [player command processing](https://github.com/ValveSoftware/source-sdk-2013/blob/b8cfb12c0e083a2ef5b2f9f9b50f3902fa034474/src/game/server/player_command.cpp). No implementation was copied.

The independent CSS66t Tendies record demonstrates the main launch at frame 204. The original 1337 X base-velocity assignment reproduces the next position and velocity within the unchanged 0.002-unit tolerances. `tests/map-player-outputs.test.ts` checks that sample, the filtered one-time launch, start rearming, vertical output, practice restore and restart. The full canonical route separately passes the server verifier.

This is a bounded implementation, not a general Source entity engine. Contact checks use completed movement poses. Fully skipped thin volumes, delayed outputs, arbitrary output ordering between overlapping triggers, arbitrary filter classes and bonus modes are not certified. The tested main launch is not skipped by the supported player hull and route. No exact private KSF plugin parity is asserted. The public v2 recording holds the duck bit across origin changes that require separate normal duck/unduck commands in the local witness.

All 17 maps deployed before this addition omit `playerOutputZones`, so the helper returns before touching state. `scripts/certify-easy-three-compatibility.ts` compares all 17 canonical routes plus six historical witnesses against the frozen deployed source, including state, contacts, timer and events on every tick. The certificate retains the true current physics hash while preserving prior board identities through hash-pinned evidence. This finite comparison and source review is not a proof for every possible input.
