{"abstract":"Vaccination makes remaining susceptibles meet infectives more often.","category":"Epidemic compartment models","checks":7,"contract":"Each day from day index start_day (inclusive), dose=min(doses_per_day, S) is given to susceptibles before transmission; dose*efficacy moves S->V; failed vaccinees stay in S; mixing uses the full pop; return [S, I, R, V, doses administered] rounded to 3.","contract_signature":"beta, gamma, pop, i0, doses_per_day, start_day, efficacy, days","evaluation_group":"w2-epidemic-vaccine-campaign","failed_approach":"Mixing only among S and I drops both recovered and vaccinated contacts.","family":"w2-epidemic-vaccine-campaign-mixing-denominator","id":"FA-65086","implementations":{"attempt":{"sha256":"c47b8c92d898577c4eb91ec5a12694c5eb6c4e41dfa4dbfee68c9fb582691003","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(beta, gamma, pop, i0, doses_per_day, start_day, efficacy, days):\n    s, i, r, v = float(pop - i0), float(i0), 0.0, 0.0\n    given = 0.0\n    for day in range(days):\n        if day >= start_day:\n            dose = min(doses_per_day, s)\n            s -= dose * efficacy\n            v += dose * efficacy\n            given += dose\n        inf = beta * s * i / (s + i)\n        rec = gamma * i\n        s -= inf\n        i += inf - rec\n        r += rec\n    return [round(s, 3), round(i, 3), round(r, 3), round(v, 3), round(given, 3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: city campaign from day 5',\n   (0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),\n   [4007.174, 324.024, 1168.803, 4500.0, 5000.0]),\n  ('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: supply exceeds susceptibles',\n   (0.3, 0.1, 100, 2, 80, 1, 0.95, 6),\n   [0.0, 1.516, 1.233, 97.251, 102.369]),\n  ('regression: late campaign never starts',\n   (0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),\n   [777.374, 141.242, 81.385, 0.0, 0.0]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: poor vaccine',\n   (0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),\n   [237.471, 307.647, 1134.882, 1320.0, 3300.0]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0])],\n [('regression: city campaign from day 5',\n   (0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),\n   [4007.174, 324.024, 1168.803, 4500.0, 5000.0]),\n  ('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: late campaign never starts',\n   (0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),\n   [777.374, 141.242, 81.385, 0.0, 0.0]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: poor vaccine',\n   (0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),\n   [237.471, 307.647, 1134.882, 1320.0, 3300.0]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),\n  ('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],\n [('regression: city campaign from day 5',\n   (0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),\n   [4007.174, 324.024, 1168.803, 4500.0, 5000.0]),\n  ('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: supply exceeds susceptibles',\n   (0.3, 0.1, 100, 2, 80, 1, 0.95, 6),\n   [0.0, 1.516, 1.233, 97.251, 102.369]),\n  ('regression: late campaign never starts',\n   (0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),\n   [777.374, 141.242, 81.385, 0.0, 0.0]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),\n  ('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],\n [('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: supply exceeds susceptibles',\n   (0.3, 0.1, 100, 2, 80, 1, 0.95, 6),\n   [0.0, 1.516, 1.233, 97.251, 102.369]),\n  ('regression: late campaign never starts',\n   (0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),\n   [777.374, 141.242, 81.385, 0.0, 0.0]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: poor vaccine',\n   (0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),\n   [237.471, 307.647, 1134.882, 1320.0, 3300.0]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),\n  ('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],\n [('regression: city campaign from day 5',\n   (0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),\n   [4007.174, 324.024, 1168.803, 4500.0, 5000.0]),\n  ('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: supply exceeds susceptibles',\n   (0.3, 0.1, 100, 2, 80, 1, 0.95, 6),\n   [0.0, 1.516, 1.233, 97.251, 102.369]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: poor vaccine',\n   (0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),\n   [237.471, 307.647, 1134.882, 1320.0, 3300.0]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),\n  ('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.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":"1b2c3bb801b37f9cecda689bede48fca8e82558919adcc1b7ef9d3fe4afd3a03","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(beta, gamma, pop, i0, doses_per_day, start_day, efficacy, days):\n    s, i, r, v = float(pop - i0), float(i0), 0.0, 0.0\n    given = 0.0\n    for day in range(days):\n        if day >= start_day:\n            dose = min(doses_per_day, s)\n            s -= dose * efficacy\n            v += dose * efficacy\n            given += dose\n        inf = beta * s * i / (pop - v)\n        rec = gamma * i\n        s -= inf\n        i += inf - rec\n        r += rec\n    return [round(s, 3), round(i, 3), round(r, 3), round(v, 3), round(given, 3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: city campaign from day 5',\n   (0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),\n   [4007.174, 324.024, 1168.803, 4500.0, 5000.0]),\n  ('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: supply exceeds susceptibles',\n   (0.3, 0.1, 100, 2, 80, 1, 0.95, 6),\n   [0.0, 1.516, 1.233, 97.251, 102.369]),\n  ('regression: late campaign never starts',\n   (0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),\n   [777.374, 141.242, 81.385, 0.0, 0.0]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: poor vaccine',\n   (0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),\n   [237.471, 307.647, 1134.882, 1320.0, 3300.0]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0])],\n [('regression: city campaign from day 5',\n   (0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),\n   [4007.174, 324.024, 1168.803, 4500.0, 5000.0]),\n  ('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: late campaign never starts',\n   (0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),\n   [777.374, 141.242, 81.385, 0.0, 0.0]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: poor vaccine',\n   (0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),\n   [237.471, 307.647, 1134.882, 1320.0, 3300.0]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),\n  ('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],\n [('regression: city campaign from day 5',\n   (0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),\n   [4007.174, 324.024, 1168.803, 4500.0, 5000.0]),\n  ('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: supply exceeds susceptibles',\n   (0.3, 0.1, 100, 2, 80, 1, 0.95, 6),\n   [0.0, 1.516, 1.233, 97.251, 102.369]),\n  ('regression: late campaign never starts',\n   (0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),\n   [777.374, 141.242, 81.385, 0.0, 0.0]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),\n  ('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],\n [('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: supply exceeds susceptibles',\n   (0.3, 0.1, 100, 2, 80, 1, 0.95, 6),\n   [0.0, 1.516, 1.233, 97.251, 102.369]),\n  ('regression: late campaign never starts',\n   (0.3, 0.1, 1000, 5, 100, 50, 0.9, 20),\n   [777.374, 141.242, 81.385, 0.0, 0.0]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: poor vaccine',\n   (0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),\n   [237.471, 307.647, 1134.882, 1320.0, 3300.0]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),\n  ('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.0])],\n [('regression: city campaign from day 5',\n   (0.4, 0.2, 10000, 20, 200, 5, 0.9, 30),\n   [4007.174, 324.024, 1168.803, 4500.0, 5000.0]),\n  ('regression: campaign from day 0',\n   (0.5, 0.25, 2000, 10, 50, 0, 0.8, 20),\n   [872.113, 79.727, 248.159, 800.0, 1000.0]),\n  ('regression: supply exceeds susceptibles',\n   (0.3, 0.1, 100, 2, 80, 1, 0.95, 6),\n   [0.0, 1.516, 1.233, 97.251, 102.369]),\n  ('regression: perfect vaccine small town',\n   (0.6, 0.2, 500, 5, 40, 2, 1.0, 15),\n   [0.0, 10.271, 55.609, 434.12, 434.12]),\n  ('regression: poor vaccine',\n   (0.45, 0.15, 3000, 30, 150, 3, 0.4, 25),\n   [237.471, 307.647, 1134.882, 1320.0, 3300.0]),\n  ('regression: no doses', (0.4, 0.2, 1000, 10, 0, 0, 0.9, 10), [896.73, 54.094, 49.176, 0.0, 0.0]),\n  ('regression: start day one', (0.35, 0.1, 800, 4, 30, 1, 0.7, 12), [519.85, 32.463, 16.687, 231.0, 330.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-vaccine-campaign-mixing-denominator","generated_at":"2026-09-29T14:47:30.733456+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":"Protected people are removed from the mixing population.","sha256":"177bc0e9d6de89884774f67fd72afba660a109d8c4fd773275b927eb4b4ad1c6","title":"SIR with daily all-or-nothing vaccination campaign: mixing denominator · 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":38.692,"exit_code":1,"observations":[{"actual":[971.697,1513.883,3014.42,4500.0,5000.0],"check":"regression: city campaign from day 5","expected":[4007.174,324.024,1168.803,4500.0,5000.0],"passed":false},{"actual":[281.88,330.442,587.679,800.0,1000.0],"check":"regression: campaign from day 0","expected":[872.113,79.727,248.159,800.0,1000.0],"passed":false},{"actual":[0.0,2.009,1.463,96.528,101.608],"check":"regression: supply exceeds susceptibles","expected":[0.0,1.516,1.233,97.251,102.369],"passed":false},{"actual":[762.041,153.553,84.406,0.0,0.0],"check":"regression: late campaign never starts","expected":[777.374,141.242,81.385,0.0,0.0],"passed":false},{"actual":[0.0,26.46,111.478,362.062,362.062],"check":"regression: perfect vaccine small town","expected":[0.0,10.271,55.609,434.12,434.12],"passed":false},{"actual":[0.173,332.267,1634.26,1033.3,2583.251],"check":"regression: poor vaccine","expected":[237.471,307.647,1134.882,1320.0,3300.0],"passed":false},{"actual":[893.155,56.832,50.012,0.0,0.0],"check":"regression: no doses","expected":[896.73,54.094,49.176,0.0,0.0],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: city campaign from day 5\", \"actual\": [971.697, 1513.883, 3014.42, 4500.0, 5000.0], \"expected\": [4007.174, 324.024, 1168.803, 4500.0, 5000.0], \"passed\": false}, {\"check\": \"regression: campaign from day 0\", \"actual\": [281.88, 330.442, 587.679, 800.0, 1000.0], \"expected\": [872.113, 79.727, 248.159, 800.0, 1000.0], \"passed\": false}, {\"check\": \"regression: supply exceeds susceptibles\", \"actual\": [0.0, 2.009, 1.463, 96.528, 101.608], \"expected\": [0.0, 1.516, 1.233, 97.251, 102.369], \"passed\": false}, {\"check\": \"regression: late campaign never starts\", \"actual\": [762.041, 153.553, 84.406, 0.0, 0.0], \"expected\": [777.374, 141.242, 81.385, 0.0, 0.0], \"passed\": false}, {\"check\": \"regression: perfect vaccine small town\", \"actual\": [0.0, 26.46, 111.478, 362.062, 362.062], \"expected\": [0.0, 10.271, 55.609, 434.12, 434.12], \"passed\": false}, {\"check\": \"regression: poor vaccine\", \"actual\": [0.173, 332.267, 1634.26, 1033.3, 2583.251], \"expected\": [237.471, 307.647, 1134.882, 1320.0, 3300.0], \"passed\": false}, {\"check\": \"regression: no doses\", \"actual\": [893.155, 56.832, 50.012, 0.0, 0.0], \"expected\": [896.73, 54.094, 49.176, 0.0, 0.0], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.535,"exit_code":1,"observations":[{"actual":[2124.133,979.149,2396.718,4500.0,5000.0],"check":"regression: city campaign from day 5","expected":[4007.174,324.024,1168.803,4500.0,5000.0],"passed":false},{"actual":[503.59,216.202,480.208,800.0,1000.0],"check":"regression: campaign from day 0","expected":[872.113,79.727,248.159,800.0,1000.0],"passed":false},{"actual":[0.0,1.986,1.455,96.559,101.641],"check":"regression: supply exceeds susceptibles","expected":[0.0,1.516,1.233,97.251,102.369],"passed":false},{"actual":[777.374,141.242,81.385,0.0,0.0],"check":"regression: late campaign never starts","expected":[777.374,141.242,81.385,0.0,0.0],"passed":true},{"actual":[0.0,23.996,102.637,373.366,373.366],"check":"regression: perfect vaccine small town","expected":[0.0,10.271,55.609,434.12,434.12],"passed":false},{"actual":[17.099,320.479,1441.354,1221.068,3052.669],"check":"regression: poor vaccine","expected":[237.471,307.647,1134.882,1320.0,3300.0],"passed":false},{"actual":[896.73,54.094,49.176,0.0,0.0],"check":"regression: no doses","expected":[896.73,54.094,49.176,0.0,0.0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: city campaign from day 5\", \"actual\": [2124.133, 979.149, 2396.718, 4500.0, 5000.0], \"expected\": [4007.174, 324.024, 1168.803, 4500.0, 5000.0], \"passed\": false}, {\"check\": \"regression: campaign from day 0\", \"actual\": [503.59, 216.202, 480.208, 800.0, 1000.0], \"expected\": [872.113, 79.727, 248.159, 800.0, 1000.0], \"passed\": false}, {\"check\": \"regression: supply exceeds susceptibles\", \"actual\": [0.0, 1.986, 1.455, 96.559, 101.641], \"expected\": [0.0, 1.516, 1.233, 97.251, 102.369], \"passed\": false}, {\"check\": \"regression: late campaign never starts\", \"actual\": [777.374, 141.242, 81.385, 0.0, 0.0], \"expected\": [777.374, 141.242, 81.385, 0.0, 0.0], \"passed\": true}, {\"check\": \"regression: perfect vaccine small town\", \"actual\": [0.0, 23.996, 102.637, 373.366, 373.366], \"expected\": [0.0, 10.271, 55.609, 434.12, 434.12], \"passed\": false}, {\"check\": \"regression: poor vaccine\", \"actual\": [17.099, 320.479, 1441.354, 1221.068, 3052.669], \"expected\": [237.471, 307.647, 1134.882, 1320.0, 3300.0], \"passed\": false}, {\"check\": \"regression: no doses\", \"actual\": [896.73, 54.094, 49.176, 0.0, 0.0], \"expected\": [896.73, 54.094, 49.176, 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."}}