action.submit params:
awp:action-submit
action_idis client-generated and unique per session. A resubmission with the sameaction_idand identicaltype,params,embodiment_id,preempt,deadline_ms,basis_ts_mono_ns, andvalid_until_nsMUST be idempotent: the world returns the action’s current state and does not execute it again. A resubmission with the sameaction_idbut different content MUST be rejected withAWP_ACTION_ID_CONFLICTand MUST NOT affect the original action. Concurrent duplicate submissions are serialized by the world: the first processed wins, later ones observe its state.[AWP-ACT-001]- Worlds MUST validate
paramsagainst the type’sparams_schemaand reject invalid submissions withAWP_PARAMS_INVALIDbefore any execution side effect.[AWP-ACT-002] - Submissions naming ungranted types or embodiments MUST be rejected with
AWP_FORBIDDEN.[AWP-ACT-003] deadline_msis measured from the world’s receipt of the submission and covers approval and queue waiting as well as execution. It is advisory in lockstep and binding in streaming: on expiry beforeexecutingthe world MUST reject the action with reasondeadline_exceeded; on expiry duringexecutingit MUST apply the type’s safe-abort behavior and fail the action with reasondeadline_exceeded.[AWP-ACT-004]- The
preemptfield MUST be one of the policies the type declares (see preemption).[AWP-ACT-005] - Worlds MUST retain the
action_idand terminal state of every action for at leastreconnect_window_msafter its terminal transition, and of every non-terminal action for the life of the session, so that idempotent resubmission and status pulls remain correct across reconnection.[AWP-ACT-006] - Basis and validity.
basis_ts_mono_nsis the capture time of the newest observation the intent relies on, copied from that frame’sts_mono_ns;valid_until_nsis the session-clock instant after which the intent MUST NOT begin executing, expressed through the agent’s clock offset (AWP-CLK-009). Both are OPTIONAL in Core and enforced by the world per AWP-SAF-013; the robotics profile requiresbasis_ts_mono_nson every submission (AWP-ROB-005).[AWP-ACT-007]
Trajectory chunks (informative idiom)
Policies that emit action chunks — timed sequences of setpoints executed at 10–50 Hz — map onto the lifecycle without any special machinery: a chunk is one action. Submittype: "follow_trajectory" with params.points as an array of timestamped setpoints and preempt: "replace" (or "blend"); when the policy emits its next chunk, the new submission replaces the unexecuted tail of the running one, and the replaced action terminates preempted per preemption. This yields exactly the receding-horizon behavior chunked policies expect, plus acceptance, progress, clamping, and audit that raw streaming never had.
For true high-rate servoing (100–1000 Hz setpoints), per-setpoint JSON-RPC submissions are inappropriate; setpoints stream over agent→world command channels, opened by a duration: "streaming" action.