Skip to content

Absolute zero-mode tolerance EPS_GAP breaks D1/D3/D4/D16/D19/D20 under rate rescaling — false A11/F4 candidate and negative gap #108

Description

@marcohost33-maker

Summary

The zero-mode filter |lambda| > EPS_GAP with absolute EPS_GAP = 1e-10 is duplicated across five modules — diagnostics/spectral.py (D1/D3/D4), diagnostics/lep.py (D16), diagnostics/mpemba.py (D19/D20), diagnostics/nonnormality.py, _zhou.py (D24). A Liouvillian carries rate dimension, so this is the same defect class as #101, but located in the spectral core: D1 feeds D17 gap_rate_consistency, kappa_trans, the F5 reach leg and gap_to_gns_ratio.

Both failure directions were reproduced with running code on main@f137053 (not read — measured).

claim_status: pending.

Direction A — small c: false A11/F4 Mpemba candidate

Amplitude-damped qubit (H = 0, jump sigma_-), rho_0 = |+><+|, pure unit rescale L -> cL:

c D1 gap gap/c D19 c_1 is_mpemba_candidate
1e-10 0.0 0.0 0.0 True
1e-5 5.0e-06 0.5 0.5 False
1 0.5 0.5 0.5 False
1e10 5.0e+09 0.5 0.5 False

At c = 1e-10 every genuine mode falls below the absolute floor, so _slowest_mode() returns None, overlap_c1 returns 0.0, and 0.0 < overlap_threshold = 1e-4 fires the candidate flag. The issue-#68 non-triviality guard cannot correct this: it also depends on _slowest_mode, so it silently reports trivial_overlap = False.

End-to-end verdict flip (diagnose(), same physics, only the rate unit changed):

c=   1e+00  a_class=A12  f_family=none  verdict=NOT_EXCLUDED tier=EXPLORATION   c1=5.000e-01 cand=False
c=   1e-10  a_class=A11  f_family=F4    verdict=CANDIDATE    tier=CONFIRMATION  c1=0.000e+00 cand=True

F4 is the highest-priority rung of the decision ladder, so this over-claim shadows every other mechanism. A textbook amplitude-damped qubit is promoted to a quantum-Mpemba candidate by a change of units alone — the exact over-claim class the library exists to prevent.

Direction B — large c: negative spectral gap

The numerical zero mode scales as ~eps * ||L||, so it eventually exceeds a fixed absolute floor and is counted as a genuine mode. Rabi-driven amplitude-damped qubit (H = 0.7 sigma_x, jump sigma_-, rate 0.4), true gap/c = 0.2:

| c | smallest |lambda| | D1 gap | gap/c |
|---|---|---|---|
| 1 | 1.17e-16 | 2.00e-01 | 2.00e-01 |
| 1e6 | 1.63e-10 | 1.63e-10 | 1.63e-16 |
| 1e10 | 1.57e-06 | -1.43e-06 | -1.43e-16 |
| 1e12 | 5.79e-05 | -5.76e-05 | -5.76e-17 |

A negative gap is not merely inaccurate, it is contract-violating: Delta = -max{Re lambda : lambda != 0} is non-negative for any GKSL generator. Downstream, gap <= 0 unconditionally sets _psr_fires = True in the F5 branch, so this also feeds the gapless blind spot already noted in #101.

Why the existing conformance suite did not catch it

tests/test_scale_conformance.py (#101 slice B) covers the new scale-relative diagnostics D8b/D10b/D13 and the rate_scale helper. The spectral layer (D1/D3/D4), D16, and the Mpemba layer (D19/D20) are outside its scope, so the defect sits in the gap between the suite and the classifier.

Correct fix (canonical, no free parameter)

Unlike the #101 F5 threshold — where the replacement value cannot be derived without a calibration study — this correction has a canonical form and needs no calibration:

  1. One shared zero-mode tolerance derived from the spectrum itself. The functions receive only eigenvalues, not L, so the natural scale is the spectral radius max|lambda|: homogeneous of degree one, unitary-similarity invariant, and consistent with numerics.scale.rate_scale.
  2. tol = rtol * max|lambda| with rtol = 1e-10. At max|lambda| ~ O(1) this reproduces the historical absolute floor, so anchor behaviour is expected to be unchanged (must be verified byte-identically, not assumed).
  3. Preserve an atol opt-in for the legacy absolute floor, mirroring the resolution of Deep-review follow-ups 2026-07-12: methodology-gated findings (D7b formula, F5 Henrici scale-dependence, AR(1) correction, input-hash framing, steady-state tolerance semantics) #97 item 5 in fix: scale-relative steady-state tolerance, dense + sparse guard (#97 item 5) #99.
  4. Clamp the gap at zero with a fail-closed rationale, so a round-off-dominated spectrum can never report a negative gap.
  5. Extend the conformance suite to D1/D3/D4/D16/D19/D20 over c in {1e-10, 1e-5, 1, 1e5, 1e10}, including the end-to-end verdict invariance that this issue's repro exercises.

This is a numerical-correctness fix in the fail-closed direction, not a threshold change: no classifier threshold is re-tuned, and the F5/A10 gate switch remains gated on #101 slice C.

Refs #101 (same defect class, disjoint location), #102 (the false A11 path is exactly the priority-shadowing failure mode tracked there).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions