logbook
WP-E Progress / Logbook / 2026 04 13 S2 expansion and H1
Context. Guardian cleared the falsification and recommended: (i) S2 sheets at |α| ∈ {1, 5} to complete the arg C(|α|, φ_α) map; (ii) H1 (Floquet lock-tolerance) promoted as the cheapest protocol- identity test; (iii) an unwrapped arg C panel; (iv) explicit arg C(|α|, φ_α) S3-replacement. All four done in this entry. One self-correction to the previous falsification logbook is also issued.
Verdict. Three findings:
|C|(δ₀, φ_α) is φ_α-independent to machine precision at all three |α| ∈ {1, 3, 5}. Worst |Δ|C|| vs φ_α = 0 reference: 3×10⁻¹⁵ (α=1), 7×10⁻¹³ (α=3), 7×10⁻¹⁵ (α=5). The matrix-element-magnitude theorem holds on the entire lineshape, not just the carrier.
The closed-form theory arg C(δ_0=0, φ_α) = 90° + 2η|α|·cos φ_α
matches the full engine exactly — to 10⁻¹¹ deg RMS, not
approximately. The term "η-dressing" used in the previous
falsification logbook was wrong; there is no dressing, only a linear
phase that wraps on the principal branch when 4η|α| > 2π (at |α| ≥ 5
for η = 0.397). Unwrapped ranges match 4η|α| to 0.01° in both engines.
H1 Floquet lock-tolerance is |α|-dependent. At |α| = 0, |C| is essentially flat in ε = ω_pulse/ω_m − 1 across ±2.5%; at |α| = 3, |C| has a resonant peak with FWHM ≈ 3.3% in ε. The published Δω_m/ω_m ≲ 1/(2πN) ≈ 0.72% sits comfortably inside the α = 3 tolerance window.
Wall times: |α|=1 in 38 s; |α|=5 in 203 s. Worst Fock leakage: 5×10⁻²² (α=1, nmax=30), 8×10⁻¹⁴ (α=5, nmax=80). Convergence fine.
Files: - ../numerics/S2_delta_phi_alpha1.h5 - ../numerics/S2_delta_phi_alpha5.h5
φ_α-independence of |C| across all three sheets:
| |α| | nmax | worst |Δ|C|| vs φ_α=0 ref | |------|------|--------------------------------| | 1 | 30 | 3.11 × 10⁻¹⁵ | | 3 | 40 | 6.63 × 10⁻¹³ | | 5 | 80 | 6.77 × 10⁻¹⁵ |
Matrix-element-magnitude theorem confirmed at three |α| values, not just one. The theorem is independent of |α|, so this is a consistency check rather than a new result per se — but it was worth doing before moving on.
2026-04-13-S2-falsification.md — no η-dressingThe previous falsification entry used the phrase "η-dressed" to describe the difference between R1 and full engine arg C curves. Guardian flagged this as imprecise; the actual situation is stronger.
Corrected statement. At δ₀ = 0, arg C is given exactly by
arg C(δ_0 = 0, |α|, φ_α) = 90° + 2η|α| · cos φ_α (mod 360°)
in both engines, where "exactly" means the unwrapped measured trace matches this expression to 10⁻¹¹ deg RMS (see the "Residual (unwrapped)" panel of ../plots/S2_combined.png). The only difference between full and R1 traces is the value of η: at η = 0.04 (R1), the amplitude 2η|α| ranges from 4.58° to 22.9° (for |α| up to 5), stays within one principal branch, and the curve is a clean low- amplitude cosine. At η = 0.397 (full), the amplitude ranges from 22.7° to 113.7°, and the cosine wraps on the principal branch.
Unwrapped range = 4η|α| in both engines:
| |α| | full measured | theory 4η_full|α| | R1 measured | theory 4η_R1|α| | |-----|---------------|--------------------|-------------|-----------------| | 1 | 90.99° | 90.99° | 9.17° | 9.17° | | 3 | 272.96° | 272.96° | 27.50° | 27.50° | | 5 | 454.93° | 454.93° | 45.84° | 45.84° |
The N = 22 pulse accumulation does nothing nonlinear to arg C at δ_0 = 0. The rotation axis tilt 2η|α|·cos φ_α is imparted per pulse by the matrix element, and the N pulses accumulate to a π/2 rotation around that tilted axis, giving the final Bloch vector at (−sin θ, cos θ, 0) with θ = 2η|α|·cos φ_α — whence arg C = 90° + θ, by 3D rotation geometry, not by approximation.
This is a cleaner result than the falsification logbook reported. The "1.5 motivations" framing stands; the claim "η-dressing produces the complicated-looking arg C curve" does not. The apparent complexity is purely the principal-branch wrap.
Driver: ../numerics/plot_S2_combined.py.
Driver: execute_H1 in ../numerics/run_slices.py.
Output: ../numerics/H1_lock_tolerance.h5.
Plot: ../numerics/plot_H1.py.
Wall time 1.7 s (81 ε × 2 |α| values at 3 detuning points each).
Protocol. ε = t_sep_factor − 1 = ω_m/ω_pulse − 1. Swept over [−2.5%, +2.5%] in 81 points. Measured |C|(ε) at δ_0 = 0 for |α| ∈ {0, 3}.
|C|(ε) varies only from 0.917 (at ε = 0) to 0.967 (at ε = ±2.5%) — a 5% variation across the full sweep. Contrast rises as ε is moved away from the strobe point. Mechanism: at |α| = 0 the motional state is |0⟩; inter-pulse free evolution has no effect (|0⟩ has no excited Fock structure to accumulate phase). The weak ε-dependence that does exist comes from the fact that each pulse creates a small motional excursion ~η, and inter-pulse rotation of that excursion depends on ε — but the effect is second-order in η and small.
There is no "lock tolerance" at |α| = 0 in the usual sense; the protocol is robust to modest ε at ground state.
|C|(ε) has a resonant peak: rises to 0.958 near ε ≈ +0.8%, falls to 0.15 at ε = ±2.5%, with FWHM ≈ 3.3% in ε. Sample values:
| ε (%) | |C|(α = 3) |
|---|---|
| −2.50 | 0.146 |
| −1.88 | 0.291 |
| −1.25 | 0.764 |
| −0.63 | 0.909 |
| +0.00 | 0.917 |
| +0.63 | 0.946 |
| +1.25 | 0.837 |
| +1.88 | 0.299 |
| +2.50 | 0.149 |
The published tolerance Δω_m/ω_m ≲ 1/(2πN) = 1/(2π·22) = 0.72% sits inside the plateau region: |C|(ε = ±0.72%) ≈ 0.92, only marginally below the ε = 0 value. Noticeable degradation begins at ±1.25% and is catastrophic by ±2%.
This confirms the Hasse2024 order-of-magnitude scaling and quantifies the decoherence window. For a practical phase-lock spec, "Δω_m/ω_m ≲ 1% over the 17 μs pulse-train duration" is the appropriate operational criterion for |α| ≈ 3 operation.
The |α| = 3 peak appears at ε ≈ +0.008, not ε = 0. This is consistent with the carrier-bias offset of −0.20 MHz/(2π) seen in S1 (peak of |C|(δ_0) off resonance), which corresponds to a finite-δt carrier-shift effect. These two biases should be quantitatively the same phenomenon and will be tested directly when R2 lands. Recorded as a prediction for the R2 logbook entry.
2026-04-13-S2-falsification.md §4).../numerics/run_slices.py extended with
execute_H1. Engine
../../scripts/stroboscopic_sweep.py
unchanged. No README.md edit (Guardian cadence).
Next entry: R2 driver + carrier-bias interpretation.