Skip to content

Native prior-information whitening development

This correctness and development record supports the reliability study. It uses existing spent synthetic fixtures, with no execution-speed, independent accuracy or general convergence claim.

Correct information quadratic

For the existing zero-centered prior, delta = Log(anchor^-1 * knot), the declared objective is delta.T @ information @ delta. Whitened residuals W @ delta and Jacobians therefore require W.T @ W = information. The previous lower Cholesky and eigen fallback used the opposite orientation; the fallback also inserted a positive 1e-9 floor into every null direction.

The corrected factor equilibrates by the positive diagonal, then uses diag(sqrt(eigenvalues)) @ eigenvectors.T and restores the coordinate scales. It retains positive weak information and exact zero-coordinate information, without adding a floor. Matrices must be finite, real and 6x6, with a nonnegative diagonal and exact zero rows/columns at zero diagonal entries. Symmetry and spectral checks use 60 machine epsilons times the respective normalized norm. Correlations beyond one by more than that roundoff allowance are rejected. Only tiny negative normalized spectral roundoff is projected. Negative diagonal entries are rejected, including roundoff-sized negatives; implicit Schur repairs are outside this input contract.

Of 79 maintained regression checks, 60 fail against the preceding source. They cover the declared quadratic, independent objective gradients, both actual assembly paths, null and weak information, nonidentity poses, mixed coordinate units, global scales from 1e-200 to 1e200, malformed/nonfinite/ complex inputs and invalid weak directions hidden by a much larger diagonal. Null-space energy is checked at the Gram matrix's machine-precision scale; the positive spectral square root itself has square-root-precision uncertainty near rank deficiency.

Frozen sources and complete records

The production numerical source is ac7f90b6f584d23928a4ff56ed6ee1661e5f14b5. The historical production control is source 8861ed65ebbcffb13a182ac4cd549db88ef763f2, whose tree is identical to the main merge immediately before this change. Only continuous_time_marginalization.py differs among the 401 Python source modules. The manifest, receipt, receipt schema and original producer bind the source, runtime, commands and original bytes.

The complete archive retains all 49 declared files: historical production and the earlier private candidate, their inputs, all six historical fitter results and schemas, original producers/helpers, current inputs, all three current fitter results, direct and recorded API results, schemas, retained normal inputs and source manifests. Nothing from the historical two-attempt screen is discarded. The earlier private candidate is labelled historical and is separate from the current production result. Every archive member is indexed by size and SHA-256 in the receipt.

OpenBLAS/MKL/OMP limits were one; concurrent host activity was allowed. The receipt records the installed Python, NumPy, SciPy and Pydantic versions. The Log finite differences, prior centering, solver limits and quality gates are unchanged. Artifact schemas and historical evidence are retained.

Same-input window comparison

The first fixture is the existing test_sliding_window_matches_batch_overlap case, seed 7: six knots, 90 plane measurements, windows of four and three knots, one overlap knot and the existing 80-iteration setting. All three problem/options pairs are exactly equal to the historical production records. The prior-free batch and first-window results are also exactly equal.

Actual fitter call Historical production iterations Corrected production iterations
Batch 7 7
First window, no prior 5 5
Second window, correlated prior 26 7
Development metric Historical production Corrected production
Existing unit quality gate pass pass
Maximum batch/sliding overlap translation (m) 0.00363866510 0.00116506884
Maximum batch/sliding overlap rotation (rad) 0.00523790851 0.00143682083
Maximum physical trajectory translation error (m) 0.02449377651 0.02449377651
Maximum trajectory rotation error (rad) 0.02301490181 0.02073100880
Second-window declared objective 0.000145432367 0.000134759966

The recorder passes through the maintained production fitter without changing its numerical functions. A separate, uninstrumented public API call produces an exactly equal complete result; both calls are retained. The current aggregate sliding result copies some batch statistics, so the table uses the actual per-window fit and independently recomputed objective. Iteration counts are not latency measurements, and this fixture has no holdout or signed control.

Native holdout and known-bad control

The separate complete native result, seed 20260820, passes the existing quality policy with 63 training and 27 holdout measurements. Batch holdout RMSE is 0.0140859652 m and sliding holdout RMSE is 0.0215409233 m. The existing known-bad skipped-marginalization/shifted-overlap control increases RMSE by 0.0223417821 m and is detected under the unchanged gate. Batch and sliding fit labels are converged. This supplementary fixture does not replace the nonzero correlated-information comparison above.

These are development cases. Total maximum translation error is unchanged in the same-input case. The native converged label can still mean a small damped step, and does not establish undamped stationarity. The packing helpers still drop nonzero marginalized gradients and cross-knot blocks; that approximation is separate from whitening. Clock boundaries and convergence remain audit work before the fixed-budget research comparison.

Reproduce

At the pinned numerical source, set OPENBLAS_NUM_THREADS=1, MKL_NUM_THREADS=1, OMP_NUM_THREADS=1 and PYTHONDONTWRITEBYTECODE=1. The native command is:

calibrex trajectory recover-sliding-window --seed 20260820 --output replay-native.json --json

For the complete current comparison, copy the original producer to a fresh outputs/prior-replay/run.py, keep a copy of the complete archive, and run:

python outputs/prior-replay/run.py --historical-archive complete-development.tar.gz --output-dir replay/prior-information

The archive supplies all historical inputs directly, without extracting or rerunning the earlier candidate. The output directory must be fresh and inside the checkout; no result is overwritten. Timestamps, output paths and platform floating-point behavior can differ on replay. Historical replay requires its pinned source and the archived original helper files at the working paths declared by its producer.

Integrity

Artifact SHA-256
complete-development.tar.gz 0d75dbd3d009b0c63fec818fe71ad8aa000b2c1c7ae8d016dcd64bfdebfe717a
native-seed-20260820.json b358e7cf3b32ae6790d5bf4b969bdd0ed2ff1d0bb252bb8fde9c9fea1c615541
source-manifest.json 8c0c0f3743892b71479ea1381cbce212b288d8e08cc28a294ed1caf44236ed25
generator.py.txt 3648e386331069158d2aa9742bd327162b9aa4ad6dc4e77c8699c7349c16f6e3

Maintained tests validate the complete member index, every current snapshot, both historical attempts, native schema/control, exact input equality, unaffected phase results, transparent recording and original source bindings.