{"abstract":"With aggressive testing prevalence becomes negative.","category":"Epidemic compartment models","checks":7,"contract":"Daily Euler SIQR: infectives recover (gamma*I) or are detected (detect*I), both exits scaled down proportionally if they exceed I; isolated Q do not transmit and are released to R at Q/isolation_days; report daily detections, final Q and final R rounded to 3.","evaluation_group":"w2-epidemic-siqr-isolation","failed_approach":"Giving recovery priority can make detections negative when gamma alone exceeds one.","family":"w2-epidemic-siqr-isolation-competing-exits-cap","id":"FA-65176","implementations":{"attempt":{"sha256":"51dcfe92cd5bbc9462fab8e7969e4e91a94dcbab9375fdb15aa8096f7667ca6a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(beta, gamma, detect, pop, i0, days, isolation_days):\n    s, i, q, r = float(pop - i0), float(i0), 0.0, 0.0\n    detected = []\n    for _ in range(days):\n        inf = beta * s * i / pop\n        rec = gamma * i\n        iso = detect * i\n        if rec + iso > i:\n            iso = i - rec\n        release = q / isolation_days\n        s -= inf\n        i += inf - rec - iso\n        q += iso - release\n        r += rec + release\n        detected.append(round(iso, 3))\n    return [detected, round(q, 3), round(r, 3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828])],\n [('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])],\n [('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])],\n [('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])],\n [('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])]]\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":"63616b4feaa8e5cf1f2a9d8a2f86e8305f677015e067a6411d5373e9fdace24c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(beta, gamma, detect, pop, i0, days, isolation_days):\n    s, i, q, r = float(pop - i0), float(i0), 0.0, 0.0\n    detected = []\n    for _ in range(days):\n        inf = beta * s * i / pop\n        rec = gamma * i\n        iso = detect * i\n        if rec + iso > i:\n            rec = rec\n        release = q / isolation_days\n        s -= inf\n        i += inf - rec - iso\n        q += iso - release\n        r += rec + release\n        detected.append(round(iso, 3))\n    return [detected, round(q, 3), round(r, 3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828])],\n [('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])],\n [('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])],\n [('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])],\n [('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])]]\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":"a8f6c7ad6ea775dd6c47ceb183d260d99829dda52338a521dcde05a9a22fab1f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(beta, gamma, detect, pop, i0, days, isolation_days):\n    s, i, q, r = float(pop - i0), float(i0), 0.0, 0.0\n    detected = []\n    for _ in range(days):\n        inf = beta * s * i / pop\n        rec = gamma * i\n        iso = detect * i\n        if rec + iso > i:\n            scale = i / (rec + iso)\n            rec *= scale\n            iso *= scale\n        release = q / isolation_days\n        s -= inf\n        i += inf - rec - iso\n        q += iso - release\n        r += rec + release\n        detected.append(round(iso, 3))\n    return [detected, round(q, 3), round(r, 3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828])],\n [('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])],\n [('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])],\n [('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: short isolation',\n   (0.5, 0.25, 0.3, 600, 15, 7, 2),\n   [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])],\n [('control: moderate testing',\n   (0.5, 0.2, 0.1, 1000, 10, 8, 10),\n   [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079]),\n  ('regression: aggressive testing saturates exits',\n   (0.6, 0.7, 0.6, 500, 20, 5, 7),\n   [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703]),\n  ('control: no testing', (0.4, 0.2, 0.0, 800, 5, 6, 10), [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826]),\n  ('control: boundary zero days', (0.5, 0.2, 0.1, 100, 5, 0, 5), [[], 0.0, 0.0]),\n  ('control: long run',\n   (0.35, 0.1, 0.05, 2000, 8, 12, 14),\n   [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018]),\n  ('control: exits exactly I', (0.3, 0.5, 0.5, 200, 40, 4, 5), [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828]),\n  ('control: high transmission',\n   (1.2, 0.3, 0.2, 400, 4, 6, 10),\n   [[0.8, 1.35, 2.26, 3.729, 6.008, 9.305], 20.739, 37.893])]]\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-siqr-isolation-competing-exits-cap","generated_at":"2026-09-29T14:47:31.440988+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 competing exits cap rule: `scale = i / (rec + iso) / rec *= scale / iso *= scale`.","root_cause":"Combined exits exceeding I are not scaled back.","sha256":"8053ed4c80a22b3b8817568e2c468a2e62bb5793a8ae002dae6960f2e59d18b0","title":"SIQR testing and isolation model: competing exits cap · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.103,"exit_code":1,"observations":[{"actual":[[1.0,1.195,1.425,1.695,2.011,2.377,2.798,3.277],12.253,35.079],"check":"control: moderate testing","expected":[[1.0,1.195,1.425,1.695,2.011,2.377,2.798,3.277],12.253,35.079],"passed":true},{"actual":[[6.0,3.456,1.943,1.077,0.593],8.358,35.204],"check":"regression: aggressive testing saturates exits","expected":[[9.231,5.317,2.989,1.657,0.912],12.859,30.703],"passed":false},{"actual":[[0.0,0.0,0.0,0.0,0.0,0.0],0.0,9.826],"check":"control: no testing","expected":[[0.0,0.0,0.0,0.0,0.0,0.0],0.0,9.826],"passed":true},{"actual":[[4.5,4.219,3.929,3.638,3.349,3.067,2.795],6.068,40.676],"check":"control: short isolation","expected":[[4.5,4.219,3.929,3.638,3.349,3.067,2.795],6.068,40.676],"passed":true},{"actual":[[],0.0,0.0],"check":"control: boundary zero days","expected":[[],0.0,0.0],"passed":true},{"actual":[[0.4,0.479,0.574,0.688,0.823,0.985,1.177,1.405,1.675,1.994,2.371,2.813],12.133,34.018],"check":"control: long run","expected":[[0.4,0.479,0.574,0.688,0.823,0.985,1.177,1.405,1.675,1.994,2.371,2.813],12.133,34.018],"passed":true},{"actual":[[20.0,4.8,1.083,0.241],14.419,37.828],"check":"control: exits exactly I","expected":[[20.0,4.8,1.083,0.241],14.419,37.828],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: moderate testing\", \"actual\": [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079], \"expected\": [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079], \"passed\": true}, {\"check\": \"regression: aggressive testing saturates exits\", \"actual\": [[6.0, 3.456, 1.943, 1.077, 0.593], 8.358, 35.204], \"expected\": [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703], \"passed\": false}, {\"check\": \"control: no testing\", \"actual\": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826], \"expected\": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826], \"passed\": true}, {\"check\": \"control: short isolation\", \"actual\": [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676], \"expected\": [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676], \"passed\": true}, {\"check\": \"control: boundary zero days\", \"actual\": [[], 0.0, 0.0], \"expected\": [[], 0.0, 0.0], \"passed\": true}, {\"check\": \"control: long run\", \"actual\": [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018], \"expected\": [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018], \"passed\": true}, {\"check\": \"control: exits exactly I\", \"actual\": [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828], \"expected\": [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.157,"exit_code":1,"observations":[{"actual":[[1.0,1.195,1.425,1.695,2.011,2.377,2.798,3.277],12.253,35.079],"check":"control: moderate testing","expected":[[1.0,1.195,1.425,1.695,2.011,2.377,2.798,3.277],12.253,35.079],"passed":true},{"actual":[[12.0,3.312,0.868,0.224,0.058],9.451,26.218],"check":"regression: aggressive testing saturates exits","expected":[[9.231,5.317,2.989,1.657,0.912],12.859,30.703],"passed":false},{"actual":[[0.0,0.0,0.0,0.0,0.0,0.0],0.0,9.826],"check":"control: no testing","expected":[[0.0,0.0,0.0,0.0,0.0,0.0],0.0,9.826],"passed":true},{"actual":[[4.5,4.219,3.929,3.638,3.349,3.067,2.795],6.068,40.676],"check":"control: short isolation","expected":[[4.5,4.219,3.929,3.638,3.349,3.067,2.795],6.068,40.676],"passed":true},{"actual":[[],0.0,0.0],"check":"control: boundary zero days","expected":[[],0.0,0.0],"passed":true},{"actual":[[0.4,0.479,0.574,0.688,0.823,0.985,1.177,1.405,1.675,1.994,2.371,2.813],12.133,34.018],"check":"control: long run","expected":[[0.4,0.479,0.574,0.688,0.823,0.985,1.177,1.405,1.675,1.994,2.371,2.813],12.133,34.018],"passed":true},{"actual":[[20.0,4.8,1.083,0.241],14.419,37.828],"check":"control: exits exactly I","expected":[[20.0,4.8,1.083,0.241],14.419,37.828],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: moderate testing\", \"actual\": [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079], \"expected\": [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079], \"passed\": true}, {\"check\": \"regression: aggressive testing saturates exits\", \"actual\": [[12.0, 3.312, 0.868, 0.224, 0.058], 9.451, 26.218], \"expected\": [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703], \"passed\": false}, {\"check\": \"control: no testing\", \"actual\": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826], \"expected\": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826], \"passed\": true}, {\"check\": \"control: short isolation\", \"actual\": [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676], \"expected\": [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676], \"passed\": true}, {\"check\": \"control: boundary zero days\", \"actual\": [[], 0.0, 0.0], \"expected\": [[], 0.0, 0.0], \"passed\": true}, {\"check\": \"control: long run\", \"actual\": [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018], \"expected\": [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018], \"passed\": true}, {\"check\": \"control: exits exactly I\", \"actual\": [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828], \"expected\": [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.805,"exit_code":0,"observations":[{"actual":[[1.0,1.195,1.425,1.695,2.011,2.377,2.798,3.277],12.253,35.079],"check":"control: moderate testing","expected":[[1.0,1.195,1.425,1.695,2.011,2.377,2.798,3.277],12.253,35.079],"passed":true},{"actual":[[9.231,5.317,2.989,1.657,0.912],12.859,30.703],"check":"regression: aggressive testing saturates exits","expected":[[9.231,5.317,2.989,1.657,0.912],12.859,30.703],"passed":true},{"actual":[[0.0,0.0,0.0,0.0,0.0,0.0],0.0,9.826],"check":"control: no testing","expected":[[0.0,0.0,0.0,0.0,0.0,0.0],0.0,9.826],"passed":true},{"actual":[[4.5,4.219,3.929,3.638,3.349,3.067,2.795],6.068,40.676],"check":"control: short isolation","expected":[[4.5,4.219,3.929,3.638,3.349,3.067,2.795],6.068,40.676],"passed":true},{"actual":[[],0.0,0.0],"check":"control: boundary zero days","expected":[[],0.0,0.0],"passed":true},{"actual":[[0.4,0.479,0.574,0.688,0.823,0.985,1.177,1.405,1.675,1.994,2.371,2.813],12.133,34.018],"check":"control: long run","expected":[[0.4,0.479,0.574,0.688,0.823,0.985,1.177,1.405,1.675,1.994,2.371,2.813],12.133,34.018],"passed":true},{"actual":[[20.0,4.8,1.083,0.241],14.419,37.828],"check":"control: exits exactly I","expected":[[20.0,4.8,1.083,0.241],14.419,37.828],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: moderate testing\", \"actual\": [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079], \"expected\": [[1.0, 1.195, 1.425, 1.695, 2.011, 2.377, 2.798, 3.277], 12.253, 35.079], \"passed\": true}, {\"check\": \"regression: aggressive testing saturates exits\", \"actual\": [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703], \"expected\": [[9.231, 5.317, 2.989, 1.657, 0.912], 12.859, 30.703], \"passed\": true}, {\"check\": \"control: no testing\", \"actual\": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826], \"expected\": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 0.0, 9.826], \"passed\": true}, {\"check\": \"control: short isolation\", \"actual\": [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676], \"expected\": [[4.5, 4.219, 3.929, 3.638, 3.349, 3.067, 2.795], 6.068, 40.676], \"passed\": true}, {\"check\": \"control: boundary zero days\", \"actual\": [[], 0.0, 0.0], \"expected\": [[], 0.0, 0.0], \"passed\": true}, {\"check\": \"control: long run\", \"actual\": [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018], \"expected\": [[0.4, 0.479, 0.574, 0.688, 0.823, 0.985, 1.177, 1.405, 1.675, 1.994, 2.371, 2.813], 12.133, 34.018], \"passed\": true}, {\"check\": \"control: exits exactly I\", \"actual\": [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828], \"expected\": [[20.0, 4.8, 1.083, 0.241], 14.419, 37.828], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}