Zero-trust QC · hard rules + AI filter + 3-layer human review
Every capture crosses 15 machine-checkable hard rules, an AI filter, and up to three human review layers before it ships. Every fix keeps the provenance trail intact, and every episode leaves a Rerun scene the buyer can open.
One pipeline · five phases · every stage diffable
From factory floor to LeRobot v2 in ≤48h. Every phase leaves a machine-readable trace so any downstream claim can be verified.
15 machine-checkable rules · every capture · zero human cost
Every rule maps to a real failure mode we've caught in the field. If any fires, the capture routes into human review with the exact reason attached.
Camera intrinsics + trajectory sanity — every capture's K matches what the SLAM pipeline expects, no per-clip drift.
- 01Camera intrinsics agreementHand-camera and object-camera intrinsics must agree within tolerance; large drift means SLAM diverged on one hand.gate · fx err < 15%→fx_hand=594.3 · fx_object=642.0 · err=8.0%
- 02Camera trajectory sanitySLAM rotation matrix deviation from identity — bounds catch SLAM divergence (which cascades into 3D kpts).gate · ‖R‖ dev < bound→max_dev=2.83
Frame timing + object continuity across the episode — flags timing drift, tracklet ID thrashing.
- 01Frame count alignmentAuto-label frame count must match raw video frame count. Mismatch means a stage silently dropped frames.gate · npz == video→npz=271 · video=271
- 02Object tracklet continuityFraction of object-detected frames with a stable track_id. Below floor, segmenter is thrashing between labels.gate · > 70% assigned→266/266 · 100%
Detector coverage across hands, body, filter pass, dense-body — flags silent model failures before they ship.
- 01Hand detection rateBelow floor, hand tracker collapsed and interpolation would drift — capture escalated to Label Studio for human kpt.gate · > 10% per hand→L=85% · R=68%
- 02Filter pass ratePost-filter labels count vs. raw detections. Too low means over-aggressive smoothing threw away real signal.gate · > 40% (no over-filter)→labels=496 · det=414 · rate=120%
- 03Body pose detection rateFraction of frames with a full body pose. Feeds retargeting; below floor the operator is off-camera too long.gate · > 40%→191/271 · 70.5%
- 04Body dense-kpt rateSapiens 308-kpt coverage. Includes mean confidence so a low-conf pass gets flagged before ship.gate · > 60% · conf→271/271 · 100% · conf=0.57
Keypoint outlier %, 3D dual-frame agreement, world-scale ‖t‖ in industrial workspace bounds.
- 01Keypoint outlier percentageFrames whose keypoints jump outside the physically plausible envelope get flagged and dropped from downstream.gate · < 5%→1/271 = 0.4%
- 023D keypoints · dual frameEvery hand kpt must exist in both world and camera frames — enables both fixed-scene and moving-camera policies.gate · world && cam present→world=true · cam=true
- 03Object world-scale sanityObject position in world coordinates must land within industrial workspace bounds; catches metric-depth failure.gate · 0.1 ≤ ‖t‖ ≤ 5m→‖t‖_mean = 1.45m
Ontology mapping, action-segment count, grasp density — the meaning of the frames, not the pixels.
- 01Object class mapping rateFraction of tracked objects that map to the canonical ontology. Below floor, ontology needs an extension entry.gate · > 70%→266/266 = 100%
- 02Action segment countAt least one verb-noun segment per episode. Zero means VLM refused or the clip was truly empty.gate · ≥ 1→5 segs · source=vlm
- 03Grasp event densityDerived from hand + object overlap. Low density on a manipulation clip means one of hand-track or object-track failed.gate · > 0.05 / frame→110 events / 271 frames · 40.6
Manifest completeness — every field maps to model + version + git SHA. Non-negotiable.
- 01Schema + provenance trailEvery field must record the model + version + git SHA that produced it. Non-negotiable — anchors the diffability contract.gate · model + version + git_sha→provenance · git_sha=1b0cce1
AI filter · what the hard rules can't reason about
Where the hard-rules gate is thresholds, the AI filter is judgment: confidence-weighted smoothing, cross-modal consistency (does the mask agree with the depth?), and out-of-distribution detection.
Per-frame kpt confidence dips are smoothed if temporally isolated. Sustained dips escalate to Label Studio.
The segmenter mask and the depth pointmap must agree on the object envelope within a tolerance — catches SAM-vs-object mismatch (iron_T02 flag).
Novel objects flagged with an ontology_missing tag. Not a reject — a signal to add an ontology entry before ship.
Label Studio · humans on the last mile, not the first
Only PARTIAL/FAIL captures reach Label Studio, pre-populated with auto-label output. Annotators correct kpt drift, adjust masks, override verb-noun — never annotate from a blank slate. Every correction lands as a labeled diff back into the training loop.
Human box → AI predict → Human finetune → Ship
Humans anchor the task and finetune the edges. The pipeline propagates predictions across every frame in between. Under 10% of frames touch a human directly.
Reviewer draws initial bounding box + verb-noun on 1 keyframe per capture.
Auto-label pipeline pre-fills 21-kpt hand + 308-kpt body + object mask across all 273 frames.
Annotator corrects drift, adjusts masks, overrides verb-noun. Every diff writes to the manifest.
Reviewer signs off. Hard rules re-run. LeRobot v2 parquet + Rerun scene shipped.
Pre-populated annotators are 5.7× faster than from-blank
Every capture arrives in Label Studio with the pipeline output already drawn on the frame. Annotators correct — they don't create. That's how a 273-frame capture ships in ≤48h.
- #1247manual sample
- #1248kpt_outlier · L_wrist
- #1249hand_detect_rate · L=8%
- #1250class_mapping
- #1251action_seg
- · wristdrift 2px
- · middle tipdrift 3px
- · index pipdrift 1px
- · thumb tipdrift 2px
Reviewers land on a filled canvas, not an empty task
Auto-label output (MANO 21-kpt · Sapiens 308-kpt · SAM3 mask · MoGe depth · verb-noun) is pushed as pre-annotations. Reviewer corrects, never draws from scratch. Every correction lands as a labeled diff back into the training loop.
Reviewer sign-off + escalation dashboard
A second annotator reviews every correction. Accept, reject, flag. Systemic failures (segmenter locked wrong object, SLAM divergence across multiple caps) escalate to engineering and feed the auto-label training loop.

