Skip to content
Euler Docs

Readiness and certificate

Readiness is Euler’s judgement about whether a recording is fit to train on. It is a weighted blend of deterministic checks, renormalised over the checks that actually apply to your data, and every check below its threshold raises a named flag that travels with the episode’s readiness receipt. The certificate is the same measurements stated as rules for the whole project, with a verdict.

Nothing about it is a black box. Each check has a plain name, a reason it matters for training, the failure it causes downstream, a weight, a threshold, and the data kinds it can never apply to. The review screen shows each check’s measured value against its threshold.

The 55 checks

FamilyHow manyApplies toWhat it looks at
General16every kind, minus what the data cannot carrytimeline, control, sync, length, gripper, language, cameras, image quality, labels
Capture12first-person (egocentric) datahow the recording was made: framing, camera placement, idle time, lens, exposure, head motion, frames
Output27first-person datawhat Euler produced: the camera’s telemetry, its sync with the video, and the annotations; each one is a certificate rule

General checks

CheckWhat it asks
timestamp_gapIs there missing time between frames?
timeline_jitterDo frames arrive at a steady rate?
action_smoothnessIs the commanded motion physically plausible?
idle_segmentsIs there wasted time at the head and tail?
trajectory_completenessDoes each episode start settled and finish the task?
stream_syncDo the cameras and telemetry agree on when things happened?
episode_length_zAre there wildly odd-length episodes?
gripper_event_sanityDo gripper open and close events look real?
language_action_alignDoes the written task match what happens?
camera_dropoutDid every declared camera record?
image_integrityAre frames sharp, exposed and readable?
image_exposureAre images crushed to black or blown to white?
image_sharpnessIs any image markedly softer than the rest of the set?
image_contrastIs any image markedly flatter than the rest?
label_readinessDo the objects found survive their quality floors?
annotation_coverageDid the layers you asked for actually land?

camera_dropout passes only when every camera recorded: a declared camera that did not record is a defect, not a degree. For loose images, where no timeline exists, the image checks decide the score.

Capture checks (first-person data)

CheckWhat it asks
Hands in shotIs the work in frame, not at its edge?
Camera on the headAre there stretches recorded from a table or a shelf?
Working paceHow much dead time is there, and is the pace like the rest of the set?
Clear lensIs a strap, hair, fingertip or smudge parked in the frame?
Exposure stabilityAre there blown-out or crushed stretches, or pumping exposure?
Head motionAre there head turns too fast for the sensor?
Frame integrityAre frames dropped or duplicated?
Clip length consistencyIs this clip an odd length against the set?
Uninvolved objectsAre there tracked objects always present and never touched?
Near-duplicate clipsIs this clip a copy of one you already have?
Collection diversityHow much new is there per recorded hour? (report only)
Personal data presentAre faces, location or speech present? (a handling notice, never scored)

Each one stores where it happened: the review screen shows the stretches and the worst frames.

Output checks (first-person data)

GroupChecks
Timing and syncvideo frame rate; video timestamps in order; IMU sampling rate; IMU timestamps in order; longest IMU gap; IMU covering the whole episode; each video frame having an IMU sample beside it; the lag between motion in the picture and motion the gyro felt, and how strongly the two agree
Motiongyro and accelerometer noise above normal head motion; head turn speed and jolts (advisory); the camera’s gravity estimate agreeing with its accelerometer; orientation without jumps
Task and languagethe clip broken into named steps; steps covering the active timeline; actions covering it; actions short enough to be atomic; every span inside the clip and running forwards; a one-line caption present
Annotation coveragehands posed in most frames; no long stretch without a hand; objects outlined, not just boxed; tracks followed, not sampled; depth maps filled; the camera path covering the whole clip

Each output check measures one number with a unit (a rate in Hz, a gap in seconds, a coverage ratio) and is held to a pass bound and a review bound. The receipt shows the number, the bounds, and where most of your project sits. The task, language and coverage checks are fixable: a failure means re-running an annotation, not re-recording. Where a measurement can be placed in time (an IMU gap, an orientation jump, the longest stretch without a hand) the review screen shows the moment and a thumbnail.

What the general checks mean for training

The point of a check is the consequence of ignoring it.

Timeline continuity

A policy learns the rhythm of a task from the gaps between frames. Missing time teaches it that the world jumps. Downstream: jumpy rollouts and mistimed grasps at inference. Needs: per-frame timestamps.

Clock stability

Unstable frame timing quietly changes the effective control rate, so a model trained on it learns the wrong speed. Downstream: actions that fire early or late once deployed. Needs: per-frame timestamps.

Control smoothness

Erratic teleoperation is copied faithfully by behaviour cloning. Clean demonstrations are the cheapest quality win available. Downstream: shaky, unsafe motion in the learned policy. Needs: an action or state timeseries.

Dead time

Long idle stretches teach a model to wait, and they inflate training cost for frames that carry no task signal. Downstream: policies that hesitate before acting. Needs: an action or state timeseries.

Complete attempts

A truncated demonstration teaches the ending it never showed. Complete attempts are what a policy needs to imitate. Downstream: policies that abandon tasks near the end. Needs: an episodic commanded trajectory, which is why this check does not exist for egocentric, drive-log, aerial or vision-asset data.

