Skip to content

A8 F5 scale-invariance is only leading-order (test overclaims); + pre-existing NaN silent-failure in lep_proximity (residual from #70/#81 dual-review) #82

Description

@marcohost33-maker

Aufgedeckt beim Dual-Review von PR #81 (Addresses #70). Kein Korrektheits-Regress — die neue radius/gap-Regel (A8) ist strikt besser + dimensional sauber als die alte bare-radius-Regel. Zwei Test-/Härtungs-Residuen:

1. A8 radius/gap ist nur leading-order skalen-invariant — Test + PR-Body überclaimen

  • Equalita hat die reale Drift gemessen (stark nicht-normaler 3×3-Operator): reales radius/gap driftet 2.549 (c=1e-3) → 2.0 (c=1e3), ~27% über 6 Dekaden — NICHT exakt invariant.
  • Ursache: D13 (resolvent.py:72) nutzt festes eps=1.0e-3. Für ε-Pseudospektren gilt sigma_eps(cL)=c·sigma_{eps/c}(L); bei fixem ε skaliert der reale Radius nur näherungsweise linear.
  • Der Code-Kommentar ist ehrlich (classification.py: "scale-invariant to leading order"). Der Überclaim liegt nur im Test-Namen test_a8_f5_rule_is_scale_invariant_under_rescale und im PR-Body/Commit ("L→cL no longer flips A10/F5" ohne Einschränkung). ALLE A8-Tests skalieren nur die gespeicherten Evidence-Werte per Hand (_spectral(gap=0.5*c) UND _resolvent(pseudospectral_radius=5.0*c)) → Quotient trivial invariant; kein Test rechnet pseudospectral_radius aus einem echt reskalierten c·L neu.
  • Zu tun: (a) Test umbenennen/ergänzen: ..._leading_order + ein echter End-to-End-Metamorph-Test, der den pseudospektralen Radius aus c·L neu berechnet und die reale Rest-Drift dokumentiert/bounded. (b) PR-Body/Commit-Wording auf "to leading order" einschränken. (c) Erwägen: ε relativ mitskalieren (eps ∝ \|L\|) für echte Skaleninvarianz — Physik-Design-Frage, cross-family.
  • Praktische Flip-Gefahr nur bei grenznahen Systemen (reach ≈ 2·ratio) unter extremem Rescaling → als Follow-up geführt, kein Merge-Blocker.

2. Pre-existing: NaN/inf-Eigenwerte still ignoriert in lep_proximity

  • lep_proximity (D16) ignoriert NaN/inf-Eigenwerte still (→ finiter Wert statt lautem Fehler). Verstoss gegen das Silent-Failure-Gate. PRE-EXISTING (alte sep>atol-Logik verwarf NaN-Paare identisch), NICHT von fix(classifier): clear #70 semantics debt (A5/A6/A8/A9; B3/B4 proposed) #81 eingeführt. Härten: laut fehlschlagen oder explizit dokumentieren.
  • Theoretischer Edge: gap<0 würde F5 spurios feuern (Guard nur >0.0); physikalisch kann spectral.gap nicht negativ sein → kein realer Pfad, defensiv absichern optional.

Belege

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

    agent:claudePR authored by Claude CodebugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions