Native screw gyro derivative development¶
These complete slac.continuous_time_lidar_imu_joint/v0.1 artifacts retain all
three already-spent synthetic seeds used by the
reliability study.
This is a correctness and development record, with no execution-speed,
independent accuracy, or general convergence claim.
Correctness change¶
The gyro factor previously used the opposite SO(3) Log differential for each endpoint and the inverse Exp differential for integrated bias/scale updates. Its bias derivative also omitted the diagonal gyro scale. It now distinguishes left and right perturbations of the rotation-error product and chains each increment's right Exp differential through subsequent rotations.
The historical so3_left_jacobian helper implements the right Exp differential;
its formula and the existing SE(3) retraction are preserved. Forward integration,
sampling, residual values, measurement weights, solver limits, quality gates
and artifact schemas are unchanged. The
value-parity record, schema,
original producer and fixture retain
exact equality of old/current residuals and integrated rotations on ten declared
mounted/unmounted windows. This finite fixture check is not a global proof.
Of the 57 maintained regression checks, 46 fail against the preceding source and all 57 pass after correction. They cover nonzero residuals, nonidentity mounting, nonunit scales, nonuniform sample times, zero and small increments, the actual sparse assembly, weighted objective gradients and known constant-bias recovery under a fixed five-iteration budget. At exact knot boundaries the clock residual can have different one-sided derivatives; central differences there are explicitly excluded as a smooth clock oracle. Other state blocks at those windows remain tested.
Frozen source and complete outcomes¶
The numerical source is commit
8a6b69d84c13003cceddc3c4921985424068f442.
All 401 Python source modules were hashed with normalized LF text before and
after the runs and remained unchanged. The receipt,
receipt schema, source manifest
and original launcher bind the commands, source and outcomes.
Runtime: Python 3.12.10, NumPy 2.3.4, SciPy 1.17.1, Pydantic 2.12.5.
OpenBLAS/MKL/OMP limits were one; concurrent host activity was allowed.
The previous results are the existing
accelerometer derivative records,
source 11cd1ca4e71779505ba071711eb2486b8f4f90d8, rather than a new control run.
The input comparison,
schema and producer
retain exact canonical JSON equality of each generated problem/options pair
with its archived development input. That audit reads the local archived
inputs named in the producer; those private copies are not required to replay
the public CLI below.
| Seed | Previous fit / iterations | Corrected fit / iterations | Previous policy | Corrected policy | Complete result |
|---|---|---|---|---|---|
| 20261010 | converged / 29 | converged / 21 | pass | pass | JSON |
| 20261011 | converged / 22 | converged / 23 | pass | pass | JSON |
| 20261012 | converged / 25 | converged / 29 | pass | pass | JSON |
All three cases retain calibration errors, covariance-derived uncertainty, training/holdout residuals, all 32 signed known-bad controls, separability and seed/command/source provenance. Every control is detected in each case.
| Seed | Gyro holdout RMSE, previous → corrected (rad) | Maximum translation error, previous → corrected (m) | Maximum rotation error, previous → corrected (deg) |
|---|---|---|---|
| 20261010 | 0.000488302805 → 0.000488302268 | 0.00585998359 → 0.00585998271 | 0.163571927 → 0.163571973 |
| 20261011 | 0.000341162642 → 0.000341162463 | 0.00699456566 → 0.00699456513 | 0.0972514785 → 0.0972514742 |
| 20261012 | 0.000423083991 → 0.000423084156 | 0.00634399002 → 0.00634399006 | 0.126097571 → 0.126097612 |
Policy remains three passes; accuracy changes are small and mixed, and two
iteration counts increase. The holdout oracle evaluates truth calibration on
the fitted trajectory and therefore moves when that trajectory changes.
The native converged label can result from a small accepted damped step;
it does not establish a small undamped gradient. Clock behavior at boundaries,
correlated-prior whitening and convergence remain explicit audit work before
the fixed-budget comparison. Earlier records remain unchanged.
Reproduce¶
At the pinned numerical source and thread limits above, run every command and retain every outcome. Floating-point/platform differences can affect convergence; provenance timestamps and output paths differ on replay.
calibrex trajectory recover-lidar-imu-joint --trajectory screw_linear --seed 20261010 --output replay-20261010.json --json
calibrex trajectory recover-lidar-imu-joint --trajectory screw_linear --seed 20261011 --output replay-20261011.json --json
calibrex trajectory recover-lidar-imu-joint --trajectory screw_linear --seed 20261012 --output replay-20261012.json --json
The archived producer scripts preserve their original bytes and working paths.
To replay a producer, copy it into its named outputs/gyro-jacobian-development-v1/
location at the pinned source, using a fresh output directory and retaining the
declared baseline commit for the value comparison. The production launcher
refuses to overwrite existing public result files. The source manifest uses LF
normalization; the fixture and producer SHA-256 values bind their original raw
checkout bytes.
Integrity¶
| Artifact | SHA-256 |
|---|---|
| seed-20261010.json | 2457f2389af7597c3b6052189c76a5c9befa6052e63316f5ba8b57f4252138dc |
| seed-20261011.json | 91dc8458687ec5af2cc7111e759b4e95943e4eb424a2a8f591c3974ebf86ea6b |
| seed-20261012.json | eac4cc41fdd682b204e8eda1cbe5732804efc003c98af26a00cf77899c88bda5 |
| source-manifest.json | 226f84e4496e8361362d02ef60f7429047a827c9adec157b73861e417af5c573 |
| generator.py.txt | 8b754767942aeb56a2574c11ba9d58cb152813056b2d11ee67b41d11d69392a4 |
| value-parity.json | 383ede2d1a9813c998951f70552e4cbba0d5789a64a037fe28a2c80a14b9625c |
| verify-values.py.txt | f218dae890ff3a15fa9756c16605c413d815becf012c070638927cca50ef3172 |
| fixture.py.txt | 026232879ce82d6bde6f0105c9842703c07da2d09c3cfc5d786b8850af4ae2b7 |
| input-comparison.json | cece67044e73f5292fb63352cf418531ffe92c8925719599eb966b53e159276b |
| verify-inputs.py.txt | 800dfdca389f1595c3f86ee56657658def2914ee29e14ddbaa4ab609780aac65 |
Maintained tests verify the full declared cohort, native and audit schemas, byte hashes, source/seed provenance, signed controls, exact fixture values, input digests and original producer bindings.