Koide pilot acceptance¶
calibrex camera-lidar benchmark-koide-pilot is the frozen acceptance boundary
for an external direct_visual_lidar_calibration candidate. It consumes either
the official native calib.json or a validated external-run artifact; it
does not run a Calibrex optimizer or fit the holdout.
The pilot binds the candidate and native output digests, KITTI input inventory,
Calibrex config, Koide readiness artifact, source/tool identity, command, and
execution environment in pilot.json. On the same deterministic
timestamp-ordered frame split it records train and untouched holdout:
- projection ratio;
- image edge alignment; and
- depth-edge alignment.
It also evaluates twelve mandatory signed controls (± roll, pitch, yaw, x, y, and z) without refitting. The candidate-to-dataset-reference SE(3) delta is recorded when a reference calibration is available.
The default holdout gates are deliberately non-zero (projection ratio ≥ 0.50,
edge and depth-edge alignment ≥ 0.20), and each known-bad perturbation must
change a holdout metric by at least 0.01. The external-run artifact must bind
the fitting input inventory and declare matching train/holdout ID digests. A
native calib.json import has no execution or isolation evidence by itself and
therefore can never be adopted.
For an external run, list the fitting camera/LiDAR files (and any calibration
inputs) explicitly in input_paths; binding the whole KITTI sequence directory
would include holdout files and is rejected as non-independent.
The train/holdout ID digest is SHA-256 over the sorted, newline-separated
canonical IDs (camera:<index>:lidar:<index>).
For the maintained commercial handoff, first validate
examples/official/koide_execution_lock.yaml and run
calibrex camera-lidar koide-handoff. The lock pins the official source/image,
uses initial_guess_manual, and excludes SuperGlue. Its base_image_digest
may remain null because the upstream Dockerfile publishes only a mutable base
tag. The final pinned image digest is sufficient to execute the maintained
workflow. A null base digest keeps source rebuilds non-reproducible and those
rebuilds remain blocked; never invent a base digest from the mutable tag.
calibrex camera-lidar benchmark-koide-pilot \
/path/to/2011_09_26_drive_0005_sync \
--candidate /path/to/calib.json \
--config examples/public_datasets/kitti_raw_2011_09_26_drive_0005/config.yaml \
--readiness artifacts/koide-readiness.yaml \
--output-dir outputs/koide-pilot \
--official-command docker run --rm --network none \
<immutable-koide-image> calibrate
The machine-readable status is one of PASS, WARN, FAIL,
INCONCLUSIVE, or BLOCKED. Only PASS with adoption_decision: ADOPT is
admissible. Missing/stale readiness or candidate artifacts, a failed native
parse, incomplete holdout evidence, or an unavailable official environment
cannot become an adoption decision; execution-manifest.yaml retains the
exact reason and command. Recording an --official-command is intent/provenance
only; the pilot never invokes Docker or Podman. execution.attempted is true
only when the supplied external-run artifact records an actual process attempt.
Autoware export is intentionally a separate gated operation:
calibrex camera-lidar export-koide-pilot outputs/koide-pilot/pilot.json \
--base-frame camera0 --output sensor_kit_calibration.yaml
It rejects every non-admissible pilot status. The general result exporter is not an assertion that an external Koide candidate has passed this pilot.
The small repository KITTI-shaped fixture and the A2D2 sample are plumbing and diagnostic data, not official Koide executions or claims. A2D2 is used only for the real-data readiness diagnostic; it is not a KITTI projection protocol and does not support an official Koide score. An official Koide-on-public-data result requires a user-supplied native output plus its immutable environment, actual execution evidence, and training-data isolation evidence.