FAILURE MAP
← Case archive

FA-65466 / Ecological population dynamics / Open access

Leslie matrix projection with optional plus group: growth ratio base · case 01

The reported annual growth ratio is really growth since the initial year, or a stale total.

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

ROOT CAUSE

The previous-year total is never refreshed before advancing.

VERIFIED REPAIR

Restore the growth ratio base rule: `prev_total = sum(n) / n = new`.

Unsuccessful approach: Taking the total after advancing makes the ratio identically one.

Case contract

Births new[0] = sum f_i*n_i; survivors new[i+1] = s_i*n_i; with plus_group the last class also retains s_last*n_last; ratio is total(t)/total(t-1) of the final year (None if the previous total was 0 or no years); return [final vector rounded 4, total rounded 4, ratio rounded 6].

Why this case matters

Population projections set harvest quotas, conservation status and pest-control timing; a wrong update order, boundary or rate conversion silently changes management advice.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(fecundity, survival, n0, years, plus_group):
    m = len(n0)
    n = [float(x) for x in n0]
    ratio = None
    prev_total = sum(n)
    for _ in range(years):
        new = [0.0] * m
        new[0] = sum(fecundity[i] * n[i] for i in range(m))
        for i in range(m - 1):
            new[i + 1] = survival[i] * n[i]
        if plus_group:
            new[m - 1] += survival[m - 1] * n[m - 1]
        n = new
        ratio = sum(n) / prev_total if prev_total > 0 else None
    return [[round(x, 4) for x in n], round(sum(n), 4), None if ratio is None else round(ratio, 6)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('regression: plus group fish',
   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),
   [[322.9, 139.0, 171.16], 633.06, 1.221652]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067])],
 [('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],
 [('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('regression: plus group fish',
   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),
   [[322.9, 139.0, 171.16], 633.06, 1.221652]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],
 [('regression: plus group fish',
   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),
   [[322.9, 139.0, 171.16], 633.06, 1.221652]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],
 [('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])]]
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
regression: three-class bird[[96.48, 44.4, 26.88], 167.76, 0.986824][[96.48, 44.4, 26.88], 167.76, 0.94566]Failed
regression: plus group fish[[322.9, 139.0, 171.16], 633.06, 1.978312][[322.9, 139.0, 171.16], 633.06, 1.221652]Failed
control: extinct population[[0.0, 0.0], 0.0, None][[0.0, 0.0], 0.0, None]Passed
control: zero years[[10.0, 10.0], 20.0, None][[10.0, 10.0], 20.0, None]Passed
regression: juvenile breeders[[67.34, 36.96, 19.58], 123.88, 1.376444][[67.34, 36.96, 19.58], 123.88, 1.10805]Failed
regression: single step[[32.0, 8.0, 6.0], 46.0, 0.766667][[32.0, 8.0, 6.0], 46.0, 0.766667]Passed
regression: senescent plus group[[7.5, 13.5, 25.55], 46.55, 4.655][[7.5, 13.5, 25.55], 46.55, 1.046067]Failed

SHA-256 / 2c711ab9f911a8d65f6d808c87d1e087b6f74450805213d97335ceff7512a15d

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(fecundity, survival, n0, years, plus_group):
    m = len(n0)
    n = [float(x) for x in n0]
    ratio = None
    prev_total = sum(n)
    for _ in range(years):
        new = [0.0] * m
        new[0] = sum(fecundity[i] * n[i] for i in range(m))
        for i in range(m - 1):
            new[i + 1] = survival[i] * n[i]
        if plus_group:
            new[m - 1] += survival[m - 1] * n[m - 1]
        n = new
        prev_total = sum(n)
        ratio = sum(n) / prev_total if prev_total > 0 else None
    return [[round(x, 4) for x in n], round(sum(n), 4), None if ratio is None else round(ratio, 6)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('regression: plus group fish',
   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),
   [[322.9, 139.0, 171.16], 633.06, 1.221652]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067])],
 [('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],
 [('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('regression: plus group fish',
   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),
   [[322.9, 139.0, 171.16], 633.06, 1.221652]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],
 [('regression: plus group fish',
   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),
   [[322.9, 139.0, 171.16], 633.06, 1.221652]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],
 [('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])]]
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
regression: three-class bird[[96.48, 44.4, 26.88], 167.76, 1.0][[96.48, 44.4, 26.88], 167.76, 0.94566]Failed
regression: plus group fish[[322.9, 139.0, 171.16], 633.06, 1.0][[322.9, 139.0, 171.16], 633.06, 1.221652]Failed
control: extinct population[[0.0, 0.0], 0.0, None][[0.0, 0.0], 0.0, None]Passed
control: zero years[[10.0, 10.0], 20.0, None][[10.0, 10.0], 20.0, None]Passed
regression: juvenile breeders[[67.34, 36.96, 19.58], 123.88, 1.0][[67.34, 36.96, 19.58], 123.88, 1.10805]Failed
regression: single step[[32.0, 8.0, 6.0], 46.0, 1.0][[32.0, 8.0, 6.0], 46.0, 0.766667]Failed
regression: senescent plus group[[7.5, 13.5, 25.55], 46.55, 1.0][[7.5, 13.5, 25.55], 46.55, 1.046067]Failed

SHA-256 / 1e50e9a90e87a96f0926e5af08444fd5d330f57cb0ba1c0c7c92e51f8e5a1235

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(fecundity, survival, n0, years, plus_group):
    m = len(n0)
    n = [float(x) for x in n0]
    ratio = None
    prev_total = sum(n)
    for _ in range(years):
        new = [0.0] * m
        new[0] = sum(fecundity[i] * n[i] for i in range(m))
        for i in range(m - 1):
            new[i + 1] = survival[i] * n[i]
        if plus_group:
            new[m - 1] += survival[m - 1] * n[m - 1]
        prev_total = sum(n)
        n = new
        ratio = sum(n) / prev_total if prev_total > 0 else None
    return [[round(x, 4) for x in n], round(sum(n), 4), None if ratio is None else round(ratio, 6)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('regression: plus group fish',
   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),
   [[322.9, 139.0, 171.16], 633.06, 1.221652]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067])],
 [('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],
 [('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('regression: plus group fish',
   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),
   [[322.9, 139.0, 171.16], 633.06, 1.221652]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],
 [('regression: plus group fish',
   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),
   [[322.9, 139.0, 171.16], 633.06, 1.221652]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],
 [('regression: three-class bird',
   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),
   [[96.48, 44.4, 26.88], 167.76, 0.94566]),
  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),
  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),
  ('regression: juvenile breeders',
   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),
   [[67.34, 36.96, 19.58], 123.88, 1.10805]),
  ('regression: single step',
   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),
   [[32.0, 8.0, 6.0], 46.0, 0.766667]),
  ('regression: senescent plus group',
   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),
   [[7.5, 13.5, 25.55], 46.55, 1.046067]),
  ('regression: four classes',
   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),
   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])]]
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
regression: three-class bird[[96.48, 44.4, 26.88], 167.76, 0.94566][[96.48, 44.4, 26.88], 167.76, 0.94566]Passed
regression: plus group fish[[322.9, 139.0, 171.16], 633.06, 1.221652][[322.9, 139.0, 171.16], 633.06, 1.221652]Passed
control: extinct population[[0.0, 0.0], 0.0, None][[0.0, 0.0], 0.0, None]Passed
control: zero years[[10.0, 10.0], 20.0, None][[10.0, 10.0], 20.0, None]Passed
regression: juvenile breeders[[67.34, 36.96, 19.58], 123.88, 1.10805][[67.34, 36.96, 19.58], 123.88, 1.10805]Passed
regression: single step[[32.0, 8.0, 6.0], 46.0, 0.766667][[32.0, 8.0, 6.0], 46.0, 0.766667]Passed
regression: senescent plus group[[7.5, 13.5, 25.55], 46.55, 1.046067][[7.5, 13.5, 25.55], 46.55, 1.046067]Passed

SHA-256 / 6696b5dc59d2269be757fccd60d44e8a45a5f2df2b9898459461058bf9db7e4a

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:34.135621+00:00.

Case digest / d102e6ed78c6fc0a1dfcc5871c34da487489c0c4673173a72678ae45a3bed96c