FA-65081 / Epidemic compartment models / Open access
SIR with daily all-or-nothing vaccination campaign: administered dose tally · case 01
Administered doses match protected people rather than shots given.
ROOT CAUSE
The tally counts only effective doses.
VERIFIED REPAIR
Restore the administered dose tally rule: `given += dose`.
Unsuccessful approach: Counting scheduled supply over-counts days where susceptibles ran out.
Case contract
Each day from day index start_day (inclusive), dose=min(doses_per_day, S) is given to susceptibles before transmission; dose*efficacy moves S->V; failed vaccinees stay in S; mixing uses the full pop; return [S, I, R, V, doses administered] rounded to 3.
Why this case matters
Compartmental epidemic calculations drive outbreak forecasts, vaccine targets and hospital planning; a single wrong flow, rate conversion or boundary silently changes every downstream number.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(beta, gamma, pop, i0, doses_per_day, start_day, efficacy, days):
s, i, r, v = float(pop - i0), float(i0), 0.0, 0.0
given = 0.0
for day in range(days):
if day >= start_day:
dose = min(doses_per_day, s)
s -= dose * efficacy
v += dose * efficacy
given += dose * efficacy
inf = beta * s * i / pop
rec = gamma * i
s -= inf
i += inf - rec
r += rec
return [round(s, 3), round(i, 3), round(r, 3), round(v, 3), round(given, 3)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: campaign from day 0',
(0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),
[872.113, 79.727, 248.159, 800.0, 1000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0])],
[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],
[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: campaign from day 0',
(0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),
[872.113, 79.727, 248.159, 800.0, 1000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],
[('regression: campaign from day 0',
(0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),
[872.113, 79.727, 248.159, 800.0, 1000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],
[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: city campaign from day 5 | [4007.174, 324.024, 1168.803, 4500.0, 4500.0] | [4007.174, 324.024, 1168.803, 4500.0, 5000.0] | Failed |
| regression: campaign from day 0 | [872.113, 79.727, 248.159, 800.0, 800.0] | [872.113, 79.727, 248.159, 800.0, 1000.0] | Failed |
| regression: supply exceeds susceptibles | [0.0, 1.516, 1.233, 97.251, 97.251] | [0.0, 1.516, 1.233, 97.251, 102.369] | Failed |
| control: late campaign never starts | [777.374, 141.242, 81.385, 0.0, 0.0] | [777.374, 141.242, 81.385, 0.0, 0.0] | Passed |
| regression: perfect vaccine small town | [0.0, 10.271, 55.609, 434.12, 434.12] | [0.0, 10.271, 55.609, 434.12, 434.12] | Passed |
| regression: poor vaccine | [237.471, 307.647, 1134.882, 1320.0, 1320.0] | [237.471, 307.647, 1134.882, 1320.0, 3300.0] | Failed |
| control: no doses | [896.73, 54.094, 49.176, 0.0, 0.0] | [896.73, 54.094, 49.176, 0.0, 0.0] | Passed |
SHA-256 / ed8aef7919975040b8b0dcf606987ba6266be218e4692e651bcd18d90d3245b6
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(beta, gamma, pop, i0, doses_per_day, start_day, efficacy, days):
s, i, r, v = float(pop - i0), float(i0), 0.0, 0.0
given = 0.0
for day in range(days):
if day >= start_day:
dose = min(doses_per_day, s)
s -= dose * efficacy
v += dose * efficacy
given += doses_per_day
inf = beta * s * i / pop
rec = gamma * i
s -= inf
i += inf - rec
r += rec
return [round(s, 3), round(i, 3), round(r, 3), round(v, 3), round(given, 3)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: campaign from day 0',
(0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),
[872.113, 79.727, 248.159, 800.0, 1000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0])],
[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],
[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: campaign from day 0',
(0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),
[872.113, 79.727, 248.159, 800.0, 1000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],
[('regression: campaign from day 0',
(0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),
[872.113, 79.727, 248.159, 800.0, 1000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],
[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: city campaign from day 5 | [4007.174, 324.024, 1168.803, 4500.0, 5000.0] | [4007.174, 324.024, 1168.803, 4500.0, 5000.0] | Passed |
| regression: campaign from day 0 | [872.113, 79.727, 248.159, 800.0, 1000.0] | [872.113, 79.727, 248.159, 800.0, 1000.0] | Passed |
| regression: supply exceeds susceptibles | [0.0, 1.516, 1.233, 97.251, 400.0] | [0.0, 1.516, 1.233, 97.251, 102.369] | Failed |
| control: late campaign never starts | [777.374, 141.242, 81.385, 0.0, 0.0] | [777.374, 141.242, 81.385, 0.0, 0.0] | Passed |
| regression: perfect vaccine small town | [0.0, 10.271, 55.609, 434.12, 520.0] | [0.0, 10.271, 55.609, 434.12, 434.12] | Failed |
| regression: poor vaccine | [237.471, 307.647, 1134.882, 1320.0, 3300.0] | [237.471, 307.647, 1134.882, 1320.0, 3300.0] | Passed |
| control: no doses | [896.73, 54.094, 49.176, 0.0, 0.0] | [896.73, 54.094, 49.176, 0.0, 0.0] | Passed |
SHA-256 / 160961961a331d7b75ab5ce692d1e7243024145c16717f3aba34217226436618
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(beta, gamma, pop, i0, doses_per_day, start_day, efficacy, days):
s, i, r, v = float(pop - i0), float(i0), 0.0, 0.0
given = 0.0
for day in range(days):
if day >= start_day:
dose = min(doses_per_day, s)
s -= dose * efficacy
v += dose * efficacy
given += dose
inf = beta * s * i / pop
rec = gamma * i
s -= inf
i += inf - rec
r += rec
return [round(s, 3), round(i, 3), round(r, 3), round(v, 3), round(given, 3)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: campaign from day 0',
(0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),
[872.113, 79.727, 248.159, 800.0, 1000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0])],
[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],
[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: campaign from day 0',
(0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),
[872.113, 79.727, 248.159, 800.0, 1000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],
[('regression: campaign from day 0',
(0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),
[872.113, 79.727, 248.159, 800.0, 1000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],
[('regression: city campaign from day 5',
(0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),
[4007.174, 324.024, 1168.803, 4500.0, 5000.0]),
('regression: supply exceeds susceptibles',
(0.3, 0.1, 100, 2, 80, 1, 0.95, 6),
[0.0, 1.516, 1.233, 97.251, 102.369]),
('control: late campaign never starts',
(0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),
[777.374, 141.242, 81.385, 0.0, 0.0]),
('regression: perfect vaccine small town',
(0.6, 0.2, 500, 5, 40, 2, 1.0, 15),
[0.0, 10.271, 55.609, 434.12, 434.12]),
('regression: poor vaccine',
(0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),
[237.471, 307.647, 1134.882, 1320.0, 3300.0]),
('control: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),
('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: city campaign from day 5 | [4007.174, 324.024, 1168.803, 4500.0, 5000.0] | [4007.174, 324.024, 1168.803, 4500.0, 5000.0] | Passed |
| regression: campaign from day 0 | [872.113, 79.727, 248.159, 800.0, 1000.0] | [872.113, 79.727, 248.159, 800.0, 1000.0] | Passed |
| regression: supply exceeds susceptibles | [0.0, 1.516, 1.233, 97.251, 102.369] | [0.0, 1.516, 1.233, 97.251, 102.369] | Passed |
| control: late campaign never starts | [777.374, 141.242, 81.385, 0.0, 0.0] | [777.374, 141.242, 81.385, 0.0, 0.0] | Passed |
| regression: perfect vaccine small town | [0.0, 10.271, 55.609, 434.12, 434.12] | [0.0, 10.271, 55.609, 434.12, 434.12] | Passed |
| regression: poor vaccine | [237.471, 307.647, 1134.882, 1320.0, 3300.0] | [237.471, 307.647, 1134.882, 1320.0, 3300.0] | Passed |
| control: no doses | [896.73, 54.094, 49.176, 0.0, 0.0] | [896.73, 54.094, 49.176, 0.0, 0.0] | Passed |
SHA-256 / a89c6eb31ca7a19eef8af23a494ec67312edf1a86d6fe1b9baec23208b89b7c8
Verification & scope
Deterministic bounded teaching model with a stipulated contract; not a validated scientific or public-health modelling library. 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:47:30.733454+00:00.
Case digest / 886fbd8d9db22a0329ea64cafd07a10485f4b1977b1ae4049f6f9353a77c2930