A simulator can pause and wait for the agent. Reality cannot. AWP therefore defines two time models; a world declares which it supports, and a session runs in exactly one.
Lockstep
The world advances only when the agent calls world.tick. Submitting an action stages it; the next tick executes it and delivers the resulting observation. Perfect for turn-based games, deterministic simulation, and evaluation harnesses.
An agent that submits and then waits for completion without ticking waits forever: nothing advances until it asks. Normative sequence and a full wire trace: spec/loop/time-models.
Streaming
The world runs in wall-clock time. Observations are pushed with timestamps; actions are asynchronous intents that report progress while the world keeps moving. Robots only offer streaming; most simulators offer both.
Why this is the crux
An agent written only for lockstep will silently misbehave in streaming mode: its observations are stale by the time it acts. Streaming worlds stamp every frame with capture and send time and publish latency telemetry once a second; agents synchronize their clock to the session clock over the heartbeat, measure the staleness of every observation, and name the basis of every action so the world can refuse an intent built on old data.
Because both modes share identical manifests, schemas, and action lifecycles, the same agent code can train in lockstep against a simulator adapter and deploy in streaming against hardware — swapping only the session mode. That is the sim-to-real story. Normative details: spec/loop/time-models.