@@ -50,6 +50,70 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5050 not for want of findings. (` annotations ` is set to ` false ` alongside it; the
5151 action refuses to start with both enabled.)
5252
53+ - ** The zero-mode certificate accepted its premise on a coarser scale than its
54+ conclusion (PR #127 review).** ` certified_eigvals ` / ` certified_eig ` assert
55+ that ` 0 ` is an * exact* eigenvalue, which follows from exact trace
56+ preservation -- but applicability was granted whenever the trace defect
57+ stayed below ` 1e-10 * ||L||_F ` , six orders of magnitude above the backward
58+ error the conclusion is stated on. A generator whose defect fell in that
59+ band (measured: an amplitude-damped qubit plus ` 1e-11 * I ` , defect ` 1.4e-11 `
60+ against the old cutoff ` 7.9e-11 ` ) has its smallest eigenvalue at exactly
61+ ` 1e-11 ` against a certificate bound of ` 1.6e-13 ` : every repair route
62+ "failed", the spectral layer warned about an eigensolve that was in fact
63+ correct, and the classifier was floored to ` UNDEFINED ` . The cutoff is now
64+ derived rather than tuned -- with ` u = vec(I)/sqrt(d) ` and ` r^H = u^H L ` the
65+ matrix ` L - u r^H ` has an exact zero mode and lies at spectral distance
66+ ` tp_defect / sqrt(d) ` from ` L ` , so ` tp_defect <= sqrt(d) * bound ` is what the
67+ claim can carry. Headroom measured, not assumed: across 205 healthy GKSL
68+ generators (the five canonical systems, 160 random ones spanning 16 orders of
69+ rate magnitude at ` d = 2..5 ` , 40 stiff four-level jump networks) the largest
70+ defect is ` 0.44 * eps * ||L||_F ` . The rule now lives in one helper used by
71+ both entry points; it was duplicated, and one-sided repairs of that pair are
72+ a defect this repository has shipped twice.
73+
74+ - ** D1 was reported from a spectrum the certificate had just declared unusable
75+ (PR #127 review).** When ` applicable and not certified ` , ` compute_spectral_layer `
76+ warned that D1/D3/D4 are unreliable and then computed D1 anyway. That number
77+ did not stay in the report: ` diagnose ` forwards D1 to
78+ ` default_relaxation_grid ` , so an eigenvalue of a failed solve set the
79+ relaxation window and therefore every fitted rate, while only the closing
80+ verdict was floored. D1 is now NaN there, for the same reasons as in the
81+ ambiguous case -- not ` 0.0 ` , which means "gapless" and fires the F5 reach
82+ leg, and not the surviving mode, which is a fast one. The other five
83+ certificate consumers (` mpemba ` , the Petermann factors, D11, and both
84+ ` _zhou ` paths) already withheld on ` applicable and not resolved ` ; the
85+ spectral layer was the only site that warned and measured anyway.
86+
87+ - ** ` residual_model ` reported the whitening that should have happened
88+ (PR #127 review).** The field was derived from the grid geometry alone, so a
89+ non-uniform grid always exported ` "car1" ` . ` fit_gls_ar1 ` falls back to the
90+ discrete AR(1) treatment whenever ` estimate_car1_theta ` returns NaN --
91+ degenerate residuals, e.g. an exactly stationary trajectory with
92+ ` rho_initial == rho_steady_state ` -- and individual fits of one hierarchy can
93+ differ from one another, which a single geometry-derived label cannot express
94+ at all. It is now read off the fits, with ` car1_fallback_ar1 ` , ` car1_mixed `
95+ and ` car1_unavailable ` for the states that were previously reported as plain
96+ ` "car1" ` .
97+
98+ - ** The grid-relative Prony fallback seed was a regression on the two-scale
99+ grid (PR #127 review).** ` prony_seed ` derived both ` beta ` and ` omega ` from
100+ the total time span on any non-uniform grid, i.e. from the slow gap scale --
101+ although ` default_relaxation_grid ` carries a uniform fine head for exactly
102+ the purpose of resolving the fast dynamics. Measured on
103+ ` default_relaxation_grid(1e-4, fast_rate=1) ` (80 points, uniform head of 41
104+ at ` dt = 0.25 ` , span ` 1e5 ` ): over 60 random exact curves with ` beta ` in
105+ ` [0.05, 2] ` and ` omega ` in ` [0.1, 10] ` the span seed drove the M3b fit onto a
106+ spurious solution twice (true ` omega = 1.68 ` reported as ` 0.037 ` ) where the
107+ historical absolute ` (1, 1) ` seed recovered all 60; on a slower family
108+ (` beta ` , ` omega ` in ` [1e-4, 1e-1] ` ) the span seed failed 41 of 60. The seed
109+ is now estimated by Prony on the longest uniform * prefix* , where the method
110+ is valid by construction: 0 of 60 in both families. The grid-relative
111+ fallback stands where no prefix is long enough for the Hankel system, so the
112+ short non-uniform grids keep their documented behaviour. This corrects an
113+ earlier report of mine on PR #127 which stated that both seeds were unusable
114+ on this grid and that the change was therefore not a regression; the external
115+ reviewer's counter-example holds as a class, and the claim was too broad.
116+
53117### Added
54118- ** Tests for the hardening gate itself (PR #129 ).** It had none. Each unsafe
55119 workflow is asserted next to a positive control that must still pass --
0 commit comments