- 01Auto-label produces the manifest + rerun.rrdEight models run on the raw capture
- 0215 hard rules run · reject or PASS/PARTIALAuto-reject removes obvious junk
- 03PARTIAL/FAIL_LABEL routed to Label StudioOnly what needs a human touches a human
- 04Reviewer signs off · updates the manifestEvery fix keeps the provenance trail
- 05Re-run hard rules · PASS shipsZero-trust · a passing rule set is ship-ready
Every field records the model that produced it
The manifest is not decorative — downstream diffs, model rollouts, and root-cause reports all read this trail. Any claim we make is diffable.
Every ship-ready capture ships with its Rerun scene
No screenshots, no cherry-picked metrics — just the raw multi-track scene. Open it in the same viewer our engineers use. Any regression, any claim, any anomaly is scrubbable by the buyer, not just by us.

object masks + pose · SLAM trajectory · action_segments
- camera/rgbvideo
- camera/depthvideo
- camera/trajectoryline3d
- hand/left · MANO 21-kptpoints2d
- hand/right · MANO 21-kptpoints2d
- body/dense · 308-kptpoints2d
- object/mask · track_idmask
- object/pose · 6-DoFtransform
- action_segmentslog


0 → 92% ship-ready after QC
Auto-label + hard rules + Label Studio + human review — the compound effect on ship-rate.
Ask for a sample QC report on any capture
We ship a full summary.json + .rrd with every episode. Pick a task, and we'll walk you through the hard rules on a real capture.


