FA-65001 / Epidemic compartment models / Open access
Two-group next-generation matrix R0: target-group size weighting · case 01
Small high-contact groups dominate R0 even when few susceptibles are in them.
ROOT CAUSE
The susceptible share uses the infector group size instead of the infectee group size.
VERIFIED REPAIR
Restore the target-group size weighting rule: `contact[i][j] * sizes[i] / total / gamma[j]`.
Unsuccessful approach: Dividing by the infector group size gives a per-capita ratio that is not the population share.
Case contract
K[i][j] = contact[i][j]*sizes[i]/sum(sizes)/gamma[j] (infections in group i caused by one infective in j); R0 is the dominant eigenvalue of the 2x2 K; lead group is the larger component of its eigenvector (ties and decoupled ties to group 0); return [flattened K rounded 6, R0 rounded 6, lead] or None for empty population or non-positive gamma.
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(contact, sizes, gamma):
total = sum(sizes)
if total <= 0 or min(gamma) <= 0:
return None
k = [[contact[i][j] * sizes[j] / total / gamma[j] for j in range(2)] for i in range(2)]
tr = k[0][0] + k[1][1]
det = k[0][0] * k[1][1] - k[0][1] * k[1][0]
disc = max(tr * tr - 4 * det, 0.0)
r0 = (tr + math.sqrt(disc)) / 2
if abs(k[0][1]) > 1e-12:
v = [k[0][1], r0 - k[0][0]]
elif abs(k[1][0]) > 1e-12:
v = [r0 - k[1][1], k[1][0]]
else:
v = [1.0, 0.0] if k[0][0] >= k[1][1] else [0.0, 1.0]
lead = 0 if abs(v[0]) >= abs(v[1]) else 1
return [[round(x, 6) for row in k for x in row], round(r0, 6), lead]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: children and adults',
([[2.0, 0.5], [0.5, 1.0]], [300, 700], [0.25, 0.2]),
[[2.4, 0.75, 1.4, 3.5], 4.11297, 1]),
('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('regression: decoupled equal groups tie',
([[1.0, 0.0], [0.0, 1.0]], [500, 500], [0.5, 0.5]),
[[1.0, 0.0, 0.0, 1.0], 1.0, 0]),
('regression: decoupled first dominant smaller group',
([[3.0, 0.0], [0.0, 0.5]], [300, 700], [0.5, 0.5]),
[[1.8, 0.0, 0.0, 0.7], 1.8, 0]),
('regression: decoupled second dominant',
([[0.5, 0.0], [0.0, 3.0]], [400, 600], [0.5, 0.5]),
[[0.4, 0.0, 0.0, 3.6], 3.6, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None)],
[('regression: decoupled first dominant smaller group',
([[3.0, 0.0], [0.0, 0.5]], [300, 700], [0.5, 0.5]),
[[1.8, 0.0, 0.0, 0.7], 1.8, 0]),
('regression: decoupled second dominant',
([[0.5, 0.0], [0.0, 3.0]], [400, 600], [0.5, 0.5]),
[[0.4, 0.0, 0.0, 3.6], 3.6, 1]),
('regression: one-way coupling',
([[1.0, 0.0], [2.0, 1.5]], [200, 800], [0.2, 0.4]),
[[1.0, 0.0, 8.0, 3.0], 3.0, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None),
('regression: homogeneous mixing',
([[1.2, 1.2], [1.2, 1.2]], [250, 750], [0.4, 0.4]),
[[0.75, 0.75, 2.25, 2.25], 3.0, 1]),
('regression: unequal recovery',
([[0.8, 0.6], [0.3, 0.9]], [600, 400], [0.1, 0.5]),
[[4.8, 0.72, 1.2, 0.72], 5.001785, 0])],
[('regression: children and adults',
([[2.0, 0.5], [0.5, 1.0]], [300, 700], [0.25, 0.2]),
[[2.4, 0.75, 1.4, 3.5], 4.11297, 1]),
('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None),
('regression: homogeneous mixing',
([[1.2, 1.2], [1.2, 1.2]], [250, 750], [0.4, 0.4]),
[[0.75, 0.75, 2.25, 2.25], 3.0, 1]),
('regression: unequal recovery',
([[0.8, 0.6], [0.3, 0.9]], [600, 400], [0.1, 0.5]),
[[4.8, 0.72, 1.2, 0.72], 5.001785, 0]),
('regression: only cross contacts',
([[0.0, 2.0], [1.0, 0.0]], [300, 300], [0.25, 0.5]),
[[0.0, 2.0, 2.0, 0.0], 2.0, 0])],
[('regression: children and adults',
([[2.0, 0.5], [0.5, 1.0]], [300, 700], [0.25, 0.2]),
[[2.4, 0.75, 1.4, 3.5], 4.11297, 1]),
('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('regression: decoupled equal groups tie',
([[1.0, 0.0], [0.0, 1.0]], [500, 500], [0.5, 0.5]),
[[1.0, 0.0, 0.0, 1.0], 1.0, 0]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None),
('regression: unequal recovery',
([[0.8, 0.6], [0.3, 0.9]], [600, 400], [0.1, 0.5]),
[[4.8, 0.72, 1.2, 0.72], 5.001785, 0]),
('regression: only cross contacts',
([[0.0, 2.0], [1.0, 0.0]], [300, 300], [0.25, 0.5]),
[[0.0, 2.0, 2.0, 0.0], 2.0, 0])],
[('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('regression: decoupled equal groups tie',
([[1.0, 0.0], [0.0, 1.0]], [500, 500], [0.5, 0.5]),
[[1.0, 0.0, 0.0, 1.0], 1.0, 0]),
('regression: decoupled first dominant smaller group',
([[3.0, 0.0], [0.0, 0.5]], [300, 700], [0.5, 0.5]),
[[1.8, 0.0, 0.0, 0.7], 1.8, 0]),
('regression: decoupled second dominant',
([[0.5, 0.0], [0.0, 3.0]], [400, 600], [0.5, 0.5]),
[[0.4, 0.0, 0.0, 3.6], 3.6, 1]),
('regression: one-way coupling',
([[1.0, 0.0], [2.0, 1.5]], [200, 800], [0.2, 0.4]),
[[1.0, 0.0, 8.0, 3.0], 3.0, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None)]]
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: children and adults | [[2.4, 1.75, 0.6, 3.5], 4.11297, 0] | [[2.4, 0.75, 1.4, 3.5], 4.11297, 1] | Failed |
| regression: asymmetric core group | [[1.333333, 0.9, 0.333333, 1.35], 1.889453, 0] | [[1.333333, 0.1, 3.0, 1.35], 1.889453, 1] | Failed |
| regression: decoupled equal groups tie | [[1.0, 0.0, 0.0, 1.0], 1.0, 0] | [[1.0, 0.0, 0.0, 1.0], 1.0, 0] | Passed |
| regression: decoupled first dominant smaller group | [[1.8, 0.0, 0.0, 0.7], 1.8, 0] | [[1.8, 0.0, 0.0, 0.7], 1.8, 0] | Passed |
| regression: decoupled second dominant | [[0.4, 0.0, 0.0, 3.6], 3.6, 1] | [[0.4, 0.0, 0.0, 3.6], 3.6, 1] | Passed |
| control: empty population | None | None | Passed |
| control: invalid gamma | None | None | Passed |
SHA-256 / 767a1109f018ce7c04335e10c4e7f3a4fdc8f22d609b2309c29572c0385e2633
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(contact, sizes, gamma):
total = sum(sizes)
if total <= 0 or min(gamma) <= 0:
return None
k = [[contact[i][j] * sizes[i] / sizes[j] / gamma[j] for j in range(2)] for i in range(2)]
tr = k[0][0] + k[1][1]
det = k[0][0] * k[1][1] - k[0][1] * k[1][0]
disc = max(tr * tr - 4 * det, 0.0)
r0 = (tr + math.sqrt(disc)) / 2
if abs(k[0][1]) > 1e-12:
v = [k[0][1], r0 - k[0][0]]
elif abs(k[1][0]) > 1e-12:
v = [r0 - k[1][1], k[1][0]]
else:
v = [1.0, 0.0] if k[0][0] >= k[1][1] else [0.0, 1.0]
lead = 0 if abs(v[0]) >= abs(v[1]) else 1
return [[round(x, 6) for row in k for x in row], round(r0, 6), lead]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: children and adults',
([[2.0, 0.5], [0.5, 1.0]], [300, 700], [0.25, 0.2]),
[[2.4, 0.75, 1.4, 3.5], 4.11297, 1]),
('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('regression: decoupled equal groups tie',
([[1.0, 0.0], [0.0, 1.0]], [500, 500], [0.5, 0.5]),
[[1.0, 0.0, 0.0, 1.0], 1.0, 0]),
('regression: decoupled first dominant smaller group',
([[3.0, 0.0], [0.0, 0.5]], [300, 700], [0.5, 0.5]),
[[1.8, 0.0, 0.0, 0.7], 1.8, 0]),
('regression: decoupled second dominant',
([[0.5, 0.0], [0.0, 3.0]], [400, 600], [0.5, 0.5]),
[[0.4, 0.0, 0.0, 3.6], 3.6, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None)],
[('regression: decoupled first dominant smaller group',
([[3.0, 0.0], [0.0, 0.5]], [300, 700], [0.5, 0.5]),
[[1.8, 0.0, 0.0, 0.7], 1.8, 0]),
('regression: decoupled second dominant',
([[0.5, 0.0], [0.0, 3.0]], [400, 600], [0.5, 0.5]),
[[0.4, 0.0, 0.0, 3.6], 3.6, 1]),
('regression: one-way coupling',
([[1.0, 0.0], [2.0, 1.5]], [200, 800], [0.2, 0.4]),
[[1.0, 0.0, 8.0, 3.0], 3.0, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None),
('regression: homogeneous mixing',
([[1.2, 1.2], [1.2, 1.2]], [250, 750], [0.4, 0.4]),
[[0.75, 0.75, 2.25, 2.25], 3.0, 1]),
('regression: unequal recovery',
([[0.8, 0.6], [0.3, 0.9]], [600, 400], [0.1, 0.5]),
[[4.8, 0.72, 1.2, 0.72], 5.001785, 0])],
[('regression: children and adults',
([[2.0, 0.5], [0.5, 1.0]], [300, 700], [0.25, 0.2]),
[[2.4, 0.75, 1.4, 3.5], 4.11297, 1]),
('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None),
('regression: homogeneous mixing',
([[1.2, 1.2], [1.2, 1.2]], [250, 750], [0.4, 0.4]),
[[0.75, 0.75, 2.25, 2.25], 3.0, 1]),
('regression: unequal recovery',
([[0.8, 0.6], [0.3, 0.9]], [600, 400], [0.1, 0.5]),
[[4.8, 0.72, 1.2, 0.72], 5.001785, 0]),
('regression: only cross contacts',
([[0.0, 2.0], [1.0, 0.0]], [300, 300], [0.25, 0.5]),
[[0.0, 2.0, 2.0, 0.0], 2.0, 0])],
[('regression: children and adults',
([[2.0, 0.5], [0.5, 1.0]], [300, 700], [0.25, 0.2]),
[[2.4, 0.75, 1.4, 3.5], 4.11297, 1]),
('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('regression: decoupled equal groups tie',
([[1.0, 0.0], [0.0, 1.0]], [500, 500], [0.5, 0.5]),
[[1.0, 0.0, 0.0, 1.0], 1.0, 0]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None),
('regression: unequal recovery',
([[0.8, 0.6], [0.3, 0.9]], [600, 400], [0.1, 0.5]),
[[4.8, 0.72, 1.2, 0.72], 5.001785, 0]),
('regression: only cross contacts',
([[0.0, 2.0], [1.0, 0.0]], [300, 300], [0.25, 0.5]),
[[0.0, 2.0, 2.0, 0.0], 2.0, 0])],
[('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('regression: decoupled equal groups tie',
([[1.0, 0.0], [0.0, 1.0]], [500, 500], [0.5, 0.5]),
[[1.0, 0.0, 0.0, 1.0], 1.0, 0]),
('regression: decoupled first dominant smaller group',
([[3.0, 0.0], [0.0, 0.5]], [300, 700], [0.5, 0.5]),
[[1.8, 0.0, 0.0, 0.7], 1.8, 0]),
('regression: decoupled second dominant',
([[0.5, 0.0], [0.0, 3.0]], [400, 600], [0.5, 0.5]),
[[0.4, 0.0, 0.0, 3.6], 3.6, 1]),
('regression: one-way coupling',
([[1.0, 0.0], [2.0, 1.5]], [200, 800], [0.2, 0.4]),
[[1.0, 0.0, 8.0, 3.0], 3.0, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None)]]
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: children and adults | [[8.0, 1.071429, 4.666667, 5.0], 9.192582, 1] | [[2.4, 0.75, 1.4, 3.5], 4.11297, 1] | Failed |
| regression: asymmetric core group | [[13.333333, 0.111111, 30.0, 1.5], 13.608619, 1] | [[1.333333, 0.1, 3.0, 1.35], 1.889453, 1] | Failed |
| regression: decoupled equal groups tie | [[2.0, 0.0, 0.0, 2.0], 2.0, 0] | [[1.0, 0.0, 0.0, 1.0], 1.0, 0] | Failed |
| regression: decoupled first dominant smaller group | [[6.0, 0.0, 0.0, 1.0], 6.0, 0] | [[1.8, 0.0, 0.0, 0.7], 1.8, 0] | Failed |
| regression: decoupled second dominant | [[1.0, 0.0, 0.0, 6.0], 6.0, 1] | [[0.4, 0.0, 0.0, 3.6], 3.6, 1] | Failed |
| control: empty population | None | None | Passed |
| control: invalid gamma | None | None | Passed |
SHA-256 / 47dad490d4630c25c75a4024477404b93d200db1f6727cae969a56c4eb381a9c
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(contact, sizes, gamma):
total = sum(sizes)
if total <= 0 or min(gamma) <= 0:
return None
k = [[contact[i][j] * sizes[i] / total / gamma[j] for j in range(2)] for i in range(2)]
tr = k[0][0] + k[1][1]
det = k[0][0] * k[1][1] - k[0][1] * k[1][0]
disc = max(tr * tr - 4 * det, 0.0)
r0 = (tr + math.sqrt(disc)) / 2
if abs(k[0][1]) > 1e-12:
v = [k[0][1], r0 - k[0][0]]
elif abs(k[1][0]) > 1e-12:
v = [r0 - k[1][1], k[1][0]]
else:
v = [1.0, 0.0] if k[0][0] >= k[1][1] else [0.0, 1.0]
lead = 0 if abs(v[0]) >= abs(v[1]) else 1
return [[round(x, 6) for row in k for x in row], round(r0, 6), lead]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: children and adults',
([[2.0, 0.5], [0.5, 1.0]], [300, 700], [0.25, 0.2]),
[[2.4, 0.75, 1.4, 3.5], 4.11297, 1]),
('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('regression: decoupled equal groups tie',
([[1.0, 0.0], [0.0, 1.0]], [500, 500], [0.5, 0.5]),
[[1.0, 0.0, 0.0, 1.0], 1.0, 0]),
('regression: decoupled first dominant smaller group',
([[3.0, 0.0], [0.0, 0.5]], [300, 700], [0.5, 0.5]),
[[1.8, 0.0, 0.0, 0.7], 1.8, 0]),
('regression: decoupled second dominant',
([[0.5, 0.0], [0.0, 3.0]], [400, 600], [0.5, 0.5]),
[[0.4, 0.0, 0.0, 3.6], 3.6, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None)],
[('regression: decoupled first dominant smaller group',
([[3.0, 0.0], [0.0, 0.5]], [300, 700], [0.5, 0.5]),
[[1.8, 0.0, 0.0, 0.7], 1.8, 0]),
('regression: decoupled second dominant',
([[0.5, 0.0], [0.0, 3.0]], [400, 600], [0.5, 0.5]),
[[0.4, 0.0, 0.0, 3.6], 3.6, 1]),
('regression: one-way coupling',
([[1.0, 0.0], [2.0, 1.5]], [200, 800], [0.2, 0.4]),
[[1.0, 0.0, 8.0, 3.0], 3.0, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None),
('regression: homogeneous mixing',
([[1.2, 1.2], [1.2, 1.2]], [250, 750], [0.4, 0.4]),
[[0.75, 0.75, 2.25, 2.25], 3.0, 1]),
('regression: unequal recovery',
([[0.8, 0.6], [0.3, 0.9]], [600, 400], [0.1, 0.5]),
[[4.8, 0.72, 1.2, 0.72], 5.001785, 0])],
[('regression: children and adults',
([[2.0, 0.5], [0.5, 1.0]], [300, 700], [0.25, 0.2]),
[[2.4, 0.75, 1.4, 3.5], 4.11297, 1]),
('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None),
('regression: homogeneous mixing',
([[1.2, 1.2], [1.2, 1.2]], [250, 750], [0.4, 0.4]),
[[0.75, 0.75, 2.25, 2.25], 3.0, 1]),
('regression: unequal recovery',
([[0.8, 0.6], [0.3, 0.9]], [600, 400], [0.1, 0.5]),
[[4.8, 0.72, 1.2, 0.72], 5.001785, 0]),
('regression: only cross contacts',
([[0.0, 2.0], [1.0, 0.0]], [300, 300], [0.25, 0.5]),
[[0.0, 2.0, 2.0, 0.0], 2.0, 0])],
[('regression: children and adults',
([[2.0, 0.5], [0.5, 1.0]], [300, 700], [0.25, 0.2]),
[[2.4, 0.75, 1.4, 3.5], 4.11297, 1]),
('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('regression: decoupled equal groups tie',
([[1.0, 0.0], [0.0, 1.0]], [500, 500], [0.5, 0.5]),
[[1.0, 0.0, 0.0, 1.0], 1.0, 0]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None),
('regression: unequal recovery',
([[0.8, 0.6], [0.3, 0.9]], [600, 400], [0.1, 0.5]),
[[4.8, 0.72, 1.2, 0.72], 5.001785, 0]),
('regression: only cross contacts',
([[0.0, 2.0], [1.0, 0.0]], [300, 300], [0.25, 0.5]),
[[0.0, 2.0, 2.0, 0.0], 2.0, 0])],
[('regression: asymmetric core group',
([[4.0, 0.2], [1.0, 0.3]], [100, 900], [0.3, 0.2]),
[[1.333333, 0.1, 3.0, 1.35], 1.889453, 1]),
('regression: decoupled equal groups tie',
([[1.0, 0.0], [0.0, 1.0]], [500, 500], [0.5, 0.5]),
[[1.0, 0.0, 0.0, 1.0], 1.0, 0]),
('regression: decoupled first dominant smaller group',
([[3.0, 0.0], [0.0, 0.5]], [300, 700], [0.5, 0.5]),
[[1.8, 0.0, 0.0, 0.7], 1.8, 0]),
('regression: decoupled second dominant',
([[0.5, 0.0], [0.0, 3.0]], [400, 600], [0.5, 0.5]),
[[0.4, 0.0, 0.0, 3.6], 3.6, 1]),
('regression: one-way coupling',
([[1.0, 0.0], [2.0, 1.5]], [200, 800], [0.2, 0.4]),
[[1.0, 0.0, 8.0, 3.0], 3.0, 1]),
('control: empty population', ([[1.0, 1.0], [1.0, 1.0]], [0, 0], [0.2, 0.2]), None),
('control: invalid gamma', ([[1.0, 1.0], [1.0, 1.0]], [10, 10], [0.0, 0.2]), None)]]
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: children and adults | [[2.4, 0.75, 1.4, 3.5], 4.11297, 1] | [[2.4, 0.75, 1.4, 3.5], 4.11297, 1] | Passed |
| regression: asymmetric core group | [[1.333333, 0.1, 3.0, 1.35], 1.889453, 1] | [[1.333333, 0.1, 3.0, 1.35], 1.889453, 1] | Passed |
| regression: decoupled equal groups tie | [[1.0, 0.0, 0.0, 1.0], 1.0, 0] | [[1.0, 0.0, 0.0, 1.0], 1.0, 0] | Passed |
| regression: decoupled first dominant smaller group | [[1.8, 0.0, 0.0, 0.7], 1.8, 0] | [[1.8, 0.0, 0.0, 0.7], 1.8, 0] | Passed |
| regression: decoupled second dominant | [[0.4, 0.0, 0.0, 3.6], 3.6, 1] | [[0.4, 0.0, 0.0, 3.6], 3.6, 1] | Passed |
| control: empty population | None | None | Passed |
| control: invalid gamma | None | None | Passed |
SHA-256 / bc9e935ae9bf58bc6bdb0a6c52a386eff327dee1e78307d18d52c6b15261f10a
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.088810+00:00.
Case digest / 33eddcd2160e8961de9361ccf05c9013c481583345554c5ec358080a59551e8b