{"abstract":"Data-entry errors produce household SARs above 100%.","category":"Epidemic compartment models","checks":7,"contract":"Each household is [size, index_cases, secondary]; skip households without an index case, without members at risk, or with more secondaries than at-risk members; pooled SAR = sum secondary / sum (size-index); per-size table sorted by size ascending; return [pooled rounded 6 or None, table].","evaluation_group":"w2-epidemic-household-sar","failed_approach":"Clamping keeps an inconsistent record in the estimate.","family":"w2-epidemic-household-sar-secondary-consistency-guard","id":"FA-65296","implementations":{"attempt":{"sha256":"a5172652c59e7b15ee06256415373417c4df9adc535a1e441c063a8ed73bc066","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(households):\n    num = 0\n    den = 0\n    by_size = {}\n    for size, index, secondary in households:\n        at_risk = size - index\n        if index < 1 or at_risk <= 0:\n            continue\n        secondary = min(secondary, at_risk)\n        num += secondary\n        den += at_risk\n        a, b = by_size.get(size, (0, 0))\n        by_size[size] = (a + secondary, b + at_risk)\n    overall = round(num / den, 6) if den else None\n    table = [[k, round(a / b, 6)] for k, (a, b) in sorted(by_size.items())]\n    return [overall, table]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: two index cases', ([[6, 2, 3], [6, 1, 1], [3, 1, 1]],), [0.454545, [[3, 0.5], [6, 0.444444]]]),\n  ('control: no index household', ([[4, 0, 0], [4, 1, 1], [3, 1, 2]],), [0.6, [[3, 1.0], [4, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]]),\n  ('control: all index', ([[2, 2, 0], [3, 3, 0]],), [None, []]),\n  ('control: large and small',\n   ([[8, 1, 6], [2, 1, 1], [8, 2, 1], [3, 1, 0]],),\n   [0.5, [[2, 1.0], [3, 0.0], [8, 0.538462]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: two index cases', ([[6, 2, 3], [6, 1, 1], [3, 1, 1]],), [0.454545, [[3, 0.5], [6, 0.444444]]]),\n  ('control: no index household', ([[4, 0, 0], [4, 1, 1], [3, 1, 2]],), [0.6, [[3, 1.0], [4, 0.333333]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]]),\n  ('control: all index', ([[2, 2, 0], [3, 3, 0]],), [None, []]),\n  ('control: large and small',\n   ([[8, 1, 6], [2, 1, 1], [8, 2, 1], [3, 1, 0]],),\n   [0.5, [[2, 1.0], [3, 0.0], [8, 0.538462]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: two index cases', ([[6, 2, 3], [6, 1, 1], [3, 1, 1]],), [0.454545, [[3, 0.5], [6, 0.444444]]]),\n  ('control: no index household', ([[4, 0, 0], [4, 1, 1], [3, 1, 2]],), [0.6, [[3, 1.0], [4, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]]),\n  ('control: all index', ([[2, 2, 0], [3, 3, 0]],), [None, []]),\n  ('control: large and small',\n   ([[8, 1, 6], [2, 1, 1], [8, 2, 1], [3, 1, 0]],),\n   [0.5, [[2, 1.0], [3, 0.0], [8, 0.538462]]])]]\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":"d66c5ce7dfb2abdc0a6a520eb5b87b32e30a2ea3366583d7c39eec32eca0e317","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(households):\n    num = 0\n    den = 0\n    by_size = {}\n    for size, index, secondary in households:\n        at_risk = size - index\n        if index < 1 or at_risk <= 0:\n            continue\n        num += secondary\n        den += at_risk\n        a, b = by_size.get(size, (0, 0))\n        by_size[size] = (a + secondary, b + at_risk)\n    overall = round(num / den, 6) if den else None\n    table = [[k, round(a / b, 6)] for k, (a, b) in sorted(by_size.items())]\n    return [overall, table]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: two index cases', ([[6, 2, 3], [6, 1, 1], [3, 1, 1]],), [0.454545, [[3, 0.5], [6, 0.444444]]]),\n  ('control: no index household', ([[4, 0, 0], [4, 1, 1], [3, 1, 2]],), [0.6, [[3, 1.0], [4, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]]),\n  ('control: all index', ([[2, 2, 0], [3, 3, 0]],), [None, []]),\n  ('control: large and small',\n   ([[8, 1, 6], [2, 1, 1], [8, 2, 1], [3, 1, 0]],),\n   [0.5, [[2, 1.0], [3, 0.0], [8, 0.538462]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: two index cases', ([[6, 2, 3], [6, 1, 1], [3, 1, 1]],), [0.454545, [[3, 0.5], [6, 0.444444]]]),\n  ('control: no index household', ([[4, 0, 0], [4, 1, 1], [3, 1, 2]],), [0.6, [[3, 1.0], [4, 0.333333]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]]),\n  ('control: all index', ([[2, 2, 0], [3, 3, 0]],), [None, []]),\n  ('control: large and small',\n   ([[8, 1, 6], [2, 1, 1], [8, 2, 1], [3, 1, 0]],),\n   [0.5, [[2, 1.0], [3, 0.0], [8, 0.538462]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: two index cases', ([[6, 2, 3], [6, 1, 1], [3, 1, 1]],), [0.454545, [[3, 0.5], [6, 0.444444]]]),\n  ('control: no index household', ([[4, 0, 0], [4, 1, 1], [3, 1, 2]],), [0.6, [[3, 1.0], [4, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]]),\n  ('control: all index', ([[2, 2, 0], [3, 3, 0]],), [None, []]),\n  ('control: large and small',\n   ([[8, 1, 6], [2, 1, 1], [8, 2, 1], [3, 1, 0]],),\n   [0.5, [[2, 1.0], [3, 0.0], [8, 0.538462]]])]]\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":"4042ba9927c9a3e3951d6eddfaf040e88e598a939336947d9deafc05d7e04efa","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(households):\n    num = 0\n    den = 0\n    by_size = {}\n    for size, index, secondary in households:\n        at_risk = size - index\n        if index < 1 or at_risk <= 0:\n            continue\n        if secondary > at_risk:\n            continue\n        num += secondary\n        den += at_risk\n        a, b = by_size.get(size, (0, 0))\n        by_size[size] = (a + secondary, b + at_risk)\n    overall = round(num / den, 6) if den else None\n    table = [[k, round(a / b, 6)] for k, (a, b) in sorted(by_size.items())]\n    return [overall, table]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: two index cases', ([[6, 2, 3], [6, 1, 1], [3, 1, 1]],), [0.454545, [[3, 0.5], [6, 0.444444]]]),\n  ('control: no index household', ([[4, 0, 0], [4, 1, 1], [3, 1, 2]],), [0.6, [[3, 1.0], [4, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]]),\n  ('control: all index', ([[2, 2, 0], [3, 3, 0]],), [None, []]),\n  ('control: large and small',\n   ([[8, 1, 6], [2, 1, 1], [8, 2, 1], [3, 1, 0]],),\n   [0.5, [[2, 1.0], [3, 0.0], [8, 0.538462]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: two index cases', ([[6, 2, 3], [6, 1, 1], [3, 1, 1]],), [0.454545, [[3, 0.5], [6, 0.444444]]]),\n  ('control: no index household', ([[4, 0, 0], [4, 1, 1], [3, 1, 2]],), [0.6, [[3, 1.0], [4, 0.333333]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]]),\n  ('control: all index', ([[2, 2, 0], [3, 3, 0]],), [None, []]),\n  ('control: large and small',\n   ([[8, 1, 6], [2, 1, 1], [8, 2, 1], [3, 1, 0]],),\n   [0.5, [[2, 1.0], [3, 0.0], [8, 0.538462]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: two index cases', ([[6, 2, 3], [6, 1, 1], [3, 1, 1]],), [0.454545, [[3, 0.5], [6, 0.444444]]]),\n  ('control: no index household', ([[4, 0, 0], [4, 1, 1], [3, 1, 2]],), [0.6, [[3, 1.0], [4, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]])],\n [('control: mixed households',\n   ([[4, 1, 2], [3, 1, 0], [5, 2, 1], [2, 1, 1]],),\n   [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]]),\n  ('control: single-person household', ([[1, 1, 0], [2, 1, 1]],), [1.0, [[2, 1.0]]]),\n  ('regression: data error secondary too high',\n   ([[3, 1, 4], [3, 1, 1], [5, 1, 2]],),\n   [0.5, [[3, 0.5], [5, 0.5]]]),\n  ('control: empty input', ([],), [None, []]),\n  ('control: descending sizes',\n   ([[7, 1, 3], [2, 1, 0], [4, 1, 1]],),\n   [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]]),\n  ('control: all index', ([[2, 2, 0], [3, 3, 0]],), [None, []]),\n  ('control: large and small',\n   ([[8, 1, 6], [2, 1, 1], [8, 2, 1], [3, 1, 0]],),\n   [0.5, [[2, 1.0], [3, 0.0], [8, 0.538462]]])]]\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-household-sar-secondary-consistency-guard","generated_at":"2026-09-29T14:47:32.646072+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 secondary consistency guard rule: `if secondary > at_risk: / continue`.","root_cause":"Households reporting more secondaries than at-risk members are not skipped.","sha256":"fdacac65afaaf37334efe3cd6f58ff5434c11799a99369788d0ce171c4a68fb2","title":"Household secondary attack rate: secondary consistency guard · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.446,"exit_code":1,"observations":[{"actual":[0.444444,[[2,1.0],[3,0.0],[4,0.666667],[5,0.333333]]],"check":"control: mixed households","expected":[0.444444,[[2,1.0],[3,0.0],[4,0.666667],[5,0.333333]]],"passed":true},{"actual":[0.454545,[[3,0.5],[6,0.444444]]],"check":"control: two index cases","expected":[0.454545,[[3,0.5],[6,0.444444]]],"passed":true},{"actual":[0.6,[[3,1.0],[4,0.333333]]],"check":"control: no index household","expected":[0.6,[[3,1.0],[4,0.333333]]],"passed":true},{"actual":[1.0,[[2,1.0]]],"check":"control: single-person household","expected":[1.0,[[2,1.0]]],"passed":true},{"actual":[0.625,[[3,0.75],[5,0.5]]],"check":"regression: data error secondary too high","expected":[0.5,[[3,0.5],[5,0.5]]],"passed":false},{"actual":[null,[]],"check":"control: empty input","expected":[null,[]],"passed":true},{"actual":[0.4,[[2,0.0],[4,0.333333],[7,0.5]]],"check":"control: descending sizes","expected":[0.4,[[2,0.0],[4,0.333333],[7,0.5]]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: mixed households\", \"actual\": [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]], \"expected\": [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]], \"passed\": true}, {\"check\": \"control: two index cases\", \"actual\": [0.454545, [[3, 0.5], [6, 0.444444]]], \"expected\": [0.454545, [[3, 0.5], [6, 0.444444]]], \"passed\": true}, {\"check\": \"control: no index household\", \"actual\": [0.6, [[3, 1.0], [4, 0.333333]]], \"expected\": [0.6, [[3, 1.0], [4, 0.333333]]], \"passed\": true}, {\"check\": \"control: single-person household\", \"actual\": [1.0, [[2, 1.0]]], \"expected\": [1.0, [[2, 1.0]]], \"passed\": true}, {\"check\": \"regression: data error secondary too high\", \"actual\": [0.625, [[3, 0.75], [5, 0.5]]], \"expected\": [0.5, [[3, 0.5], [5, 0.5]]], \"passed\": false}, {\"check\": \"control: empty input\", \"actual\": [null, []], \"expected\": [null, []], \"passed\": true}, {\"check\": \"control: descending sizes\", \"actual\": [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]], \"expected\": [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.037,"exit_code":1,"observations":[{"actual":[0.444444,[[2,1.0],[3,0.0],[4,0.666667],[5,0.333333]]],"check":"control: mixed households","expected":[0.444444,[[2,1.0],[3,0.0],[4,0.666667],[5,0.333333]]],"passed":true},{"actual":[0.454545,[[3,0.5],[6,0.444444]]],"check":"control: two index cases","expected":[0.454545,[[3,0.5],[6,0.444444]]],"passed":true},{"actual":[0.6,[[3,1.0],[4,0.333333]]],"check":"control: no index household","expected":[0.6,[[3,1.0],[4,0.333333]]],"passed":true},{"actual":[1.0,[[2,1.0]]],"check":"control: single-person household","expected":[1.0,[[2,1.0]]],"passed":true},{"actual":[0.875,[[3,1.25],[5,0.5]]],"check":"regression: data error secondary too high","expected":[0.5,[[3,0.5],[5,0.5]]],"passed":false},{"actual":[null,[]],"check":"control: empty input","expected":[null,[]],"passed":true},{"actual":[0.4,[[2,0.0],[4,0.333333],[7,0.5]]],"check":"control: descending sizes","expected":[0.4,[[2,0.0],[4,0.333333],[7,0.5]]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: mixed households\", \"actual\": [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]], \"expected\": [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]], \"passed\": true}, {\"check\": \"control: two index cases\", \"actual\": [0.454545, [[3, 0.5], [6, 0.444444]]], \"expected\": [0.454545, [[3, 0.5], [6, 0.444444]]], \"passed\": true}, {\"check\": \"control: no index household\", \"actual\": [0.6, [[3, 1.0], [4, 0.333333]]], \"expected\": [0.6, [[3, 1.0], [4, 0.333333]]], \"passed\": true}, {\"check\": \"control: single-person household\", \"actual\": [1.0, [[2, 1.0]]], \"expected\": [1.0, [[2, 1.0]]], \"passed\": true}, {\"check\": \"regression: data error secondary too high\", \"actual\": [0.875, [[3, 1.25], [5, 0.5]]], \"expected\": [0.5, [[3, 0.5], [5, 0.5]]], \"passed\": false}, {\"check\": \"control: empty input\", \"actual\": [null, []], \"expected\": [null, []], \"passed\": true}, {\"check\": \"control: descending sizes\", \"actual\": [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]], \"expected\": [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.875,"exit_code":0,"observations":[{"actual":[0.444444,[[2,1.0],[3,0.0],[4,0.666667],[5,0.333333]]],"check":"control: mixed households","expected":[0.444444,[[2,1.0],[3,0.0],[4,0.666667],[5,0.333333]]],"passed":true},{"actual":[0.454545,[[3,0.5],[6,0.444444]]],"check":"control: two index cases","expected":[0.454545,[[3,0.5],[6,0.444444]]],"passed":true},{"actual":[0.6,[[3,1.0],[4,0.333333]]],"check":"control: no index household","expected":[0.6,[[3,1.0],[4,0.333333]]],"passed":true},{"actual":[1.0,[[2,1.0]]],"check":"control: single-person household","expected":[1.0,[[2,1.0]]],"passed":true},{"actual":[0.5,[[3,0.5],[5,0.5]]],"check":"regression: data error secondary too high","expected":[0.5,[[3,0.5],[5,0.5]]],"passed":true},{"actual":[null,[]],"check":"control: empty input","expected":[null,[]],"passed":true},{"actual":[0.4,[[2,0.0],[4,0.333333],[7,0.5]]],"check":"control: descending sizes","expected":[0.4,[[2,0.0],[4,0.333333],[7,0.5]]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control: mixed households\", \"actual\": [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]], \"expected\": [0.444444, [[2, 1.0], [3, 0.0], [4, 0.666667], [5, 0.333333]]], \"passed\": true}, {\"check\": \"control: two index cases\", \"actual\": [0.454545, [[3, 0.5], [6, 0.444444]]], \"expected\": [0.454545, [[3, 0.5], [6, 0.444444]]], \"passed\": true}, {\"check\": \"control: no index household\", \"actual\": [0.6, [[3, 1.0], [4, 0.333333]]], \"expected\": [0.6, [[3, 1.0], [4, 0.333333]]], \"passed\": true}, {\"check\": \"control: single-person household\", \"actual\": [1.0, [[2, 1.0]]], \"expected\": [1.0, [[2, 1.0]]], \"passed\": true}, {\"check\": \"regression: data error secondary too high\", \"actual\": [0.5, [[3, 0.5], [5, 0.5]]], \"expected\": [0.5, [[3, 0.5], [5, 0.5]]], \"passed\": true}, {\"check\": \"control: empty input\", \"actual\": [null, []], \"expected\": [null, []], \"passed\": true}, {\"check\": \"control: descending sizes\", \"actual\": [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]], \"expected\": [0.4, [[2, 0.0], [4, 0.333333], [7, 0.5]]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}