simulo.OutputKind
Kind of a job-produced output — a checkpoint is NOT a trained model.
Checkpoints are resumable training state; trained models are standalone, deployable policy outputs. The platform never conflates the two.
Values are a stable wire ABI persisted in database rows (job_recordings .kind, job_artifacts.kind) and served by the /outputs union
projection: append-only, never renumber, rename, or reorder — the six
members up to EVALUATION_OUTPUT predate the typed-outputs contract
and every member added for the typed-outputs contract is appended after them.
class OutputKind(StrEnum)| Member | Value | Meaning |
|---|---|---|
MODEL_CHECKPOINT |
'model_checkpoint' |
Resumable training state (optimizer included) — for continuing training. The tier-0 output kind implied by a declared ResumableCheckpoint callback. |
TRAINED_MODEL |
'trained_model' |
A standalone, deployable policy output — for inference/playback. |
LOG |
'log' |
The job’s captured log stream. |
METRIC |
'metric' |
Structured training/evaluation metrics. |
REPLAY_OUTPUT |
'replay_output' |
A recording produced by a REPLAY run — reserved, no producer exists yet. Boundary with RECORDING (mechanical rule — classify by what the recorder was pointed at, never by file format; both are MCAPs): * the job’s own live simulation, stepped by this job and recorded as it executed → RECORDING; * a pre-existing recording consumed as input (ResourceKind.REPLAY_INPUT — the dormant replay-run design, ReplaySessionProtocol) and re-rendered/derived into a new recording → REPLAY_OUTPUT. No shipped code path produces replay runs today, so no existing row may ever be classified here: every job_recordings row written before kinds existed (kind NULL) is a RECORDING, and the read-time union projection maps legacy NULL to recording — never to replay_output. This value is used only when an actual replay-run producer stamps it explicitly. |
EVALUATION_OUTPUT |
'evaluation_output' |
Structured output of an evaluation run. |
RECORDING |
'recording' |
An MCAP recording captured live from THIS job’s own simulation as it executed — the policy flight recorder’s output, what simulo recordings lists and downloads (home table job_recordings; a legacy NULL kind row is exactly this). See REPLAY_OUTPUT for the mechanical boundary rule with replay-derived recordings, and ANOMALY_CAPTURE for the anomaly-triggered sibling. |
ANOMALY_CAPTURE |
'anomaly_capture' |
A bounded MCAP debug session captured when a DebugOnAnomaly monitor detected an anomaly — the tier-0 optional (0..N) output kind implied by declaring the callback; a healthy run captures nothing. Stored beside plain recordings in job_recordings and still listed by simulo recordings; this kind is the discriminator. Boundary with RECORDING: same recorder, same live-simulation source — what differs is the trigger (an anomaly’s evidence window vs. the run’s rollout capture). When the same file is both planned as an anomaly capture and sniffed as a recording it registers exactly once, as anomaly_capture — the plan’s kind wins. |
REPORT |
'report' |
A generated document summarizing the run for humans (e.g. an evaluation report as HTML/PDF/Markdown) — a byte stream at a path, unlike METRIC (structured values in the result dict). |
VIDEO |
'video' |
A rendered video file (e.g. an .mp4 rollout render). Boundary with RECORDING: a recording is structured MCAP telemetry a viewer replays; a video is a finished movie file, even when rendered from the same run. |
DATASET |
'dataset' |
A data collection produced by the job (generated trajectories, demonstrations, images…). Classifies an OUTPUT — the identically-named ResourceKind.DATASET classifies an input mount. |
FILE |
'file' |
A general produced file. This is the default kind used by simulo.save_output. After a successful job completes, the worker uploads eligible registrations to job_artifacts; persisted files are listed by the external /outputs projection and can be downloaded. Registration alone does not guarantee delivery on a failed run or when an upload is refused. |