Status, episode results, and rejection details returned by the
Evaluation Client.
These protobuf messages support attribute access, such as status.state.
Repeated fields are sequences: iterate over status.episodes or use
len(status.episodes). Enum fields contain integer values; compare them
with the named constants in pb.
Optional fields support message.HasField("field_name"). For mutually
exclusive fields, message.WhichOneof("group_name") identifies the active
field. A false boolean or index zero can be a present answer; testing the
field's truthiness does not check presence.
Latest job snapshot reported by a station and cached by the relay.
Poll get_status() again for updates. A cached snapshot does not establish
that the station is still connected.
Field
Value
station_id
str. ID of the station that produced this update.
state
str. Job state: CREATED (created), WAITING_POLICY (awaiting a policy connection), RUNNING (operator prompts and episode execution), FINALIZING (finishing), SUCCEEDED (completed normally), FAILED (execution failed), or CANCELLED (operator stopped or aborted). SUCCEEDED does not mean every episode passed the task; inspect each episode's scored and success fields.
episodes_total
int. Number of episodes requested for this job.
episodes
Sequence of pb.EpisodeResult. Finished episodes in execution order. The running episode is not included; len(status.episodes) counts finished episodes, including unscored ones. An episode a station operator took over and then discarded is left out; its task runs again as a new episode.
updated_unix_ms
int. When the station produced this update, in milliseconds since the Unix epoch. This is not the time of the poll.
message
str. Progress detail or terminal reason. May be empty.
One finished episode, with the score sheet as the operator answered it.
Field
Value
episode_id
str. Station-assigned episode ID, such as ep_0000.
end_condition
str. Why execution ended: timeout (rollout budget elapsed), policy_completed (the policy raised EndEpisode), lease_lost (worker lost control permission), authority_lost (a higher-priority controller or operator held the arms), safety_stop (the station's safety envelope stopped the arms), or start_pose_unreached (arms did not settle; no rollout ran).
scored
bool. Whether the operator submitted a score sheet. When false, items is empty and success and score are not meaningful.
success
bool. Whether the success question's answer satisfies the task. Check scored first.
score
float. Points earned divided by the sheet's maximum, between 0.0 and 1.0; zero if no item carries weight. Check scored first.
items
Sequence of pb.ScoredItem. The whole sheet, success item first, each item with its answer.
task
pb.Task. The exact instruction, layout, parameters and scoring used for this episode.
taken_over
bool. Whether a station operator took the rollout over for part of it (see Policy.resume); its rollout time stood still meanwhile. Its score is not the policy's alone: the station leaves it out of the job's success rate and mean score.
end_detail
str. What ended it, in the station's words: for safety_stop, every check that stopped the arms, such as "right: joint 4 reads +3.4 N*m"; empty when end_condition says it all.