{"abstract":"Expected case counts are one lower than the nearest integer.","category":"Epidemic compartment models","checks":7,"contract":"Attack fraction z is the positive root of z = 1-exp(-R0*z) found by bisection on (1e-9, 1] until the bracket is narrower than tol; for R0<=1 return [0.0, 0, 0.0]; return [z rounded 6, round(z*pop), overshoot z-(1-1/R0) rounded 6].","evaluation_group":"w2-epidemic-final-size","failed_approach":"Ceiling rounds every fractional count upward.","family":"w2-epidemic-final-size-case-count-rounding","id":"FA-65051","implementations":{"attempt":{"sha256":"5bfa87e29adc85985bc07180cb425d2cfacf7e5948453bd3565b42df033b2c51","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(r0, pop, tol):\n    if r0 <= 1:\n        return [0.0, 0, 0.0]\n    lo, hi = 1e-9, 1.0\n    for _ in range(200):\n        mid = (lo + hi) / 2\n        if mid - (1 - math.exp(-r0 * mid)) < 0:\n            lo = mid\n        else:\n            hi = mid\n        if hi - lo < tol:\n            break\n    z = (lo + hi) / 2\n    return [round(z, 6), math.ceil(z * pop), round(z - (1 - 1 / r0), 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: flu-like R0 1.5', (1.5, 10000, 1e-12), [0.582812, 5828, 0.249478]),\n  ('regression: measles-like R0 12', (12.0, 1000, 1e-12), [0.999994, 1000, 0.083327]),\n  ('regression: R0 2', (2.0, 5000, 1e-12), [0.796812, 3984, 0.296812]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: near threshold 1.05', (1.05, 100000, 1e-12), [0.093702, 9370, 0.046083]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('regression: R0 3 small town', (3.0, 777, 1e-12), [0.94048, 731, 0.273813]),\n  ('regression: R0 1.2 mid city', (1.2, 250000, 1e-10), [0.313698, 78425, 0.147032]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: flu-like R0 1.5', (1.5, 10000, 1e-12), [0.582812, 5828, 0.249478]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('regression: R0 3 small town', (3.0, 777, 1e-12), [0.94048, 731, 0.273813]),\n  ('regression: R0 1.2 mid city', (1.2, 250000, 1e-10), [0.313698, 78425, 0.147032]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: flu-like R0 1.5', (1.5, 10000, 1e-12), [0.582812, 5828, 0.249478]),\n  ('regression: measles-like R0 12', (12.0, 1000, 1e-12), [0.999994, 1000, 0.083327]),\n  ('regression: R0 2', (2.0, 5000, 1e-12), [0.796812, 3984, 0.296812]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: R0 2', (2.0, 5000, 1e-12), [0.796812, 3984, 0.296812]),\n  ('regression: near threshold 1.05', (1.05, 100000, 1e-12), [0.093702, 9370, 0.046083]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('regression: R0 3 small town', (3.0, 777, 1e-12), [0.94048, 731, 0.273813]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [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":"07b880b2364251d1ad3c8db3cc1211c82b84fa0167be28931eeb4b2c41fe6748","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(r0, pop, tol):\n    if r0 <= 1:\n        return [0.0, 0, 0.0]\n    lo, hi = 1e-9, 1.0\n    for _ in range(200):\n        mid = (lo + hi) / 2\n        if mid - (1 - math.exp(-r0 * mid)) < 0:\n            lo = mid\n        else:\n            hi = mid\n        if hi - lo < tol:\n            break\n    z = (lo + hi) / 2\n    return [round(z, 6), int(z * pop), round(z - (1 - 1 / r0), 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: flu-like R0 1.5', (1.5, 10000, 1e-12), [0.582812, 5828, 0.249478]),\n  ('regression: measles-like R0 12', (12.0, 1000, 1e-12), [0.999994, 1000, 0.083327]),\n  ('regression: R0 2', (2.0, 5000, 1e-12), [0.796812, 3984, 0.296812]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: near threshold 1.05', (1.05, 100000, 1e-12), [0.093702, 9370, 0.046083]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('regression: R0 3 small town', (3.0, 777, 1e-12), [0.94048, 731, 0.273813]),\n  ('regression: R0 1.2 mid city', (1.2, 250000, 1e-10), [0.313698, 78425, 0.147032]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: flu-like R0 1.5', (1.5, 10000, 1e-12), [0.582812, 5828, 0.249478]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('regression: R0 3 small town', (3.0, 777, 1e-12), [0.94048, 731, 0.273813]),\n  ('regression: R0 1.2 mid city', (1.2, 250000, 1e-10), [0.313698, 78425, 0.147032]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: flu-like R0 1.5', (1.5, 10000, 1e-12), [0.582812, 5828, 0.249478]),\n  ('regression: measles-like R0 12', (12.0, 1000, 1e-12), [0.999994, 1000, 0.083327]),\n  ('regression: R0 2', (2.0, 5000, 1e-12), [0.796812, 3984, 0.296812]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: R0 2', (2.0, 5000, 1e-12), [0.796812, 3984, 0.296812]),\n  ('regression: near threshold 1.05', (1.05, 100000, 1e-12), [0.093702, 9370, 0.046083]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('regression: R0 3 small town', (3.0, 777, 1e-12), [0.94048, 731, 0.273813]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [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"},"fixed":{"sha256":"1c5cc59c3b415f3b80ecb14c8008771a873717b5b8e8df546badf0253691b4af","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(r0, pop, tol):\n    if r0 <= 1:\n        return [0.0, 0, 0.0]\n    lo, hi = 1e-9, 1.0\n    for _ in range(200):\n        mid = (lo + hi) / 2\n        if mid - (1 - math.exp(-r0 * mid)) < 0:\n            lo = mid\n        else:\n            hi = mid\n        if hi - lo < tol:\n            break\n    z = (lo + hi) / 2\n    return [round(z, 6), round(z * pop), round(z - (1 - 1 / r0), 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: flu-like R0 1.5', (1.5, 10000, 1e-12), [0.582812, 5828, 0.249478]),\n  ('regression: measles-like R0 12', (12.0, 1000, 1e-12), [0.999994, 1000, 0.083327]),\n  ('regression: R0 2', (2.0, 5000, 1e-12), [0.796812, 3984, 0.296812]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: near threshold 1.05', (1.05, 100000, 1e-12), [0.093702, 9370, 0.046083]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('regression: R0 3 small town', (3.0, 777, 1e-12), [0.94048, 731, 0.273813]),\n  ('regression: R0 1.2 mid city', (1.2, 250000, 1e-10), [0.313698, 78425, 0.147032]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: flu-like R0 1.5', (1.5, 10000, 1e-12), [0.582812, 5828, 0.249478]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('regression: R0 3 small town', (3.0, 777, 1e-12), [0.94048, 731, 0.273813]),\n  ('regression: R0 1.2 mid city', (1.2, 250000, 1e-10), [0.313698, 78425, 0.147032]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: flu-like R0 1.5', (1.5, 10000, 1e-12), [0.582812, 5828, 0.249478]),\n  ('regression: measles-like R0 12', (12.0, 1000, 1e-12), [0.999994, 1000, 0.083327]),\n  ('regression: R0 2', (2.0, 5000, 1e-12), [0.796812, 3984, 0.296812]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [0.0, 0, 0.0])],\n [('regression: R0 2', (2.0, 5000, 1e-12), [0.796812, 3984, 0.296812]),\n  ('regression: near threshold 1.05', (1.05, 100000, 1e-12), [0.093702, 9370, 0.046083]),\n  ('control: boundary R0 exactly 1', (1.0, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('control: subcritical 0.8', (0.8, 1000, 1e-12), [0.0, 0, 0.0]),\n  ('regression: coarse tolerance', (2.5, 1000, 0.0001), [0.89267, 893, 0.29267]),\n  ('regression: R0 3 small town', (3.0, 777, 1e-12), [0.94048, 731, 0.273813]),\n  ('control: subcritical 0.5', (0.5, 100, 1e-12), [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-epidemic-final-size-case-count-rounding","generated_at":"2026-09-29T14:47:30.223599+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.","repair":"Restore the case count rounding rule: `round(z * pop)`.","root_cause":"The expected count is truncated rather than rounded.","sha256":"c37ff0151e5c8d1d9220fb288937a838ef0c5c328b03fe824b28d96662fff6a7","title":"Final epidemic size by bisection: case count rounding · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":37.636,"exit_code":1,"observations":[{"actual":[0.582812,5829,0.249478],"check":"regression: flu-like R0 1.5","expected":[0.582812,5828,0.249478],"passed":false},{"actual":[0.999994,1000,0.083327],"check":"regression: measles-like R0 12","expected":[0.999994,1000,0.083327],"passed":true},{"actual":[0.796812,3985,0.296812],"check":"regression: R0 2","expected":[0.796812,3984,0.296812],"passed":false},{"actual":[0.0,0,0.0],"check":"control: boundary R0 exactly 1","expected":[0.0,0,0.0],"passed":true},{"actual":[0.0,0,0.0],"check":"control: subcritical 0.8","expected":[0.0,0,0.0],"passed":true},{"actual":[0.89267,893,0.29267],"check":"regression: coarse tolerance","expected":[0.89267,893,0.29267],"passed":true},{"actual":[0.0,0,0.0],"check":"control: subcritical 0.5","expected":[0.0,0,0.0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: flu-like R0 1.5\", \"actual\": [0.582812, 5829, 0.249478], \"expected\": [0.582812, 5828, 0.249478], \"passed\": false}, {\"check\": \"regression: measles-like R0 12\", \"actual\": [0.999994, 1000, 0.083327], \"expected\": [0.999994, 1000, 0.083327], \"passed\": true}, {\"check\": \"regression: R0 2\", \"actual\": [0.796812, 3985, 0.296812], \"expected\": [0.796812, 3984, 0.296812], \"passed\": false}, {\"check\": \"control: boundary R0 exactly 1\", \"actual\": [0.0, 0, 0.0], \"expected\": [0.0, 0, 0.0], \"passed\": true}, {\"check\": \"control: subcritical 0.8\", \"actual\": [0.0, 0, 0.0], \"expected\": [0.0, 0, 0.0], \"passed\": true}, {\"check\": \"regression: coarse tolerance\", \"actual\": [0.89267, 893, 0.29267], \"expected\": [0.89267, 893, 0.29267], \"passed\": true}, {\"check\": \"control: subcritical 0.5\", \"actual\": [0.0, 0, 0.0], \"expected\": [0.0, 0, 0.0], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.525,"exit_code":1,"observations":[{"actual":[0.582812,5828,0.249478],"check":"regression: flu-like R0 1.5","expected":[0.582812,5828,0.249478],"passed":true},{"actual":[0.999994,999,0.083327],"check":"regression: measles-like R0 12","expected":[0.999994,1000,0.083327],"passed":false},{"actual":[0.796812,3984,0.296812],"check":"regression: R0 2","expected":[0.796812,3984,0.296812],"passed":true},{"actual":[0.0,0,0.0],"check":"control: boundary R0 exactly 1","expected":[0.0,0,0.0],"passed":true},{"actual":[0.0,0,0.0],"check":"control: subcritical 0.8","expected":[0.0,0,0.0],"passed":true},{"actual":[0.89267,892,0.29267],"check":"regression: coarse tolerance","expected":[0.89267,893,0.29267],"passed":false},{"actual":[0.0,0,0.0],"check":"control: subcritical 0.5","expected":[0.0,0,0.0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: flu-like R0 1.5\", \"actual\": [0.582812, 5828, 0.249478], \"expected\": [0.582812, 5828, 0.249478], \"passed\": true}, {\"check\": \"regression: measles-like R0 12\", \"actual\": [0.999994, 999, 0.083327], \"expected\": [0.999994, 1000, 0.083327], \"passed\": false}, {\"check\": \"regression: R0 2\", \"actual\": [0.796812, 3984, 0.296812], \"expected\": [0.796812, 3984, 0.296812], \"passed\": true}, {\"check\": \"control: boundary R0 exactly 1\", \"actual\": [0.0, 0, 0.0], \"expected\": [0.0, 0, 0.0], \"passed\": true}, {\"check\": \"control: subcritical 0.8\", \"actual\": [0.0, 0, 0.0], \"expected\": [0.0, 0, 0.0], \"passed\": true}, {\"check\": \"regression: coarse tolerance\", \"actual\": [0.89267, 892, 0.29267], \"expected\": [0.89267, 893, 0.29267], \"passed\": false}, {\"check\": \"control: subcritical 0.5\", \"actual\": [0.0, 0, 0.0], \"expected\": [0.0, 0, 0.0], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.927,"exit_code":0,"observations":[{"actual":[0.582812,5828,0.249478],"check":"regression: flu-like R0 1.5","expected":[0.582812,5828,0.249478],"passed":true},{"actual":[0.999994,1000,0.083327],"check":"regression: measles-like R0 12","expected":[0.999994,1000,0.083327],"passed":true},{"actual":[0.796812,3984,0.296812],"check":"regression: R0 2","expected":[0.796812,3984,0.296812],"passed":true},{"actual":[0.0,0,0.0],"check":"control: boundary R0 exactly 1","expected":[0.0,0,0.0],"passed":true},{"actual":[0.0,0,0.0],"check":"control: subcritical 0.8","expected":[0.0,0,0.0],"passed":true},{"actual":[0.89267,893,0.29267],"check":"regression: coarse tolerance","expected":[0.89267,893,0.29267],"passed":true},{"actual":[0.0,0,0.0],"check":"control: subcritical 0.5","expected":[0.0,0,0.0],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: flu-like R0 1.5\", \"actual\": [0.582812, 5828, 0.249478], \"expected\": [0.582812, 5828, 0.249478], \"passed\": true}, {\"check\": \"regression: measles-like R0 12\", \"actual\": [0.999994, 1000, 0.083327], \"expected\": [0.999994, 1000, 0.083327], \"passed\": true}, {\"check\": \"regression: R0 2\", \"actual\": [0.796812, 3984, 0.296812], \"expected\": [0.796812, 3984, 0.296812], \"passed\": true}, {\"check\": \"control: boundary R0 exactly 1\", \"actual\": [0.0, 0, 0.0], \"expected\": [0.0, 0, 0.0], \"passed\": true}, {\"check\": \"control: subcritical 0.8\", \"actual\": [0.0, 0, 0.0], \"expected\": [0.0, 0, 0.0], \"passed\": true}, {\"check\": \"regression: coarse tolerance\", \"actual\": [0.89267, 893, 0.29267], \"expected\": [0.89267, 893, 0.29267], \"passed\": true}, {\"check\": \"control: subcritical 0.5\", \"actual\": [0.0, 0, 0.0], \"expected\": [0.0, 0, 0.0], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}