{"abstract":"Convergence takes far longer than required and often hits the day cap.","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":"Scaling tolerance by the target makes a zero target unreachable.","family":"w2-epidemic-sis-endemic-tolerance-scaling","id":"FA-64991","implementations":{"attempt":{"sha256":"e42639d04a3432902f6d16cc87d760c1030197444f6c5b6ca3b692b262a1e864","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 * (1 - 1 / r0) if r0 > 1 else 0.0\n    i = float(i0)\n    day = 0\n    while abs(i - target) > tol * target 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  ('regression: 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  ('control: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('control: 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: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('control: 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  ('control: 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  ('regression: 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  ('control: 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  ('control: 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  ('regression: 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  ('control: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('control: 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: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('control: 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  ('control: 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":"9655ddbeff8b976d15fb524bb8b66c2cc08ac7c0353cf997c38656818c618762","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 * (1 - 1 / r0) if r0 > 1 else 0.0\n    i = float(i0)\n    day = 0\n    while abs(i - target) > tol 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  ('regression: 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  ('control: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('control: 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: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('control: 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  ('control: 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  ('regression: 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  ('control: 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  ('control: 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  ('regression: 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  ('control: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('control: 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: gonorrhoea-like endemic', (0.3, 0.1, 1000, 10, 0.01, 200), [666.6667, 42, 657.0888]),\n  ('control: already at equilibrium', (0.4, 0.2, 1000, 500, 0.01, 50), [500.0, 0, 500.0]),\n  ('control: tight tolerance capped', (0.25, 0.2, 2000, 1, 0.0001, 30), [400.0, 30, 4.288]),\n  ('control: 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  ('control: 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-tolerance-scaling","generated_at":"2026-09-29T14:47:29.971357+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":"The relative tolerance is compared as an absolute number of people.","sha256":"36c3f53c9e2e1da579031d07003de19a2a1c4f3607532fb89241d4ebf866a4df","title":"SIS endemic equilibrium convergence: tolerance scaling · 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.081,"exit_code":1,"observations":[{"actual":[666.6667,44,660.4971],"check":"regression: gonorrhoea-like endemic","expected":[666.6667,42,657.0888],"passed":false},{"actual":[0.0,200,0.0],"check":"regression: subcritical dies out","expected":[0.0,21,4.9755],"passed":false},{"actual":[500.0,20,502.204],"check":"regression: start above equilibrium","expected":[500.0,17,504.3274],"passed":false},{"actual":[500.0,0,500.0],"check":"control: already at equilibrium","expected":[500.0,0,500.0],"passed":true},{"actual":[400.0,30,4.288],"check":"control: tight tolerance capped","expected":[400.0,30,4.288],"passed":true},{"actual":[66.6667,0,1.0],"check":"control: zero day cap","expected":[66.6667,0,1.0],"passed":true},{"actual":null,"check":"control: invalid gamma","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: gonorrhoea-like endemic\", \"actual\": [666.6667, 44, 660.4971], \"expected\": [666.6667, 42, 657.0888], \"passed\": false}, {\"check\": \"regression: subcritical dies out\", \"actual\": [0.0, 200, 0.0], \"expected\": [0.0, 21, 4.9755], \"passed\": false}, {\"check\": \"regression: start above equilibrium\", \"actual\": [500.0, 20, 502.204], \"expected\": [500.0, 17, 504.3274], \"passed\": false}, {\"check\": \"control: already at equilibrium\", \"actual\": [500.0, 0, 500.0], \"expected\": [500.0, 0, 500.0], \"passed\": true}, {\"check\": \"control: tight tolerance capped\", \"actual\": [400.0, 30, 4.288], \"expected\": [400.0, 30, 4.288], \"passed\": true}, {\"check\": \"control: zero day cap\", \"actual\": [66.6667, 0, 1.0], \"expected\": [66.6667, 0, 1.0], \"passed\": true}, {\"check\": \"control: invalid gamma\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.025,"exit_code":1,"observations":[{"actual":[666.6667,73,666.657],"check":"regression: gonorrhoea-like endemic","expected":[666.6667,42,657.0888],"passed":false},{"actual":[0.0,80,0.0098],"check":"regression: subcritical dies out","expected":[0.0,21,4.9755],"passed":false},{"actual":[500.0,48,500.0042],"check":"regression: start above equilibrium","expected":[500.0,17,504.3274],"passed":false},{"actual":[500.0,0,500.0],"check":"control: already at equilibrium","expected":[500.0,0,500.0],"passed":true},{"actual":[400.0,30,4.288],"check":"control: tight tolerance capped","expected":[400.0,30,4.288],"passed":true},{"actual":[66.6667,0,1.0],"check":"control: zero day cap","expected":[66.6667,0,1.0],"passed":true},{"actual":null,"check":"control: invalid gamma","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: gonorrhoea-like endemic\", \"actual\": [666.6667, 73, 666.657], \"expected\": [666.6667, 42, 657.0888], \"passed\": false}, {\"check\": \"regression: subcritical dies out\", \"actual\": [0.0, 80, 0.0098], \"expected\": [0.0, 21, 4.9755], \"passed\": false}, {\"check\": \"regression: start above equilibrium\", \"actual\": [500.0, 48, 500.0042], \"expected\": [500.0, 17, 504.3274], \"passed\": false}, {\"check\": \"control: already at equilibrium\", \"actual\": [500.0, 0, 500.0], \"expected\": [500.0, 0, 500.0], \"passed\": true}, {\"check\": \"control: tight tolerance capped\", \"actual\": [400.0, 30, 4.288], \"expected\": [400.0, 30, 4.288], \"passed\": true}, {\"check\": \"control: zero day cap\", \"actual\": [66.6667, 0, 1.0], \"expected\": [66.6667, 0, 1.0], \"passed\": true}, {\"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."}}