{"abstract":"A population with zero intrinsic growth is reported as monotone convergence.","category":"Ecological population dynamics","checks":7,"contract":"Regime by r: r<0 decline, r==0 neutral, 0<r<=1 monotone, 1<r<2 damped, 2<=r<2.526 cycle2, else complex; trajectory N[t+1]=N*exp(r*(1-N/K)) rounded 4; None for K<=0 or N0<0.","contract_signature":"r, k, n0, years","evaluation_group":"w2-ecopop-ricker-regime","failed_approach":"Requiring an occupied patch makes an empty neutral patch monotone.","family":"w2-ecopop-ricker-regime-neutral-growth","id":"FA-65376","implementations":{"attempt":{"sha256":"06d7bd3a6ab55ed0a774d5d47e70c90dc04a88ed165615b7497f446a49bc1f7d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(r, k, n0, years):\n    if k <= 0 or n0 < 0:\n        return None\n    if r < 0:\n        regime = 'decline'\n    elif r == 0 and n0 > 0:\n        regime = 'neutral'\n    elif r <= 1:\n        regime = 'monotone'\n    elif r < 2:\n        regime = 'damped'\n    elif r < 2.526:\n        regime = 'cycle2'\n    else:\n        regime = 'complex'\n    n = float(n0)\n    traj = []\n    for _ in range(years):\n        n = n * math.exp(r * (1 - n / k))\n        traj.append(round(n, 4))\n    return [regime, traj]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: salmon stock damped',\n   (1.5, 1000, 200, 6),\n   ['damped', [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]]),\n  ('control: superstable r one',\n   (1.0, 500, 100, 5),\n   ['monotone', [222.5541, 387.6342, 485.3128, 499.78, 500.0]]),\n  ('control: two cycle',\n   (2.2, 100, 30, 6),\n   ['cycle2', [139.9377, 58.1234, 146.0361, 53.0407, 149.0324, 50.6759]]),\n  ('control: period doubling onset exactly 2',\n   (2.0, 100, 40, 5),\n   ['cycle2', [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]]),\n  ('control: near two', (1.96, 100, 40, 4), ['damped', [129.6553, 72.5035, 124.2836, 77.2161]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]])],\n [('control: period doubling onset exactly 2',\n   (2.0, 100, 40, 5),\n   ['cycle2', [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]]),\n  ('control: near two', (1.96, 100, 40, 4), ['damped', [129.6553, 72.5035, 124.2836, 77.2161]]),\n  ('control: chaotic', (3.0, 100, 10, 5), ['complex', [148.7973, 34.421, 246.1736, 3.0674, 56.1939]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]]),\n  ('control: declining', (-0.3, 100, 80, 4), ['decline', [75.3412, 69.9688, 63.9407, 57.3848]]),\n  ('control: invalid capacity', (1.0, 0, 10, 3), None)],\n [('control: salmon stock damped',\n   (1.5, 1000, 200, 6),\n   ['damped', [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]]),\n  ('control: declining', (-0.3, 100, 80, 4), ['decline', [75.3412, 69.9688, 63.9407, 57.3848]]),\n  ('control: invalid capacity', (1.0, 0, 10, 3), None),\n  ('control: weak growth above K',\n   (0.5, 200, 350, 5),\n   ['monotone', [240.5512, 217.36, 208.1284, 203.9417, 201.9419]]),\n  ('control: weak growth below K',\n   (0.7, 200, 20, 5),\n   ['monotone', [37.5522, 66.3073, 105.8713, 147.1827, 177.0682]])],\n [('control: salmon stock damped',\n   (1.5, 1000, 200, 6),\n   ['damped', [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]]),\n  ('control: superstable r one',\n   (1.0, 500, 100, 5),\n   ['monotone', [222.5541, 387.6342, 485.3128, 499.78, 500.0]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]]),\n  ('control: invalid capacity', (1.0, 0, 10, 3), None),\n  ('control: weak growth above K',\n   (0.5, 200, 350, 5),\n   ['monotone', [240.5512, 217.36, 208.1284, 203.9417, 201.9419]]),\n  ('control: weak growth below K',\n   (0.7, 200, 20, 5),\n   ['monotone', [37.5522, 66.3073, 105.8713, 147.1827, 177.0682]])],\n [('control: salmon stock damped',\n   (1.5, 1000, 200, 6),\n   ['damped', [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]]),\n  ('control: superstable r one',\n   (1.0, 500, 100, 5),\n   ['monotone', [222.5541, 387.6342, 485.3128, 499.78, 500.0]]),\n  ('control: two cycle',\n   (2.2, 100, 30, 6),\n   ['cycle2', [139.9377, 58.1234, 146.0361, 53.0407, 149.0324, 50.6759]]),\n  ('control: period doubling onset exactly 2',\n   (2.0, 100, 40, 5),\n   ['cycle2', [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]]),\n  ('control: near two', (1.96, 100, 40, 4), ['damped', [129.6553, 72.5035, 124.2836, 77.2161]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]])]]\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":"5d50b002019b58b5c881edb19ce63bf66d654328f171c8b6bf8cf35176fbc420","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(r, k, n0, years):\n    if k <= 0 or n0 < 0:\n        return None\n    if r < 0:\n        regime = 'decline'\n    elif r <= 1:\n        regime = 'monotone'\n    elif r < 2:\n        regime = 'damped'\n    elif r < 2.526:\n        regime = 'cycle2'\n    else:\n        regime = 'complex'\n    n = float(n0)\n    traj = []\n    for _ in range(years):\n        n = n * math.exp(r * (1 - n / k))\n        traj.append(round(n, 4))\n    return [regime, traj]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: salmon stock damped',\n   (1.5, 1000, 200, 6),\n   ['damped', [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]]),\n  ('control: superstable r one',\n   (1.0, 500, 100, 5),\n   ['monotone', [222.5541, 387.6342, 485.3128, 499.78, 500.0]]),\n  ('control: two cycle',\n   (2.2, 100, 30, 6),\n   ['cycle2', [139.9377, 58.1234, 146.0361, 53.0407, 149.0324, 50.6759]]),\n  ('control: period doubling onset exactly 2',\n   (2.0, 100, 40, 5),\n   ['cycle2', [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]]),\n  ('control: near two', (1.96, 100, 40, 4), ['damped', [129.6553, 72.5035, 124.2836, 77.2161]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]])],\n [('control: period doubling onset exactly 2',\n   (2.0, 100, 40, 5),\n   ['cycle2', [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]]),\n  ('control: near two', (1.96, 100, 40, 4), ['damped', [129.6553, 72.5035, 124.2836, 77.2161]]),\n  ('control: chaotic', (3.0, 100, 10, 5), ['complex', [148.7973, 34.421, 246.1736, 3.0674, 56.1939]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]]),\n  ('control: declining', (-0.3, 100, 80, 4), ['decline', [75.3412, 69.9688, 63.9407, 57.3848]]),\n  ('control: invalid capacity', (1.0, 0, 10, 3), None)],\n [('control: salmon stock damped',\n   (1.5, 1000, 200, 6),\n   ['damped', [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]]),\n  ('control: declining', (-0.3, 100, 80, 4), ['decline', [75.3412, 69.9688, 63.9407, 57.3848]]),\n  ('control: invalid capacity', (1.0, 0, 10, 3), None),\n  ('control: weak growth above K',\n   (0.5, 200, 350, 5),\n   ['monotone', [240.5512, 217.36, 208.1284, 203.9417, 201.9419]]),\n  ('control: weak growth below K',\n   (0.7, 200, 20, 5),\n   ['monotone', [37.5522, 66.3073, 105.8713, 147.1827, 177.0682]])],\n [('control: salmon stock damped',\n   (1.5, 1000, 200, 6),\n   ['damped', [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]]),\n  ('control: superstable r one',\n   (1.0, 500, 100, 5),\n   ['monotone', [222.5541, 387.6342, 485.3128, 499.78, 500.0]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]]),\n  ('control: invalid capacity', (1.0, 0, 10, 3), None),\n  ('control: weak growth above K',\n   (0.5, 200, 350, 5),\n   ['monotone', [240.5512, 217.36, 208.1284, 203.9417, 201.9419]]),\n  ('control: weak growth below K',\n   (0.7, 200, 20, 5),\n   ['monotone', [37.5522, 66.3073, 105.8713, 147.1827, 177.0682]])],\n [('control: salmon stock damped',\n   (1.5, 1000, 200, 6),\n   ['damped', [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]]),\n  ('control: superstable r one',\n   (1.0, 500, 100, 5),\n   ['monotone', [222.5541, 387.6342, 485.3128, 499.78, 500.0]]),\n  ('control: two cycle',\n   (2.2, 100, 30, 6),\n   ['cycle2', [139.9377, 58.1234, 146.0361, 53.0407, 149.0324, 50.6759]]),\n  ('control: period doubling onset exactly 2',\n   (2.0, 100, 40, 5),\n   ['cycle2', [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]]),\n  ('control: near two', (1.96, 100, 40, 4), ['damped', [129.6553, 72.5035, 124.2836, 77.2161]]),\n  ('regression: neutral', (0.0, 100, 60, 3), ['neutral', [60.0, 60.0, 60.0]]),\n  ('regression: neutral empty patch', (0.0, 100, 0, 3), ['neutral', [0.0, 0.0, 0.0]])]]\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-ricker-regime-neutral-growth","generated_at":"2026-09-29T14:47:33.376641+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":"The r==0 neutral case is missing and falls into the monotone band.","sha256":"c402e6ae004fe9d4f562c07e868a16d7970afd6ccb1b39b867c9c59ea900975a","title":"Ricker map trajectory and dynamic regime: neutral growth · 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":42.698,"exit_code":1,"observations":[{"actual":["damped",[664.0234,1099.1389,947.2604,1025.2415,987.1493,1006.3622]],"check":"control: salmon stock damped","expected":["damped",[664.0234,1099.1389,947.2604,1025.2415,987.1493,1006.3622]],"passed":true},{"actual":["monotone",[222.5541,387.6342,485.3128,499.78,500.0]],"check":"control: superstable r one","expected":["monotone",[222.5541,387.6342,485.3128,499.78,500.0]],"passed":true},{"actual":["cycle2",[139.9377,58.1234,146.0361,53.0407,149.0324,50.6759]],"check":"control: two cycle","expected":["cycle2",[139.9377,58.1234,146.0361,53.0407,149.0324,50.6759]],"passed":true},{"actual":["cycle2",[132.8047,68.9089,128.3303,72.8208,125.4096]],"check":"control: period doubling onset exactly 2","expected":["cycle2",[132.8047,68.9089,128.3303,72.8208,125.4096]],"passed":true},{"actual":["damped",[129.6553,72.5035,124.2836,77.2161]],"check":"control: near two","expected":["damped",[129.6553,72.5035,124.2836,77.2161]],"passed":true},{"actual":["neutral",[60.0,60.0,60.0]],"check":"regression: neutral","expected":["neutral",[60.0,60.0,60.0]],"passed":true},{"actual":["monotone",[0.0,0.0,0.0]],"check":"regression: neutral empty patch","expected":["neutral",[0.0,0.0,0.0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: salmon stock damped\", \"actual\": [\"damped\", [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]], \"expected\": [\"damped\", [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]], \"passed\": true}, {\"check\": \"control: superstable r one\", \"actual\": [\"monotone\", [222.5541, 387.6342, 485.3128, 499.78, 500.0]], \"expected\": [\"monotone\", [222.5541, 387.6342, 485.3128, 499.78, 500.0]], \"passed\": true}, {\"check\": \"control: two cycle\", \"actual\": [\"cycle2\", [139.9377, 58.1234, 146.0361, 53.0407, 149.0324, 50.6759]], \"expected\": [\"cycle2\", [139.9377, 58.1234, 146.0361, 53.0407, 149.0324, 50.6759]], \"passed\": true}, {\"check\": \"control: period doubling onset exactly 2\", \"actual\": [\"cycle2\", [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]], \"expected\": [\"cycle2\", [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]], \"passed\": true}, {\"check\": \"control: near two\", \"actual\": [\"damped\", [129.6553, 72.5035, 124.2836, 77.2161]], \"expected\": [\"damped\", [129.6553, 72.5035, 124.2836, 77.2161]], \"passed\": true}, {\"check\": \"regression: neutral\", \"actual\": [\"neutral\", [60.0, 60.0, 60.0]], \"expected\": [\"neutral\", [60.0, 60.0, 60.0]], \"passed\": true}, {\"check\": \"regression: neutral empty patch\", \"actual\": [\"monotone\", [0.0, 0.0, 0.0]], \"expected\": [\"neutral\", [0.0, 0.0, 0.0]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.759,"exit_code":1,"observations":[{"actual":["damped",[664.0234,1099.1389,947.2604,1025.2415,987.1493,1006.3622]],"check":"control: salmon stock damped","expected":["damped",[664.0234,1099.1389,947.2604,1025.2415,987.1493,1006.3622]],"passed":true},{"actual":["monotone",[222.5541,387.6342,485.3128,499.78,500.0]],"check":"control: superstable r one","expected":["monotone",[222.5541,387.6342,485.3128,499.78,500.0]],"passed":true},{"actual":["cycle2",[139.9377,58.1234,146.0361,53.0407,149.0324,50.6759]],"check":"control: two cycle","expected":["cycle2",[139.9377,58.1234,146.0361,53.0407,149.0324,50.6759]],"passed":true},{"actual":["cycle2",[132.8047,68.9089,128.3303,72.8208,125.4096]],"check":"control: period doubling onset exactly 2","expected":["cycle2",[132.8047,68.9089,128.3303,72.8208,125.4096]],"passed":true},{"actual":["damped",[129.6553,72.5035,124.2836,77.2161]],"check":"control: near two","expected":["damped",[129.6553,72.5035,124.2836,77.2161]],"passed":true},{"actual":["monotone",[60.0,60.0,60.0]],"check":"regression: neutral","expected":["neutral",[60.0,60.0,60.0]],"passed":false},{"actual":["monotone",[0.0,0.0,0.0]],"check":"regression: neutral empty patch","expected":["neutral",[0.0,0.0,0.0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: salmon stock damped\", \"actual\": [\"damped\", [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]], \"expected\": [\"damped\", [664.0234, 1099.1389, 947.2604, 1025.2415, 987.1493, 1006.3622]], \"passed\": true}, {\"check\": \"control: superstable r one\", \"actual\": [\"monotone\", [222.5541, 387.6342, 485.3128, 499.78, 500.0]], \"expected\": [\"monotone\", [222.5541, 387.6342, 485.3128, 499.78, 500.0]], \"passed\": true}, {\"check\": \"control: two cycle\", \"actual\": [\"cycle2\", [139.9377, 58.1234, 146.0361, 53.0407, 149.0324, 50.6759]], \"expected\": [\"cycle2\", [139.9377, 58.1234, 146.0361, 53.0407, 149.0324, 50.6759]], \"passed\": true}, {\"check\": \"control: period doubling onset exactly 2\", \"actual\": [\"cycle2\", [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]], \"expected\": [\"cycle2\", [132.8047, 68.9089, 128.3303, 72.8208, 125.4096]], \"passed\": true}, {\"check\": \"control: near two\", \"actual\": [\"damped\", [129.6553, 72.5035, 124.2836, 77.2161]], \"expected\": [\"damped\", [129.6553, 72.5035, 124.2836, 77.2161]], \"passed\": true}, {\"check\": \"regression: neutral\", \"actual\": [\"monotone\", [60.0, 60.0, 60.0]], \"expected\": [\"neutral\", [60.0, 60.0, 60.0]], \"passed\": false}, {\"check\": \"regression: neutral empty patch\", \"actual\": [\"monotone\", [0.0, 0.0, 0.0]], \"expected\": [\"neutral\", [0.0, 0.0, 0.0]], \"passed\": false}], \"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."}}