# teleport-position-ignored

> Talos next · Since 0.7

a tool's teleport (`POST /entity/{id}/teleport`, an editor drag during Play, a test harness) moved an entity at least 0.25 m, and two ticks later its own motion started back where it was (or more than half the jump from where it was put) while a behaviour wrote its position: that behaviour keeps the position in its own variables (a module-level `let`, a `ctx.state` copy) and wrote it over the move; said once per entity per run, with the writing behaviour as the `module` (native only: the web runtime does not attribute writes yet)

| | |
|---|---|
| Severity | `warning` |

## Meaning

a tool's teleport (`POST /entity/{id}/teleport`, an editor drag during Play, a test harness) moved an entity at least 0.25 m, and two ticks later its own motion started back where it was (or more than half the jump from where it was put) while a behaviour wrote its position: that behaviour keeps the position in its own variables (a module-level `let`, a `ctx.state` copy) and wrote it over the move; said once per entity per run, with the writing behaviour as the `module` (native only: the web runtime does not attribute writes yet)

## Fix

keep the position on the entity (read `ctx.entity.position` back each tick) or in `ctx.state`, and adopt the `teleported` event's `position` in `onEvent`; module-level state is invisible to snapshots, hot reload and teleports. The critic's `behavior-position-ignores-teleport` names the module before it runs
