{"abstract":"Occupancy exceeds the fraction of habitat that still exists.","category":"Ecological population dynamics","checks":7,"contract":"Occupancy p: p += c*p*(1-D-p) - e*p each year, clamped to [0, 1-D]; equilibrium max(0, 1-D-e/c); return [equilibrium rounded 6, trajectory rounded 6]; None for c<=0, e<0 or D outside [0,1).","contract_signature":"c, e, destroyed, p0, years","evaluation_group":"w2-ecopop-levins-metapopulation","failed_approach":"Removing the ceiling allows occupancy above the available habitat.","family":"w2-ecopop-levins-metapopulation-occupancy-ceiling","id":"FA-65591","implementations":{"attempt":{"sha256":"86e65deae779fb89745d68a24aa549d468e5519dd8cf37d62e0178b5efd22ed8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(c, e, destroyed, p0, years):\n    if c <= 0 or e < 0 or not 0 <= destroyed < 1:\n        return None\n    eq = max(0.0, 1 - destroyed - e / c)\n    p = p0\n    traj = []\n    for _ in range(years):\n        p = p + c * p * (1 - destroyed - p) - e * p\n        p = max(p, 0.0)\n        traj.append(round(p, 6))\n    return [round(eq, 6), traj]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: butterfly network',\n   (0.5, 0.1, 0.2, 0.1, 6),\n   [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]]),\n  ('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('control: heavy destruction extinction',\n   (0.3, 0.2, 0.5, 0.3, 6),\n   [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: invalid destruction', (0.5, 0.1, 1.0, 0.1, 3), None),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]])],\n [('control: butterfly network',\n   (0.5, 0.1, 0.2, 0.1, 6),\n   [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]]),\n  ('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: invalid destruction', (0.5, 0.1, 1.0, 0.1, 3), None),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]]),\n  ('control: high turnover',\n   (1.2, 0.8, 0.25, 0.4, 5),\n   [0.083333, [0.248, 0.198995, 0.171376, 0.15327, 0.140407]])],\n [('control: butterfly network',\n   (0.5, 0.1, 0.2, 0.1, 6),\n   [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]]),\n  ('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('control: heavy destruction extinction',\n   (0.3, 0.2, 0.5, 0.3, 6),\n   [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]]),\n  ('control: high turnover',\n   (1.2, 0.8, 0.25, 0.4, 5),\n   [0.083333, [0.248, 0.198995, 0.171376, 0.15327, 0.140407]])],\n [('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('control: heavy destruction extinction',\n   (0.3, 0.2, 0.5, 0.3, 6),\n   [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: invalid destruction', (0.5, 0.1, 1.0, 0.1, 3), None),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]]),\n  ('control: high turnover',\n   (1.2, 0.8, 0.25, 0.4, 5),\n   [0.083333, [0.248, 0.198995, 0.171376, 0.15327, 0.140407]])],\n [('control: butterfly network',\n   (0.5, 0.1, 0.2, 0.1, 6),\n   [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]]),\n  ('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: invalid destruction', (0.5, 0.1, 1.0, 0.1, 3), None),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]]),\n  ('control: high turnover',\n   (1.2, 0.8, 0.25, 0.4, 5),\n   [0.083333, [0.248, 0.198995, 0.171376, 0.15327, 0.140407]])]]\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":"12a9cd7b9d7aa4a4ec8354fc00c09847b8c960d4bcf658b6282947cb4d62f547","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(c, e, destroyed, p0, years):\n    if c <= 0 or e < 0 or not 0 <= destroyed < 1:\n        return None\n    eq = max(0.0, 1 - destroyed - e / c)\n    p = p0\n    traj = []\n    for _ in range(years):\n        p = p + c * p * (1 - destroyed - p) - e * p\n        p = min(max(p, 0.0), 1.0)\n        traj.append(round(p, 6))\n    return [round(eq, 6), traj]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: butterfly network',\n   (0.5, 0.1, 0.2, 0.1, 6),\n   [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]]),\n  ('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('control: heavy destruction extinction',\n   (0.3, 0.2, 0.5, 0.3, 6),\n   [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: invalid destruction', (0.5, 0.1, 1.0, 0.1, 3), None),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]])],\n [('control: butterfly network',\n   (0.5, 0.1, 0.2, 0.1, 6),\n   [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]]),\n  ('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: invalid destruction', (0.5, 0.1, 1.0, 0.1, 3), None),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]]),\n  ('control: high turnover',\n   (1.2, 0.8, 0.25, 0.4, 5),\n   [0.083333, [0.248, 0.198995, 0.171376, 0.15327, 0.140407]])],\n [('control: butterfly network',\n   (0.5, 0.1, 0.2, 0.1, 6),\n   [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]]),\n  ('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('control: heavy destruction extinction',\n   (0.3, 0.2, 0.5, 0.3, 6),\n   [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]]),\n  ('control: high turnover',\n   (1.2, 0.8, 0.25, 0.4, 5),\n   [0.083333, [0.248, 0.198995, 0.171376, 0.15327, 0.140407]])],\n [('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('control: heavy destruction extinction',\n   (0.3, 0.2, 0.5, 0.3, 6),\n   [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: invalid destruction', (0.5, 0.1, 1.0, 0.1, 3), None),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]]),\n  ('control: high turnover',\n   (1.2, 0.8, 0.25, 0.4, 5),\n   [0.083333, [0.248, 0.198995, 0.171376, 0.15327, 0.140407]])],\n [('control: butterfly network',\n   (0.5, 0.1, 0.2, 0.1, 6),\n   [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]]),\n  ('control: intact habitat',\n   (0.4, 0.1, 0.0, 0.05, 5),\n   [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]]),\n  ('regression: overshoot clamp', (2.5, 0.05, 0.3, 0.6, 3), [0.68, [0.7, 0.665, 0.689937]]),\n  ('control: no extinction', (0.6, 0.0, 0.1, 0.2, 4), [0.9, [0.284, 0.388966, 0.508231, 0.627697]]),\n  ('control: invalid destruction', (0.5, 0.1, 1.0, 0.1, 3), None),\n  ('control: empty network', (0.5, 0.1, 0.2, 0.0, 3), [0.6, [0.0, 0.0, 0.0]]),\n  ('control: high turnover',\n   (1.2, 0.8, 0.25, 0.4, 5),\n   [0.083333, [0.248, 0.198995, 0.171376, 0.15327, 0.140407]])]]\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-levins-metapopulation-occupancy-ceiling","generated_at":"2026-09-29T14:47:35.336697+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.","root_cause":"Occupancy is capped at 1 rather than 1-D.","sha256":"8f73e0bb22544ef455c9cfdec0b5f5fcf4f954f60b14d719442096967f2c2c67","title":"Levins metapopulation with habitat destruction: occupancy ceiling · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":40.941,"exit_code":1,"observations":[{"actual":[0.6,[0.125,0.154687,0.18913,0.227984,0.27039,0.314952]],"check":"control: butterfly network","expected":[0.6,[0.125,0.154687,0.18913,0.227984,0.27039,0.314952]],"passed":true},{"actual":[0.75,[0.064,0.081562,0.103369,0.130106,0.162367]],"check":"control: intact habitat","expected":[0.75,[0.064,0.081562,0.103369,0.130106,0.162367]],"passed":true},{"actual":[0.0,[0.258,0.225131,0.198669,0.176895,0.158663,0.143177]],"check":"control: heavy destruction extinction","expected":[0.0,[0.258,0.225131,0.198669,0.176895,0.158663,0.143177]],"passed":true},{"actual":[0.68,[0.72,0.648,0.69984]],"check":"regression: overshoot clamp","expected":[0.68,[0.7,0.665,0.689937]],"passed":false},{"actual":[0.9,[0.284,0.388966,0.508231,0.627697]],"check":"control: no extinction","expected":[0.9,[0.284,0.388966,0.508231,0.627697]],"passed":true},{"actual":null,"check":"control: invalid destruction","expected":null,"passed":true},{"actual":[0.6,[0.0,0.0,0.0]],"check":"control: empty network","expected":[0.6,[0.0,0.0,0.0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: butterfly network\", \"actual\": [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]], \"expected\": [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]], \"passed\": true}, {\"check\": \"control: intact habitat\", \"actual\": [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]], \"expected\": [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]], \"passed\": true}, {\"check\": \"control: heavy destruction extinction\", \"actual\": [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]], \"expected\": [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]], \"passed\": true}, {\"check\": \"regression: overshoot clamp\", \"actual\": [0.68, [0.72, 0.648, 0.69984]], \"expected\": [0.68, [0.7, 0.665, 0.689937]], \"passed\": false}, {\"check\": \"control: no extinction\", \"actual\": [0.9, [0.284, 0.388966, 0.508231, 0.627697]], \"expected\": [0.9, [0.284, 0.388966, 0.508231, 0.627697]], \"passed\": true}, {\"check\": \"control: invalid destruction\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"control: empty network\", \"actual\": [0.6, [0.0, 0.0, 0.0]], \"expected\": [0.6, [0.0, 0.0, 0.0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.175,"exit_code":1,"observations":[{"actual":[0.6,[0.125,0.154687,0.18913,0.227984,0.27039,0.314952]],"check":"control: butterfly network","expected":[0.6,[0.125,0.154687,0.18913,0.227984,0.27039,0.314952]],"passed":true},{"actual":[0.75,[0.064,0.081562,0.103369,0.130106,0.162367]],"check":"control: intact habitat","expected":[0.75,[0.064,0.081562,0.103369,0.130106,0.162367]],"passed":true},{"actual":[0.0,[0.258,0.225131,0.198669,0.176895,0.158663,0.143177]],"check":"control: heavy destruction extinction","expected":[0.0,[0.258,0.225131,0.198669,0.176895,0.158663,0.143177]],"passed":true},{"actual":[0.68,[0.72,0.648,0.69984]],"check":"regression: overshoot clamp","expected":[0.68,[0.7,0.665,0.689937]],"passed":false},{"actual":[0.9,[0.284,0.388966,0.508231,0.627697]],"check":"control: no extinction","expected":[0.9,[0.284,0.388966,0.508231,0.627697]],"passed":true},{"actual":null,"check":"control: invalid destruction","expected":null,"passed":true},{"actual":[0.6,[0.0,0.0,0.0]],"check":"control: empty network","expected":[0.6,[0.0,0.0,0.0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: butterfly network\", \"actual\": [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]], \"expected\": [0.6, [0.125, 0.154687, 0.18913, 0.227984, 0.27039, 0.314952]], \"passed\": true}, {\"check\": \"control: intact habitat\", \"actual\": [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]], \"expected\": [0.75, [0.064, 0.081562, 0.103369, 0.130106, 0.162367]], \"passed\": true}, {\"check\": \"control: heavy destruction extinction\", \"actual\": [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]], \"expected\": [0.0, [0.258, 0.225131, 0.198669, 0.176895, 0.158663, 0.143177]], \"passed\": true}, {\"check\": \"regression: overshoot clamp\", \"actual\": [0.68, [0.72, 0.648, 0.69984]], \"expected\": [0.68, [0.7, 0.665, 0.689937]], \"passed\": false}, {\"check\": \"control: no extinction\", \"actual\": [0.9, [0.284, 0.388966, 0.508231, 0.627697]], \"expected\": [0.9, [0.284, 0.388966, 0.508231, 0.627697]], \"passed\": true}, {\"check\": \"control: invalid destruction\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"control: empty network\", \"actual\": [0.6, [0.0, 0.0, 0.0]], \"expected\": [0.6, [0.0, 0.0, 0.0]], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}