Sensor alignment

If the camera and the arm disagree by even a few frames, the model learns to act on what it has not seen yet. Downstream: confident actions taken on stale observations. Needs: two or more timed streams.

Length consistency

Outlier-length episodes are usually a capture bug, not a rare skill, and they dominate batch statistics. Downstream: skewed training batches and unstable loss. Needs: more than one episode.

Gripper signal

The gripper channel is the highest-signal, lowest-dimension part of a manipulation demonstration. Noise here poisons grasping. Downstream: policies that open the gripper at the wrong moment. Needs: a gripper channel.

Instruction match

Vision-language-action models ground on the instruction. A mismatched task string teaches the wrong association directly. Downstream: models that follow instructions incorrectly. Needs: a task description.

Camera coverage

A missing view at training time becomes a missing view at inference time, and multi-view policies fail closed. Downstream: views the model expects but never receives. Needs: at least one camera.

Image quality

Blur, blowout and compression artefacts are learned as features. Vision encoders happily fit noise nobody wanted. Downstream: brittle perception that degrades on clean data. Needs: image or video frames.

Annotation coverage

A dataset is only as trainable as its labels are complete. This check reports what each enabled annotation layer actually produced. Downstream: silent gaps that surface as label noise in training. Needs: at least one annotation layer enabled.

Applicability

A check that a class of data cannot physically satisfy is removed from the blend before scoring, not scored as zero. An egocentric human clip has no commanded trajectory to complete and no gripper to be sane about; a drive log never settles the way a demonstration does; a state-only log has no cameras to drop; a loose image has no timeline at all.

The data kind is derived automatically from what the episode contains and decides which checks exist. The remaining weights are renormalised, so an episode is never penalised for a contract its class of data cannot have.

Two registries agree on this gate: the data-kind registry is the authority the scorer uses, and the check catalog carries the same information so the settings screen can explain the reason in plain language.

Reading and configuring readiness

curl -fsS -H "Authorization: Bearer $EULER_TOKEN" \
  "$EULER_BASE_URL/v1/projects/$PROJECT/readiness/settings"

For every check the response gives the catalog row plus what is in force for this project: enabled, the effective weight and threshold, whether it applies to this project’s episodes and the reason when it does not, and the applicable episode count. It also reports max_threshold_offset, the furthest a threshold may be moved.

Changing configuration needs the engineer role and is audited:

curl -fsS -X PUT -H "Authorization: Bearer $EULER_TOKEN" \
  -H "Content-Type: application/json" \
  "$EULER_BASE_URL/v1/projects/$PROJECT/readiness/settings" \
  -d '{
        "disabled": ["idle_segments"],
        "threshold_offsets": {"action_smoothness": -0.1},
        "weight_overrides": {"camera_dropout": 0.2},
        "certificate": true
      }'

Every field is optional; omitting one leaves it untouched and an empty value clears it back to the default. certificate: true seals a certificate with each run. For an output check the Readiness metrics tab shows the physical bar a threshold change produces (for example, the longest acceptable stretch without a hand, in seconds). Only differences from the defaults are stored, so a project that never opens the screen scores exactly as it did before the screen existed.

Thresholds are bounded on purpose. A threshold offset is clamped to ±0.3 and a weight override to the range 0 to 1. A team can tune a check when their domain legitimately disagrees with the default. A team cannot silently define a failure away, because a certificate that can be tuned to always pass would not mean anything.

Unknown check ids are rejected outright. Out-of-range values are clamped rather than rejected, so a stale stored setting can never break scoring.

The certificate

GET /v1/projects/{id}/certification/report (and report.html, the same thing as a page) is the project’s readiness certificate, also on the Readiness certificate tab in Datasets & export. For first-person data the policy is the 27 output checks as rules plus a few image-statistics rules. For every episode and rule it states the observed value, the unit, how it was measured, where the value and the bounds came from, and the status: pass, review, fail or not_assessable. Per rule it also summarises the project: the best, typical and worst episode and the band most episodes fall in.

The project verdict is certified, review_required, not_ready or not_assessable. Missing modalities reduce evidence coverage instead of becoming a zero or a pass. Your readiness settings flow into it: a moved threshold moves the rule’s review bound, and a check you turned off becomes an advisory row rather than vanishing, so the certificate always says where the bar was set. Certification policies are immutable and content-hashed: saving a changed policy creates a new version and earlier reports are kept.

How review routing follows the certificate

Each episode is routed to auto accept, needs review or reject from its score and its flags. Then the certificate gets a say: an automatic accept is held for review if any required certificate rule on the episode is in the review band or fails. So the review queue and the certificate never disagree. The certificate never rejects anything on its own, and human decisions are never changed.

Re-measuring readiness (Re-measure from stored data on the Readiness metrics tab, or POST /v1/projects/{id}/readiness/remeasure) re-routes in the same pass; Re-route review in Pipeline settings (POST /v1/projects/{id}/review/reroute) applies today’s rules without re-measuring. Neither uses a GPU or spends.

Next