v0.5.0
Frequency metrology, two new acquisition modes, and an install runbook for AI coding agents. New in this release:
- Pulse-program-derived clock audit: the facility report now re-derives every clock-audit block's expected duration from the pulse-program text stored in the bundle plus the acqus parameters — every programmed delay, pulse, and the per-scan pre-acquisition delay DE are accounted for, with a deliberately conservative parser that falls back (flagged, per block) on anything it cannot model with certainty, and a recorded-model comparison fit alongside. Also fixes acqus parsing on real console files (DBL_MAX sentinels, JCAMP array headers).
rdoptmode (optional, off by default): an automated probe-tuning scan for maximum radiation damping — atma at a ladder of offsets, small-flip FID decay-rate measurement at each, session continues at the winner, P90 recalibrated at the chosen tuning. Needs an ATM probe.sweepmode (optional, off by default): field-stepped noise blocks — every step is a distinct axion mass point, so one overnight session locally scans several adjacent masses. Steps are set through the ²H lock reference (1 ppm = BF1 Hz at ¹H, exact), verified by measurement (the measured offsets are the record), and analyzed per-step by the facility report.docs/CLAUDE_INSTALL.md: an install runbook written for AI coding agents (Claude Code and similar) — facilities whose students work with an agent can hand it the repo and this file; it installs, configures, validates, packs, and uploads, with verification gates at every step and hard rules (agents never run acquisition commands and never expose the upload token).- Version 0.5.0 across the acquisition script, packer, uploader, and registry tools. Schema stays 2.0: role-enum extensions and two newly documented OPTIONAL metadata objects only — bundles from earlier releases remain valid, and v0.4.0 acquisition bundles gain the improved clock analysis retroactively (the pulse-program text was already in every bundle).
The new modes are Bruker-first and dialog-driven; both compose (xpy spin_noise_run rdopt sweep), and neither changes the standard run when the flags are absent. Design notes and sources: docs/design_rdopt_locksweep.md.