FAILURE MAP
← Case archive

FA-74791 / Experiment statistics / Open access

Always-valid sequential p-value: The exponent grows linearly in n · case 01

Evidence accumulates too slowly, delaying every decision.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The exponent uses n tau2 m^2 instead of n^2 tau2 m^2.

VERIFIED REPAIR

Use n squared in the exponent numerator.

Unsuccessful approach: Dropping n entirely freezes the evidence at single-observation strength.

Case contract

diffs is a stream of paired differences with known variance sigma2; the normal-mixture likelihood ratio after n observations with running mean m is sqrt(sigma2 / (sigma2 + n tau2)) exp(n^2 tau2 m^2 / (2 sigma2 (sigma2 + n tau2))). The always-valid p-value starts at 1 and is the running minimum of 1 / ratio. Return the p-value after each observation rounded to 6.

Why this case matters

Always-valid p-values let teams monitor continuously without inflating false positives.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(diffs, sigma2, tau2):
    p = 1.0
    total = 0.0
    out = []
    for n, d in enumerate(diffs, 1):
        total += d
        mean = total / n
        lam = math.sqrt(sigma2 / (sigma2 + n * tau2)) * math.exp(n * tau2 * mean * mean / (2 * sigma2 * (sigma2 + n * tau2)))
        p = min(p, 1 / lam)
        out.append(round(p, 6))
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 1',
   [[0.0, 1.5, 0.0, -1.0, 0.0, 0.5, -1.0], 2.0, 0.5],
   [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 2',
   [[0.0, 2.0, -1.0, 1.0, 0.5], 1.0, 1.0],
   [1.0, 0.889265, 0.889265, 0.889265, 0.889265]),
  ('difference stream sample 3',
   [[1.0, -1.0, -1.0, 0.5, -1.0, 0.5, 1.5], 1.0, 0.25],
   [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 6', [[0.0, -1.0, 0.0, -1.0, 0.5], 4.0, 0.25], [1.0, 1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 7', [[2.0, 1.0, 2.0, 0.0], 1.0, 0.5], [0.628805, 0.459128, 0.129788, 0.129788]),
  ('difference stream sample 20', [[0.5, 2.0], 2.0, 0.5], [1.0, 0.943948])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 11', [[2.0], 4.0, 1.0], [1.0]),
  ('difference stream sample 12', [[0.0, 2.0, 0.0], 2.0, 0.25], [1.0, 1.0, 1.0]),
  ('difference stream sample 56', [[2.0, 2.0, 1.0, 2.0], 4.0, 0.5], [1.0, 0.915369, 0.882617, 0.735148])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 4',
   [[0.0, 2.0, 1.0, 0.0, 1.0, 2.0, 1.0], 1.0, 1.0],
   [1.0, 0.889265, 0.649305, 0.649305, 0.645678, 0.202205, 0.132287]),
  ('difference stream sample 16', [[1.0], 1.0, 0.25], [1.0]),
  ('difference stream sample 17',
   [[1.5, 0.5, 2.0, 0.5, 0.0], 1.0, 0.5],
   [0.841754, 0.841754, 0.319226, 0.319226, 0.319226])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 21', [[0.0, -1.0, 1.0, 2.0, 1.5], 2.0, 0.25], [1.0, 1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 22', [[1.0, 0.5, 1.5], 2.0, 0.25], [1.0, 1.0, 0.955693]),
  ('difference stream sample 32',
   [[2.0, 0.0, 2.0, 2.0, -1.0], 1.0, 0.25],
   [0.749441, 0.749441, 0.421874, 0.149057, 0.149057])]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
p-value never increases after a reversal[0.52026, 0.456564, 0.456564, 0.456564][0.52026, 0.120349, 0.120349, 0.120349]Failed
first observation[1.0][1.0]Passed
null-looking stream stays at one[1.0, 1.0, 1.0][1.0, 1.0, 1.0]Passed
steady effect[1.0, 1.0, 1.0, 1.0, 1.0][1.0, 1.0, 0.959234, 0.857764, 0.749028]Failed
noisy stream[1.0, 1.0, 1.0, 1.0][1.0, 1.0, 1.0, 1.0]Passed
difference stream sample 1[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0][1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]Passed
difference stream sample 2[1.0, 1.0, 1.0, 1.0, 1.0][1.0, 0.889265, 0.889265, 0.889265, 0.889265]Failed
difference stream sample 3[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0][1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]Passed

