tenseleyflow/sway / 4e01c30

Browse files

tests/zscore_helpers: degenerate flag rejects valid-floored std (F02)

Authored by espadonne
SHA
4e01c301d4a08f88a15d791a1ecb02692a763ec5
Parents
b0469ba
Tree
c4eb36e

1 changed file

StatusFile+-
M tests/unit/test_zscore_helpers.py 15 0
tests/unit/test_zscore_helpers.pymodified
@@ -63,6 +63,21 @@ class TestZScore:
6363
         z = z_score(1.0, stats)
6464
         assert z is not None
6565
 
66
+    def test_degenerate_flag_rejects_even_valid_std(self) -> None:
67
+        """F02 (Audit 03) — when null_adapter marks stats as degenerate
68
+        (``runs: 1`` or coincidentally-identical seeds), ``z_score``
69
+        refuses to divide even though the floored std passes MIN_STD.
70
+        This is what prevents the observed ``+290,766σ`` output on a
71
+        ``runs: 1`` leakage probe."""
72
+        stats = {"mean": 0.01, "std": MIN_STD, "degenerate": 1.0}
73
+        assert z_score(0.30, stats) is None
74
+
75
+    def test_non_degenerate_flag_does_not_change_behavior(self) -> None:
76
+        """A ``degenerate: 0.0`` marker on an otherwise-valid stats
77
+        dict behaves identically to the no-marker path."""
78
+        stats = {"mean": 0.01, "std": 0.01, "degenerate": 0.0}
79
+        assert z_score(0.08, stats) is not None
80
+
6681
 
6782
 class TestVerdictFromZ:
6883
     def test_pass_at_threshold(self) -> None: