{"abstract":"The endemic prevalence target is the susceptible equilibrium, so convergence is judged against the wrong level.","category":"Epidemic compartment models","checks":7,"contract":"SIS with susceptibles pop-I; endemic target pop*(1-1/R0) if R0=beta/gamma>1 else 0; iterate daily Euler I += beta*I*(pop-I)/pop - gamma*I until |I-target| <= tol*pop or max_days steps; return [target rounded 4, days taken, I rounded 4] or None for non-positive beta, gamma or pop.","contract_signature":"beta, gamma, pop, i0, tol, max_days","evaluation_group":"w2-epidemic-sis-endemic","failed_approach":"pop*(R0-1) is not bounded by the population.","family":"w2-epidemic-sis-endemic-equilibrium-formula","id":"FA-64976","implementations":{"attempt":{"sha256":"6df96a94eb300918357cbf376e4cc5cd62e465255e3062d9f598adb71c1b4241","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(beta, gamma, pop, i0, tol, max_days):\n    if beta <= 0 or gamma <= 0 or pop <= 0:\n        return None\n    r0 = beta / gamma\n    target = pop * (r0 - 1) if r0 > 1 else 0.0\n    i = float(i0)\n    day = 0\n    while abs(i - target) > tol * pop and day < max_days:\n        i += beta * i * (pop - i) / pop - gamma * i\n        day += 1\n    return [round(target, 4), day, round(i, 4)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: start above equilibrium', (0.4, 0.2, 1000, 900, 0.005, 100), [500.0, 17, 504.3274]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('regression: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('regression: zero day cap', (0.3, 0.1, 100, 1, 0.01, 0), [66.6667, 0, 1.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None)],\n [('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('regression: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('regression: zero day cap', (0.3, 0.1, 100, 1, 0.01, 0), [66.6667, 0, 1.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None),\n  ('regression: fast dynamics', (0.9, 0.3, 300, 3, 0.02, 100), [200.0, 14, 197.4596]),\n  ('regression: near threshold', (0.21, 0.2, 10000, 100, 0.001, 60), [476.1905, 60, 155.2383])],\n [('regression: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: start above equilibrium', (0.4, 0.2, 1000, 900, 0.005, 100), [500.0, 17, 504.3274]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None),\n  ('regression: fast dynamics', (0.9, 0.3, 300, 3, 0.02, 100), [200.0, 14, 197.4596]),\n  ('regression: near threshold', (0.21, 0.2, 10000, 100, 0.001, 60), [476.1905, 60, 155.2383])],\n [('regression: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: start above equilibrium', (0.4, 0.2, 1000, 900, 0.005, 100), [500.0, 17, 504.3274]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('regression: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('regression: zero day cap', (0.3, 0.1, 100, 1, 0.01, 0), [66.6667, 0, 1.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None)],\n [('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('regression: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('regression: zero day cap', (0.3, 0.1, 100, 1, 0.01, 0), [66.6667, 0, 1.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None),\n  ('regression: fast dynamics', (0.9, 0.3, 300, 3, 0.02, 100), [200.0, 14, 197.4596]),\n  ('regression: near threshold', (0.21, 0.2, 10000, 100, 0.001, 60), [476.1905, 60, 155.2383])]]\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":"cb9484374ef521880f1276d9db96e45bf7836476ed48867fbe58877e466a304b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(beta, gamma, pop, i0, tol, max_days):\n    if beta <= 0 or gamma <= 0 or pop <= 0:\n        return None\n    r0 = beta / gamma\n    target = pop / r0 if r0 > 1 else 0.0\n    i = float(i0)\n    day = 0\n    while abs(i - target) > tol * pop and day < max_days:\n        i += beta * i * (pop - i) / pop - gamma * i\n        day += 1\n    return [round(target, 4), day, round(i, 4)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: start above equilibrium', (0.4, 0.2, 1000, 900, 0.005, 100), [500.0, 17, 504.3274]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('regression: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('regression: zero day cap', (0.3, 0.1, 100, 1, 0.01, 0), [66.6667, 0, 1.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None)],\n [('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('regression: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('regression: zero day cap', (0.3, 0.1, 100, 1, 0.01, 0), [66.6667, 0, 1.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None),\n  ('regression: fast dynamics', (0.9, 0.3, 300, 3, 0.02, 100), [200.0, 14, 197.4596]),\n  ('regression: near threshold', (0.21, 0.2, 10000, 100, 0.001, 60), [476.1905, 60, 155.2383])],\n [('regression: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: start above equilibrium', (0.4, 0.2, 1000, 900, 0.005, 100), [500.0, 17, 504.3274]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None),\n  ('regression: fast dynamics', (0.9, 0.3, 300, 3, 0.02, 100), [200.0, 14, 197.4596]),\n  ('regression: near threshold', (0.21, 0.2, 10000, 100, 0.001, 60), [476.1905, 60, 155.2383])],\n [('regression: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: start above equilibrium', (0.4, 0.2, 1000, 900, 0.005, 100), [500.0, 17, 504.3274]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('regression: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('regression: zero day cap', (0.3, 0.1, 100, 1, 0.01, 0), [66.6667, 0, 1.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None)],\n [('control: subcritical dies out', (0.1, 0.2, 500, 50, 0.01, 200), [0.0, 21, 4.9755]),\n  ('regression: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('regression: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('regression: zero day cap', (0.3, 0.1, 100, 1, 0.01, 0), [66.6667, 0, 1.0]),\n  ('control: invalid gamma', (0.3, 0.0, 100, 1, 0.01, 10), None),\n  ('regression: fast dynamics', (0.9, 0.3, 300, 3, 0.02, 100), [200.0, 14, 197.4596]),\n  ('regression: near threshold', (0.21, 0.2, 10000, 100, 0.001, 60), [476.1905, 60, 155.2383])]]\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-epidemic-sis-endemic-equilibrium-formula","generated_at":"2026-09-29T14:47:29.588757+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Compartmental epidemic calculations drive outbreak forecasts, vaccine targets and hospital planning; a single wrong flow, rate conversion or boundary silently changes every downstream number.","root_cause":"pop/R0 (equilibrium S) is used as the endemic prevalence.","sha256":"58dd5201ef987f0c34fb1649d9e867aa3ddbd13421d5b2388ee244d0e3b01984","title":"SIS endemic equilibrium convergence: equilibrium formula · 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":39.79,"exit_code":1,"observations":[{"actual":[2000.0,200,666.6667],"check":"regression: gonorrhoea-like endemic","expected":[666.6667,42,657.0888],"passed":false},{"actual":[0.0,21,4.9755],"check":"control: subcritical dies out","expected":[0.0,21,4.9755],"passed":true},{"actual":[1000.0,100,500.0],"check":"regression: start above equilibrium","expected":[500.0,17,504.3274],"passed":false},{"actual":[1000.0,50,500.0],"check":"regression: already at equilibrium","expected":[500.0,0,500.0],"passed":false},{"actual":[500.0,30,4.288],"check":"regression: tight tolerance capped","expected":[400.0,30,4.288],"passed":false},{"actual":[200.0,0,1.0],"check":"regression: zero day cap","expected":[66.6667,0,1.0],"passed":false},{"actual":null,"check":"control: invalid gamma","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: gonorrhoea-like endemic\", \"actual\": [2000.0, 200, 666.6667], \"expected\": [666.6667, 42, 657.0888], \"passed\": false}, {\"check\": \"control: subcritical dies out\", \"actual\": [0.0, 21, 4.9755], \"expected\": [0.0, 21, 4.9755], \"passed\": true}, {\"check\": \"regression: start above equilibrium\", \"actual\": [1000.0, 100, 500.0], \"expected\": [500.0, 17, 504.3274], \"passed\": false}, {\"check\": \"regression: already at equilibrium\", \"actual\": [1000.0, 50, 500.0], \"expected\": [500.0, 0, 500.0], \"passed\": false}, {\"check\": \"regression: tight tolerance capped\", \"actual\": [500.0, 30, 4.288], \"expected\": [400.0, 30, 4.288], \"passed\": false}, {\"check\": \"regression: zero day cap\", \"actual\": [200.0, 0, 1.0], \"expected\": [66.6667, 0, 1.0], \"passed\": false}, {\"check\": \"control: invalid gamma\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.496,"exit_code":1,"observations":[{"actual":[333.3333,200,666.6667],"check":"regression: gonorrhoea-like endemic","expected":[666.6667,42,657.0888],"passed":false},{"actual":[0.0,21,4.9755],"check":"control: subcritical dies out","expected":[0.0,21,4.9755],"passed":true},{"actual":[500.0,17,504.3274],"check":"regression: start above equilibrium","expected":[500.0,17,504.3274],"passed":true},{"actual":[500.0,0,500.0],"check":"regression: already at equilibrium","expected":[500.0,0,500.0],"passed":true},{"actual":[1600.0,30,4.288],"check":"regression: tight tolerance capped","expected":[400.0,30,4.288],"passed":false},{"actual":[33.3333,0,1.0],"check":"regression: zero day cap","expected":[66.6667,0,1.0],"passed":false},{"actual":null,"check":"control: invalid gamma","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: gonorrhoea-like endemic\", \"actual\": [333.3333, 200, 666.6667], \"expected\": [666.6667, 42, 657.0888], \"passed\": false}, {\"check\": \"control: subcritical dies out\", \"actual\": [0.0, 21, 4.9755], \"expected\": [0.0, 21, 4.9755], \"passed\": true}, {\"check\": \"regression: start above equilibrium\", \"actual\": [500.0, 17, 504.3274], \"expected\": [500.0, 17, 504.3274], \"passed\": true}, {\"check\": \"regression: already at equilibrium\", \"actual\": [500.0, 0, 500.0], \"expected\": [500.0, 0, 500.0], \"passed\": true}, {\"check\": \"regression: tight tolerance capped\", \"actual\": [1600.0, 30, 4.288], \"expected\": [400.0, 30, 4.288], \"passed\": false}, {\"check\": \"regression: zero day cap\", \"actual\": [33.3333, 0, 1.0], \"expected\": [66.6667, 0, 1.0], \"passed\": false}, {\"check\": \"control: invalid gamma\", \"actual\": null, \"expected\": null, \"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."}}