SHA-256 / 458f2e180d1edf847172e675c1c71d174db655148eb5f3b3623aad5bdf5b907a

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(diffs, sigma2, tau2):
    p = 1.0
    total = 0.0
    out = []
    for n, d in enumerate(diffs, 1):
        total += d
        mean = total / n
        lam = math.sqrt(sigma2 / (sigma2 + n * tau2)) * math.exp(tau2 * mean * mean / (2 * sigma2 * (sigma2 + n * tau2)))
        p = min(p, 1 / lam)
        out.append(round(p, 6))
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 1',
   [[0.0, 1.5, 0.0, -1.0, 0.0, 0.5, -1.0], 2.0, 0.5],
   [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 2',
   [[0.0, 2.0, -1.0, 1.0, 0.5], 1.0, 1.0],
   [1.0, 0.889265, 0.889265, 0.889265, 0.889265]),
  ('difference stream sample 3',
   [[1.0, -1.0, -1.0, 0.5, -1.0, 0.5, 1.5], 1.0, 0.25],
   [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 6', [[0.0, -1.0, 0.0, -1.0, 0.5], 4.0, 0.25], [1.0, 1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 7', [[2.0, 1.0, 2.0, 0.0], 1.0, 0.5], [0.628805, 0.459128, 0.129788, 0.129788]),
  ('difference stream sample 20', [[0.5, 2.0], 2.0, 0.5], [1.0, 0.943948])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 11', [[2.0], 4.0, 1.0], [1.0]),
  ('difference stream sample 12', [[0.0, 2.0, 0.0], 2.0, 0.25], [1.0, 1.0, 1.0]),
  ('difference stream sample 56', [[2.0, 2.0, 1.0, 2.0], 4.0, 0.5], [1.0, 0.915369, 0.882617, 0.735148])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 4',
   [[0.0, 2.0, 1.0, 0.0, 1.0, 2.0, 1.0], 1.0, 1.0],
   [1.0, 0.889265, 0.649305, 0.649305, 0.645678, 0.202205, 0.132287]),
  ('difference stream sample 16', [[1.0], 1.0, 0.25], [1.0]),
  ('difference stream sample 17',
   [[1.5, 0.5, 2.0, 0.5, 0.0], 1.0, 0.5],
   [0.841754, 0.841754, 0.319226, 0.319226, 0.319226])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 21', [[0.0, -1.0, 1.0, 2.0, 1.5], 2.0, 0.25], [1.0, 1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 22', [[1.0, 0.5, 1.5], 2.0, 0.25], [1.0, 1.0, 0.955693]),
  ('difference stream sample 32',
   [[2.0, 0.0, 2.0, 2.0, -1.0], 1.0, 0.25],
   [0.749441, 0.749441, 0.421874, 0.149057, 0.149057])]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
p-value never increases after a reversal[0.52026, 0.52026, 0.52026, 0.52026][0.52026, 0.120349, 0.120349, 0.120349]Failed
first observation[1.0][1.0]Passed
null-looking stream stays at one[1.0, 1.0, 1.0][1.0, 1.0, 1.0]Passed
steady effect[1.0, 1.0, 1.0, 1.0, 1.0][1.0, 1.0, 0.959234, 0.857764, 0.749028]Failed
noisy stream[1.0, 1.0, 1.0, 1.0][1.0, 1.0, 1.0, 1.0]Passed
difference stream sample 1[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0][1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]Passed
difference stream sample 2[1.0, 1.0, 1.0, 1.0, 1.0][1.0, 0.889265, 0.889265, 0.889265, 0.889265]Failed
difference stream sample 3[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0][1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]Passed

SHA-256 / ad8cb4ba36167fc6bd5d4c2957e6350b0a52123c2a41a0d850b5f86413503355

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(diffs, sigma2, tau2):
    p = 1.0
    total = 0.0
    out = []
    for n, d in enumerate(diffs, 1):
        total += d
        mean = total / n
        lam = math.sqrt(sigma2 / (sigma2 + n * tau2)) * math.exp(n * n * tau2 * mean * mean / (2 * sigma2 * (sigma2 + n * tau2)))
        p = min(p, 1 / lam)
        out.append(round(p, 6))
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 1',
   [[0.0, 1.5, 0.0, -1.0, 0.0, 0.5, -1.0], 2.0, 0.5],
   [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 2',
   [[0.0, 2.0, -1.0, 1.0, 0.5], 1.0, 1.0],
   [1.0, 0.889265, 0.889265, 0.889265, 0.889265]),
  ('difference stream sample 3',
   [[1.0, -1.0, -1.0, 0.5, -1.0, 0.5, 1.5], 1.0, 0.25],
   [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 6', [[0.0, -1.0, 0.0, -1.0, 0.5], 4.0, 0.25], [1.0, 1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 7', [[2.0, 1.0, 2.0, 0.0], 1.0, 0.5], [0.628805, 0.459128, 0.129788, 0.129788]),
  ('difference stream sample 20', [[0.5, 2.0], 2.0, 0.5], [1.0, 0.943948])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 11', [[2.0], 4.0, 1.0], [1.0]),
  ('difference stream sample 12', [[0.0, 2.0, 0.0], 2.0, 0.25], [1.0, 1.0, 1.0]),
  ('difference stream sample 56', [[2.0, 2.0, 1.0, 2.0], 4.0, 0.5], [1.0, 0.915369, 0.882617, 0.735148])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 4',
   [[0.0, 2.0, 1.0, 0.0, 1.0, 2.0, 1.0], 1.0, 1.0],
   [1.0, 0.889265, 0.649305, 0.649305, 0.645678, 0.202205, 0.132287]),
  ('difference stream sample 16', [[1.0], 1.0, 0.25], [1.0]),
  ('difference stream sample 17',
   [[1.5, 0.5, 2.0, 0.5, 0.0], 1.0, 0.5],
   [0.841754, 0.841754, 0.319226, 0.319226, 0.319226])],
 [('p-value never increases after a reversal',
   [[2.0, 2.0, -1.0, -1.0], 1.0, 1.0],
   [0.52026, 0.120349, 0.120349, 0.120349]),
  ('first observation', [[1.0], 1.0, 1.0], [1.0]),
  ('null-looking stream stays at one', [[0.0, 0.0, 0.0], 1.0, 0.5], [1.0, 1.0, 1.0]),
  ('steady effect', [[1.0, 1.0, 1.0, 1.0, 1.0], 2.0, 0.5], [1.0, 1.0, 0.959234, 0.857764, 0.749028]),
  ('noisy stream', [[1.5, -1.0, 2.0, 0.5], 4.0, 1.0], [1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 21', [[0.0, -1.0, 1.0, 2.0, 1.5], 2.0, 0.25], [1.0, 1.0, 1.0, 1.0, 1.0]),
  ('difference stream sample 22', [[1.0, 0.5, 1.5], 2.0, 0.25], [1.0, 1.0, 0.955693]),
  ('difference stream sample 32',
   [[2.0, 0.0, 2.0, 2.0, -1.0], 1.0, 0.25],
   [0.749441, 0.749441, 0.421874, 0.149057, 0.149057])]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
p-value never increases after a reversal[0.52026, 0.120349, 0.120349, 0.120349][0.52026, 0.120349, 0.120349, 0.120349]Passed
first observation[1.0][1.0]Passed
null-looking stream stays at one[1.0, 1.0, 1.0][1.0, 1.0, 1.0]Passed
steady effect[1.0, 1.0, 0.959234, 0.857764, 0.749028][1.0, 1.0, 0.959234, 0.857764, 0.749028]Passed
noisy stream[1.0, 1.0, 1.0, 1.0][1.0, 1.0, 1.0, 1.0]Passed
difference stream sample 1[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0][1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]Passed
difference stream sample 2[1.0, 0.889265, 0.889265, 0.889265, 0.889265][1.0, 0.889265, 0.889265, 0.889265, 0.889265]Passed
difference stream sample 3[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0][1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]Passed

SHA-256 / 0bf5c3c89f75996744c67e3c0b1ef100576b01738f1f071e66b402bb451ae3ed

Verification & scope

A deterministic toy experiment-analysis model with a stipulated contract; results are rounded and are not a substitute for a validated statistics package. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:49:00.015164+00:00.

Case digest / 470de88c1b463bc3000c6e10fc4e360268cc47a5d0f0b73787c2c33baea3969e