Local Level Lab

Airborne measurements. Open methods.

Bounded geometry diagnostics — 2026-10-06

This synthetic geometry diagnostic used a one-hour cumulative evaluation cap, up to 300 cases. This is development screening, not fresh calibration, independent validation or a production eligibility policy.

Complete: all 300 evaluations finished in 1,838.56 charged seconds (30m39s), with six "no fit" results, all retained. No new attempts are authorized by the unused time budget. review.json verifies the original source/environment/runner/input freeze, case identities, lossless compressed journal and recomputed scores.

None of the 25 geometries passes every intended contrast across all twelve truth/scenario/ crab-model evaluations. The exact 75-minute control passes all six dynamic-crab cases but none of its six wind-crab cases. Wind-crab fits lose the still-globe versus disc contrast: the control's worst retention margin is -0.31137, versus +0.08401 for dynamic crab. This does not establish that every possible schedule is infeasible.

Across the stress matrix and controls, dynamic/wind fits respectively have 133/130 rank-zero results, eight/thirteen rank-one results, six/four rank-two results and three/three no-fit results. All six failures are mixed-bias cases at latitude -65°, two poorly separated headings, 180 minutes, 270 m/s and no turns. No convergence failures were reported among the 294 returned fits. Rank stability alone does not establish contrast identifiability.

The saved-record audit and subsequent protocol comparison below examine the wind nuisance tangent/anchor assumptions and stress-cell rank loss. The restricted dynamic- crab proposal remains unrun and does not certify the wider nuisance-model set. This single-seed diagnostic supplies neither calibrated tail probabilities nor a real-flight geometry guarantee.

The prepared matrix supplies 24 synthetic cells spanning latitude, headings/separation, duration, speed and mount turns. Each is evaluated under three truths, two nuisance scenarios and dynamic/wind crab fits: 288 cases, plus 12 exact 75-minute protocol controls, 300 total. Controls run first, then the prepared cell order. All cases share fresh development seed 600500 for paired comparisons. A single seed cannot establish a geometry guarantee or calibrated power. The seven observed position tracks are outside this batch; replay integration is still pending.

Saved-record and tangent audit

audit.json, generated by audit_geometry.py, preserves the historical freeze and reports a new, separately identified analytic audit. No flight, optimizer or bootstrap runs are used by that audit. It found:

Design anchors do not use fitted science coefficients or residual gyro weights, but the retained bins and measured forward/mount axes can still depend on gyro preprocessing. New reports state that conditioning explicitly. Analytic fixtures do not reconstruct historical Jacobians or prove the scaling defect caused the recorded wind failures. Historical results are not overwritten.

Two 90-minute proposals use 15-minute legs and six spaced mount turns. Both pass all three anchors under both crab models in idealized tangent fixtures; the opposing/repeated-heading candidate has worst retention margin +0.12936, versus +0.08558 for the other candidate. This is candidate selection from development fixtures, not a real-flight guarantee. The 72-case paired simulator comparison completed with fresh seeds and a new 15-minute/two-thread freeze: zero fit failures, 8m37s charged time, and neither protocol passing every comparison. The revised protocol's IMU turn at minute 20 overlaps an aircraft turn; the causal effect remains untested. Source changed to 27e73b122c3a073357d4a03112da11779969a710bb3a6cc3eb06c333da52ad51; the old restricted calibration proposal must be reviewed/refrozen before use.

Worker: geometry_campaign.py. It performs zero bootstrap replicates, retaining convergence, design-anchor SVD/contrast retention, free-fit rank/stability, watchdog exclusions and failure records. Geometry scores require all twelve evaluations before certification within this diagnostic: all intended contrasts estimable, then worst estimability margin, then worst contrast information. The separate rank-2/10% margin report uses the free-fit SVD, matching the existing operational stability gate. No threshold or significance claim is derived from the diagnostic model-test output.

Documented artifacts, created by the worker:

Each case runs in a child process, bounded by the smaller of 300 seconds and the remaining authorized time. A 300-second timeout is a completed computational failure, never rerun for better acceptance. The final budget-limited incomplete case is not counted as completed. The parent stops and terminates the child at the deadline; termination/IO cleanup can add a few seconds. Reservations are persisted before execution and settled after journal fsync. An abrupt crash conservatively charges the entire reserved slice (at most five minutes), so resuming cannot silently refill the budget. Pauses between workers do not consume time. Source/environment/input/runner changes prevent resume and are checked between every case. Missing original journals require recovery, not restarting from an empty campaign.

The default for future work is up to two total compute threads. This completed batch retains its frozen one-thread environment. New two-thread campaigns need a new environment manifest and timing measurement; calibration and validation must use the same freeze.

Launch outside the per-command sandbox to survive disconnections:

env OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 /home/sweisman/venv/bin/python analysis/tests/geometry_campaign.py --wall-time-minutes 60 --detach

This batch is complete; do not launch or resume it. The following describes recovery of an interrupted batch, not permission to restart these completed cases. On interruption, inspect status.json and the actual outside-sandbox PID first. Resume the same command with --resume, preserving the original cap; successes and failures are skipped. budget_exhausted needs a new explicit budget and reviewed new campaign, not an automatic larger cap on the existing freeze. Neither completed 1,000-attempt pilot may be resumed. After completion, review every cell across both nuisance models, retain failed/weak cells, update the next-stage readiness and handoff, and refreeze any revised scientific domain before estimating the calibration campaign's cost.