{"abstract":"The plus group loses all incoming recruits from the previous class.","category":"Ecological population dynamics","checks":7,"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].","evaluation_group":"w2-ecopop-leslie-projection","failed_approach":"Retaining the plus group without mortality makes old animals immortal.","family":"w2-ecopop-leslie-projection-plus-group-retention","id":"FA-65461","implementations":{"attempt":{"sha256":"40d0489042d09fa0490caad50533fede65a5a10d4f4364e923386a6546c20b6d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(fecundity, survival, n0, years, plus_group):\n    m = len(n0)\n    n = [float(x) for x in n0]\n    ratio = None\n    prev_total = sum(n)\n    for _ in range(years):\n        new = [0.0] * m\n        new[0] = sum(fecundity[i] * n[i] for i in range(m))\n        for i in range(m - 1):\n            new[i + 1] = survival[i] * n[i]\n        if plus_group:\n            new[m - 1] += n[m - 1]\n        prev_total = sum(n)\n        n = new\n        ratio = sum(n) / prev_total if prev_total > 0 else None\n    return [[round(x, 4) for x in n], round(sum(n), 4), None if ratio is None else round(ratio, 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067])],\n [('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],\n [('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],\n [('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],\n [('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"be97f7c93e2fbdbdd601c5752832468a332b01d4210045eca9aaa1a5783671d6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(fecundity, survival, n0, years, plus_group):\n    m = len(n0)\n    n = [float(x) for x in n0]\n    ratio = None\n    prev_total = sum(n)\n    for _ in range(years):\n        new = [0.0] * m\n        new[0] = sum(fecundity[i] * n[i] for i in range(m))\n        for i in range(m - 1):\n            new[i + 1] = survival[i] * n[i]\n        if plus_group:\n            new[m - 1] = survival[m - 1] * n[m - 1]\n        prev_total = sum(n)\n        n = new\n        ratio = sum(n) / prev_total if prev_total > 0 else None\n    return [[round(x, 4) for x in n], round(sum(n), 4), None if ratio is None else round(ratio, 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067])],\n [('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],\n [('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],\n [('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],\n [('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"ba2a54874deb2b8d9c0482c561c0fc6c11194fdaf712bffdcf671387ada35eb3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(fecundity, survival, n0, years, plus_group):\n    m = len(n0)\n    n = [float(x) for x in n0]\n    ratio = None\n    prev_total = sum(n)\n    for _ in range(years):\n        new = [0.0] * m\n        new[0] = sum(fecundity[i] * n[i] for i in range(m))\n        for i in range(m - 1):\n            new[i + 1] = survival[i] * n[i]\n        if plus_group:\n            new[m - 1] += survival[m - 1] * n[m - 1]\n        prev_total = sum(n)\n        n = new\n        ratio = sum(n) / prev_total if prev_total > 0 else None\n    return [[round(x, 4) for x in n], round(sum(n), 4), None if ratio is None else round(ratio, 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067])],\n [('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],\n [('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],\n [('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('control: zero years', ([0.0, 1.0], [0.5], [10, 10], 0, False), [[10.0, 10.0], 20.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])],\n [('control: three-class bird',\n   ([0.0, 1.2, 1.8], [0.4, 0.7], [100, 50, 20], 3, False),\n   [[96.48, 44.4, 26.88], 167.76, 0.94566]),\n  ('regression: plus group fish',\n   ([0.0, 0.5, 2.0], [0.5, 0.6, 0.8], [200, 80, 40], 4, True),\n   [[322.9, 139.0, 171.16], 633.06, 1.221652]),\n  ('control: extinct population', ([0.0, 1.0], [0.5], [0, 0], 2, False), [[0.0, 0.0], 0.0, None]),\n  ('regression: juvenile breeders',\n   ([0.3, 0.9, 1.1], [0.6, 0.5, 0.2], [50, 30, 10], 3, True),\n   [[67.34, 36.96, 19.58], 123.88, 1.10805]),\n  ('control: single step',\n   ([0.2, 1.5, 0.0], [0.8, 0.3], [10, 20, 30], 1, False),\n   [[32.0, 8.0, 6.0], 46.0, 0.766667]),\n  ('regression: senescent plus group',\n   ([0.0, 0.0, 3.0], [0.9, 0.9, 0.5], [0, 0, 10], 3, True),\n   [[7.5, 13.5, 25.55], 46.55, 1.046067]),\n  ('control: four classes',\n   ([0.0, 0.0, 1.0, 2.0], [0.5, 0.6, 0.7], [40, 30, 20, 10], 5, False),\n   [[30.6, 14.4, 11.16, 9.66], 65.82, 0.94569])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-ecopop-leslie-projection-plus-group-retention","generated_at":"2026-09-29T14:47:34.055030+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Population projections set harvest quotas, conservation status and pest-control timing; a wrong update order, boundary or rate conversion silently changes management advice.","repair":"Restore the plus group retention rule: `new[m - 1] += survival[m - 1] * n[m - 1]`.","root_cause":"Plus-group survivors overwrite the individuals ageing into the last class.","sha256":"4eac1b740c1e12220a5cfa6541a30c6760616890df80e995bb6b8566a977057e","title":"Leslie matrix projection with optional plus group: plus group retention · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.823,"exit_code":1,"observations":[{"actual":[[96.48,44.4,26.88],167.76,0.94566],"check":"control: three-class bird","expected":[[96.48,44.4,26.88],167.76,0.94566],"passed":true},{"actual":[[424.5,163.0,251.8],839.3,1.347191],"check":"regression: plus group fish","expected":[[322.9,139.0,171.16],633.06,1.221652],"passed":false},{"actual":[[0.0,0.0],0.0,null],"check":"control: extinct population","expected":[[0.0,0.0],0.0,null],"passed":true},{"actual":[[10.0,10.0],20.0,null],"check":"control: zero years","expected":[[10.0,10.0],20.0,null],"passed":true},{"actual":[[93.74,42.24,55.9],191.88,1.349367],"check":"regression: juvenile breeders","expected":[[67.34,36.96,19.58],123.88,1.10805],"passed":false},{"actual":[[32.0,8.0,6.0],46.0,0.766667],"check":"control: single step","expected":[[32.0,8.0,6.0],46.0,0.766667],"passed":true},{"actual":[[30.0,27.0,34.3],91.3,1.362687],"check":"regression: senescent plus group","expected":[[7.5,13.5,25.55],46.55,1.046067],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: three-class bird\", \"actual\": [[96.48, 44.4, 26.88], 167.76, 0.94566], \"expected\": [[96.48, 44.4, 26.88], 167.76, 0.94566], \"passed\": true}, {\"check\": \"regression: plus group fish\", \"actual\": [[424.5, 163.0, 251.8], 839.3, 1.347191], \"expected\": [[322.9, 139.0, 171.16], 633.06, 1.221652], \"passed\": false}, {\"check\": \"control: extinct population\", \"actual\": [[0.0, 0.0], 0.0, null], \"expected\": [[0.0, 0.0], 0.0, null], \"passed\": true}, {\"check\": \"control: zero years\", \"actual\": [[10.0, 10.0], 20.0, null], \"expected\": [[10.0, 10.0], 20.0, null], \"passed\": true}, {\"check\": \"regression: juvenile breeders\", \"actual\": [[93.74, 42.24, 55.9], 191.88, 1.349367], \"expected\": [[67.34, 36.96, 19.58], 123.88, 1.10805], \"passed\": false}, {\"check\": \"control: single step\", \"actual\": [[32.0, 8.0, 6.0], 46.0, 0.766667], \"expected\": [[32.0, 8.0, 6.0], 46.0, 0.766667], \"passed\": true}, {\"check\": \"regression: senescent plus group\", \"actual\": [[30.0, 27.0, 34.3], 91.3, 1.362687], \"expected\": [[7.5, 13.5, 25.55], 46.55, 1.046067], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.868,"exit_code":1,"observations":[{"actual":[[96.48,44.4,26.88],167.76,0.94566],"check":"control: three-class bird","expected":[[96.48,44.4,26.88],167.76,0.94566],"passed":true},{"actual":[[69.46,40.6,16.384],126.444,0.796849],"check":"regression: plus group fish","expected":[[322.9,139.0,171.16],633.06,1.221652],"passed":false},{"actual":[[0.0,0.0],0.0,null],"check":"control: extinct population","expected":[[0.0,0.0],0.0,null],"passed":true},{"actual":[[10.0,10.0],20.0,null],"check":"control: zero years","expected":[[10.0,10.0],20.0,null],"passed":true},{"actual":[[42.59,27.06,0.08],69.73,0.90207],"check":"regression: juvenile breeders","expected":[[67.34,36.96,19.58],123.88,1.10805],"passed":false},{"actual":[[32.0,8.0,6.0],46.0,0.766667],"check":"control: single step","expected":[[32.0,8.0,6.0],46.0,0.766667],"passed":true},{"actual":[[7.5,13.5,1.25],22.25,0.5],"check":"regression: senescent plus group","expected":[[7.5,13.5,25.55],46.55,1.046067],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: three-class bird\", \"actual\": [[96.48, 44.4, 26.88], 167.76, 0.94566], \"expected\": [[96.48, 44.4, 26.88], 167.76, 0.94566], \"passed\": true}, {\"check\": \"regression: plus group fish\", \"actual\": [[69.46, 40.6, 16.384], 126.444, 0.796849], \"expected\": [[322.9, 139.0, 171.16], 633.06, 1.221652], \"passed\": false}, {\"check\": \"control: extinct population\", \"actual\": [[0.0, 0.0], 0.0, null], \"expected\": [[0.0, 0.0], 0.0, null], \"passed\": true}, {\"check\": \"control: zero years\", \"actual\": [[10.0, 10.0], 20.0, null], \"expected\": [[10.0, 10.0], 20.0, null], \"passed\": true}, {\"check\": \"regression: juvenile breeders\", \"actual\": [[42.59, 27.06, 0.08], 69.73, 0.90207], \"expected\": [[67.34, 36.96, 19.58], 123.88, 1.10805], \"passed\": false}, {\"check\": \"control: single step\", \"actual\": [[32.0, 8.0, 6.0], 46.0, 0.766667], \"expected\": [[32.0, 8.0, 6.0], 46.0, 0.766667], \"passed\": true}, {\"check\": \"regression: senescent plus group\", \"actual\": [[7.5, 13.5, 1.25], 22.25, 0.5], \"expected\": [[7.5, 13.5, 25.55], 46.55, 1.046067], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.516,"exit_code":0,"observations":[{"actual":[[96.48,44.4,26.88],167.76,0.94566],"check":"control: three-class bird","expected":[[96.48,44.4,26.88],167.76,0.94566],"passed":true},{"actual":[[322.9,139.0,171.16],633.06,1.221652],"check":"regression: plus group fish","expected":[[322.9,139.0,171.16],633.06,1.221652],"passed":true},{"actual":[[0.0,0.0],0.0,null],"check":"control: extinct population","expected":[[0.0,0.0],0.0,null],"passed":true},{"actual":[[10.0,10.0],20.0,null],"check":"control: zero years","expected":[[10.0,10.0],20.0,null],"passed":true},{"actual":[[67.34,36.96,19.58],123.88,1.10805],"check":"regression: juvenile breeders","expected":[[67.34,36.96,19.58],123.88,1.10805],"passed":true},{"actual":[[32.0,8.0,6.0],46.0,0.766667],"check":"control: single step","expected":[[32.0,8.0,6.0],46.0,0.766667],"passed":true},{"actual":[[7.5,13.5,25.55],46.55,1.046067],"check":"regression: senescent plus group","expected":[[7.5,13.5,25.55],46.55,1.046067],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: three-class bird\", \"actual\": [[96.48, 44.4, 26.88], 167.76, 0.94566], \"expected\": [[96.48, 44.4, 26.88], 167.76, 0.94566], \"passed\": true}, {\"check\": \"regression: plus group fish\", \"actual\": [[322.9, 139.0, 171.16], 633.06, 1.221652], \"expected\": [[322.9, 139.0, 171.16], 633.06, 1.221652], \"passed\": true}, {\"check\": \"control: extinct population\", \"actual\": [[0.0, 0.0], 0.0, null], \"expected\": [[0.0, 0.0], 0.0, null], \"passed\": true}, {\"check\": \"control: zero years\", \"actual\": [[10.0, 10.0], 20.0, null], \"expected\": [[10.0, 10.0], 20.0, null], \"passed\": true}, {\"check\": \"regression: juvenile breeders\", \"actual\": [[67.34, 36.96, 19.58], 123.88, 1.10805], \"expected\": [[67.34, 36.96, 19.58], 123.88, 1.10805], \"passed\": true}, {\"check\": \"control: single step\", \"actual\": [[32.0, 8.0, 6.0], 46.0, 0.766667], \"expected\": [[32.0, 8.0, 6.0], 46.0, 0.766667], \"passed\": true}, {\"check\": \"regression: senescent plus group\", \"actual\": [[7.5, 13.5, 25.55], 46.55, 1.046067], \"expected\": [[7.5, 13.5, 25.55], 46.55, 1.046067], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}