Extended calibrex doctor from an environment check into an optional
dataset-readiness workflow with type inference, quality and degeneracy
diagnostics, compatible-workflow suggestions, a versioned
slac.doctor/v0.1 artifact, generation provenance, and validation support.
Added local and GitHub-hosted Calibration CI with calibrex ci, a composite
action, Step Summary rendering, enforced falsification and protocol gates,
digest-bound inputs and custom policies, provenance-bound SVGs, and the
versioned slac.calibration_ci/v0.1 decision artifact.
Added the schema-versioned slac.external_calibration_run/v0.1 contract for
digest-bound subprocess, container, precomputed, and imported calibration
results; migrated the Koide adapter to it and added a ROS-free Kalibr
camchain importer with explicit frame/time conventions and failure states.
Added a reproducible full-scale KITTI raw Camera-LiDAR falsification runner
with a frozen reference/known-bad protocol, selected-frame and raw-input
SHA-256 provenance, independently verified evidence bundles, an honest
PASS/FAIL/INCONCLUSIVE decision artifact, and an opt-in official-data test.
Prepared the public launch surface with a concrete five-minute quickstart,
an approachable documentation home, a repository social preview, citation
metadata, and corrected issue links.
Added guarded PyPI trusted publishing after a GitHub release is published,
including tag-to-package-version checks and clean wheel smoke tests.
Replaced the abbreviated license notice with the complete Apache-2.0 text and
added a distributable NOTICE.
Restored the Calibrex product, Python distribution/package, CLI, and source
path. Existing slac.* schema IDs, slac_version, slac_native, and
versioned protocol/policy IDs remain the stable legacy wire namespace.
Added provenance-bound SVG evidence cards via
calibrex render --format evidence-card and schema-source comparison tables
via calibrex compare --format evidence-table, with deterministic README
artifacts and drift tests.
Reworked the README around a concise evidence-first story, generated visual
summaries, an honest accepted-vs-known-bad comparison, public-data demos, and
a compact calibration coverage matrix.
Machine-readable summary.json, metrics.json, observability.json, degeneracy.json, and evidence.json report sidecars.
Machine-readable comparison.json artifacts with metric, transform, evidence summary, and evidence protocol compatibility comparisons.
Static JSON schemas for config, result, comparison, dataset manifest, and report sidecars.
Bulk schema generation via slac schema all --output-dir schemas, with schema drift tests and CI smoke coverage.
3D rig viewer artifact for reference, candidate, and estimated extrinsic comparison.
Falsification assessment framework: slac assess applying a policy to evidence, policy artifacts, --enforce exit codes, per-DoF known-bad challenge summaries, a fixed support denominator, mandatory challenge verification, and assessment recomputation verification inside evidence bundles.
Evidence bundle verification: slac verify, an evidence-bundle-verification schema, a --require-raw-recomputed raw recomputation gate, a verified-raw-inputs requirement, and structured verification claims.
slac render and slac evidence commands for producing report and evidence artifacts from an existing result without recomputing metrics.
Protocol and policy JSON schemas, and compare --enforce-compatible protocol compatibility enforcement.
README GIF gallery generation (generate_calibration_evidence_gif.py --readme-gallery) with a provenance manifest and schema-validated visual modes.
Local release smoke helper, wheel smoke coverage in CI, and a draft GitHub release workflow.
Configurable public-dataset frame sampling: DatasetConfig.sample_limit and slac inspect --sample-limit.
N-way slac report-compare command with labeled results, protocol-compatibility gating, metric-family rankings, and a report_comparison schema (16 schemas total).
Pure-Python rosbag1 (v2.0) reader with PointCloud2 decoding (none/bz2, optional lz4 extra), slac inspect --type rosbag1, and the TIERS LidarsCali example config.
Native LiDAR point-to-plane solver backend (solver.backend: native_lidar_point_to_plane) wired into slac calibrate, with real rank/condition-number/weak-DoF observability replacing the uncomputed_alpha_backend stub and point-to-plane metrics in results.