{"abstract":"A stone whose edge overlaps the twelve-foot ring does not count.","category":"Sports scoring and tiebreakers","checks":10,"contract":"Curling end result. stones rows are [team, distance_mm] from the button to the stone centre; a stone counts only if it touches the house: distance <= 1830 + 145 (house radius plus stone radius). The team with the closest counting stone scores one point for each of its counting stones strictly closer than the opponent's closest counting stone (all its counting stones if the opponent has none). If no stone counts, or the two closest counting stones of different teams are at the same distance, the end is blank and the hammer stays. After a score the hammer goes to the team that did not score. Return [scoring team or None, points, hammer for next end].","evaluation_group":"w2-sports-scoring-curling-end-count","failed_approach":"Adding the full stone diameter counts stones that are clear of the house.","family":"w2-sports-scoring-curling-end-count-house-edge","id":"FA-84221","implementations":{"attempt":{"sha256":"b5082f853e2c661e1418bd4dd5a0d78633a16625a5ed756ca6f2da4c72bff05c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(stones, hammer):\n    inside = sorted((d, t) for t, d in stones if d <= 1830 + 290)\n    tie = bool(inside) and any(d == inside[0][0] and t != inside[0][1] for d, t in inside)\n    if not inside or tie:\n        return [None, 0, hammer]\n    best_d, team = inside[0]\n    opp = [d for d, t in inside if t != team]\n    limit = min(opp) if opp else None\n    points = sum(1 for d, t in inside if t == team and (limit is None or d < limit))\n    nxt = 'B' if team == 'A' else 'A'\n    return [team, points, nxt]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge',\n   ([['A', 1577], ['A', 237], ['A', 1562], ['A', 1383], ['A', 1874]], 'A'),\n   ['A', 5, 'B']),\n  ('regression: house edge', ([['B', 1991]], 'B'), [None, 0, 'B']),\n  ('variant scenario 1', ([], 'B'), [None, 0, 'B']),\n  ('variant scenario 2',\n   ([['B', 505], ['B', 120], ['A', 1845], ['A', 444], ['B', 357], ['A', 1976]], 'A'),\n   ['B', 2, 'A'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['B', 1985]], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 1837], ['A', 251]], 'A'), ['A', 2, 'B']),\n  ('variant scenario 1',\n   ([['B', 97],\n     ['B', 1854],\n     ['A', 384],\n     ['A', 139],\n     ['A', 363],\n     ['B', 479],\n     ['A', 71],\n     ['A', 1720]],\n    'B'),\n   ['A', 1, 'B']),\n  ('variant scenario 2', ([['B', 155]], 'A'), ['B', 1, 'A'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 2065]], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['B', 1921], ['B', 241], ['A', 2086]], 'B'), ['B', 2, 'A']),\n  ('variant scenario 1', ([['A', 1555], ['A', 2016], ['B', 251]], 'B'), ['B', 1, 'A']),\n  ('variant scenario 2',\n   ([['A', 2048], ['B', 547], ['B', 1960], ['A', 1783]], 'B'),\n   ['B', 1, 'A'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 2074], ['A', 375], ['A', 2060]], 'B'), ['A', 1, 'B']),\n  ('regression: house edge',\n   ([['B', 70], ['B', 1549], ['A', 1913], ['B', 1896], ['A', 2038]], 'B'),\n   ['B', 3, 'A']),\n  ('variant scenario 1',\n   ([['A', 2096], ['A', 1446], ['A', 119], ['B', 948], ['A', 63], ['A', 792]], 'A'),\n   ['A', 3, 'B']),\n  ('variant scenario 2', ([['A', 1724]], 'B'), ['A', 1, 'B'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 237], ['A', 1878], ['B', 1945]], 'B'), ['A', 2, 'B']),\n  ('regression: house edge',\n   ([['A', 2098], ['A', 1789], ['A', 1751], ['A', 1825], ['A', 1965], ['A', 389]], 'A'),\n   ['A', 5, 'B']),\n  ('variant scenario 1', ([['B', 50]], 'A'), ['B', 1, 'A']),\n  ('variant scenario 2',\n   ([['B', 2106],\n     ['A', 1855],\n     ['A', 1782],\n     ['A', 86],\n     ['B', 185],\n     ['A', 212],\n     ['A', 1713],\n     ['A', 366]],\n    'B'),\n   ['A', 1, 'B'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"7b28763f40395b1089c40fb0894ecd66b6b37d6341be174c65d4600d39b4de1c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(stones, hammer):\n    inside = sorted((d, t) for t, d in stones if d <= 1830)\n    tie = bool(inside) and any(d == inside[0][0] and t != inside[0][1] for d, t in inside)\n    if not inside or tie:\n        return [None, 0, hammer]\n    best_d, team = inside[0]\n    opp = [d for d, t in inside if t != team]\n    limit = min(opp) if opp else None\n    points = sum(1 for d, t in inside if t == team and (limit is None or d < limit))\n    nxt = 'B' if team == 'A' else 'A'\n    return [team, points, nxt]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge',\n   ([['A', 1577], ['A', 237], ['A', 1562], ['A', 1383], ['A', 1874]], 'A'),\n   ['A', 5, 'B']),\n  ('regression: house edge', ([['B', 1991]], 'B'), [None, 0, 'B']),\n  ('variant scenario 1', ([], 'B'), [None, 0, 'B']),\n  ('variant scenario 2',\n   ([['B', 505], ['B', 120], ['A', 1845], ['A', 444], ['B', 357], ['A', 1976]], 'A'),\n   ['B', 2, 'A'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['B', 1985]], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 1837], ['A', 251]], 'A'), ['A', 2, 'B']),\n  ('variant scenario 1',\n   ([['B', 97],\n     ['B', 1854],\n     ['A', 384],\n     ['A', 139],\n     ['A', 363],\n     ['B', 479],\n     ['A', 71],\n     ['A', 1720]],\n    'B'),\n   ['A', 1, 'B']),\n  ('variant scenario 2', ([['B', 155]], 'A'), ['B', 1, 'A'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 2065]], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['B', 1921], ['B', 241], ['A', 2086]], 'B'), ['B', 2, 'A']),\n  ('variant scenario 1', ([['A', 1555], ['A', 2016], ['B', 251]], 'B'), ['B', 1, 'A']),\n  ('variant scenario 2',\n   ([['A', 2048], ['B', 547], ['B', 1960], ['A', 1783]], 'B'),\n   ['B', 1, 'A'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 2074], ['A', 375], ['A', 2060]], 'B'), ['A', 1, 'B']),\n  ('regression: house edge',\n   ([['B', 70], ['B', 1549], ['A', 1913], ['B', 1896], ['A', 2038]], 'B'),\n   ['B', 3, 'A']),\n  ('variant scenario 1',\n   ([['A', 2096], ['A', 1446], ['A', 119], ['B', 948], ['A', 63], ['A', 792]], 'A'),\n   ['A', 3, 'B']),\n  ('variant scenario 2', ([['A', 1724]], 'B'), ['A', 1, 'B'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 237], ['A', 1878], ['B', 1945]], 'B'), ['A', 2, 'B']),\n  ('regression: house edge',\n   ([['A', 2098], ['A', 1789], ['A', 1751], ['A', 1825], ['A', 1965], ['A', 389]], 'A'),\n   ['A', 5, 'B']),\n  ('variant scenario 1', ([['B', 50]], 'A'), ['B', 1, 'A']),\n  ('variant scenario 2',\n   ([['B', 2106],\n     ['A', 1855],\n     ['A', 1782],\n     ['A', 86],\n     ['B', 185],\n     ['A', 212],\n     ['A', 1713],\n     ['A', 366]],\n    'B'),\n   ['A', 1, 'B'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"3c6899e35030c708035ce6a31c97b3dce8b52d857c145ae79866aeb0b82a3844","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(stones, hammer):\n    inside = sorted((d, t) for t, d in stones if d <= 1830 + 145)\n    tie = bool(inside) and any(d == inside[0][0] and t != inside[0][1] for d, t in inside)\n    if not inside or tie:\n        return [None, 0, hammer]\n    best_d, team = inside[0]\n    opp = [d for d, t in inside if t != team]\n    limit = min(opp) if opp else None\n    points = sum(1 for d, t in inside if t == team and (limit is None or d < limit))\n    nxt = 'B' if team == 'A' else 'A'\n    return [team, points, nxt]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge',\n   ([['A', 1577], ['A', 237], ['A', 1562], ['A', 1383], ['A', 1874]], 'A'),\n   ['A', 5, 'B']),\n  ('regression: house edge', ([['B', 1991]], 'B'), [None, 0, 'B']),\n  ('variant scenario 1', ([], 'B'), [None, 0, 'B']),\n  ('variant scenario 2',\n   ([['B', 505], ['B', 120], ['A', 1845], ['A', 444], ['B', 357], ['A', 1976]], 'A'),\n   ['B', 2, 'A'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['B', 1985]], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 1837], ['A', 251]], 'A'), ['A', 2, 'B']),\n  ('variant scenario 1',\n   ([['B', 97],\n     ['B', 1854],\n     ['A', 384],\n     ['A', 139],\n     ['A', 363],\n     ['B', 479],\n     ['A', 71],\n     ['A', 1720]],\n    'B'),\n   ['A', 1, 'B']),\n  ('variant scenario 2', ([['B', 155]], 'A'), ['B', 1, 'A'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 2065]], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['B', 1921], ['B', 241], ['A', 2086]], 'B'), ['B', 2, 'A']),\n  ('variant scenario 1', ([['A', 1555], ['A', 2016], ['B', 251]], 'B'), ['B', 1, 'A']),\n  ('variant scenario 2',\n   ([['A', 2048], ['B', 547], ['B', 1960], ['A', 1783]], 'B'),\n   ['B', 1, 'A'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 2074], ['A', 375], ['A', 2060]], 'B'), ['A', 1, 'B']),\n  ('regression: house edge',\n   ([['B', 70], ['B', 1549], ['A', 1913], ['B', 1896], ['A', 2038]], 'B'),\n   ['B', 3, 'A']),\n  ('variant scenario 1',\n   ([['A', 2096], ['A', 1446], ['A', 119], ['B', 948], ['A', 63], ['A', 792]], 'A'),\n   ['A', 3, 'B']),\n  ('variant scenario 2', ([['A', 1724]], 'B'), ['A', 1, 'B'])],\n [('control single shot', ([['A', 100], ['B', 400]], 'A'), ['A', 1, 'B']),\n  ('boundary stone biting house edge', ([['B', 1975]], 'A'), ['B', 1, 'A']),\n  ('boundary stone just outside', ([['B', 1976]], 'A'), [None, 0, 'A']),\n  ('control steal of two', ([['B', 50], ['B', 300], ['A', 500]], 'A'), ['B', 2, 'A']),\n  ('boundary measured tie', ([['A', 200], ['B', 200]], 'B'), [None, 0, 'B']),\n  ('control empty house', ([], 'A'), [None, 0, 'A']),\n  ('regression: house edge', ([['A', 237], ['A', 1878], ['B', 1945]], 'B'), ['A', 2, 'B']),\n  ('regression: house edge',\n   ([['A', 2098], ['A', 1789], ['A', 1751], ['A', 1825], ['A', 1965], ['A', 389]], 'A'),\n   ['A', 5, 'B']),\n  ('variant scenario 1', ([['B', 50]], 'A'), ['B', 1, 'A']),\n  ('variant scenario 2',\n   ([['B', 2106],\n     ['A', 1855],\n     ['A', 1782],\n     ['A', 86],\n     ['B', 185],\n     ['A', 212],\n     ['A', 1713],\n     ['A', 366]],\n    'B'),\n   ['A', 1, 'B'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"Stipulated, bounded toy contract stated in the contract field; not a claim of conformance with any governing body rulebook or operator house rules. 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-sports-scoring-curling-end-count-house-edge","generated_at":"2026-09-29T14:50:28.923319+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Curling scoreboards compute end scores and hammer possession from measured stone positions.","repair":"Add the stone radius to the house radius.","root_cause":"The house test compares the stone centre with the house radius only.","sha256":"8120fb4163aa4d0856e9c38289390e2d6e8e9163e24e1a666d506836ea814190","title":"Stones biting the house edge ignored · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.124,"exit_code":1,"observations":[{"actual":["A",1,"B"],"check":"control single shot","expected":["A",1,"B"],"passed":true},{"actual":["B",1,"A"],"check":"boundary stone biting house edge","expected":["B",1,"A"],"passed":true},{"actual":["B",1,"A"],"check":"boundary stone just outside","expected":[null,0,"A"],"passed":false},{"actual":["B",2,"A"],"check":"control steal of two","expected":["B",2,"A"],"passed":true},{"actual":[null,0,"B"],"check":"boundary measured tie","expected":[null,0,"B"],"passed":true},{"actual":[null,0,"A"],"check":"control empty house","expected":[null,0,"A"],"passed":true},{"actual":["A",5,"B"],"check":"regression: house edge","expected":["A",5,"B"],"passed":true},{"actual":["B",1,"A"],"check":"regression: house edge","expected":[null,0,"B"],"passed":false},{"actual":[null,0,"B"],"check":"variant scenario 1","expected":[null,0,"B"],"passed":true},{"actual":["B",2,"A"],"check":"variant scenario 2","expected":["B",2,"A"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single shot\", \"actual\": [\"A\", 1, \"B\"], \"expected\": [\"A\", 1, \"B\"], \"passed\": true}, {\"check\": \"boundary stone biting house edge\", \"actual\": [\"B\", 1, \"A\"], \"expected\": [\"B\", 1, \"A\"], \"passed\": true}, {\"check\": \"boundary stone just outside\", \"actual\": [\"B\", 1, \"A\"], \"expected\": [null, 0, \"A\"], \"passed\": false}, {\"check\": \"control steal of two\", \"actual\": [\"B\", 2, \"A\"], \"expected\": [\"B\", 2, \"A\"], \"passed\": true}, {\"check\": \"boundary measured tie\", \"actual\": [null, 0, \"B\"], \"expected\": [null, 0, \"B\"], \"passed\": true}, {\"check\": \"control empty house\", \"actual\": [null, 0, \"A\"], \"expected\": [null, 0, \"A\"], \"passed\": true}, {\"check\": \"regression: house edge\", \"actual\": [\"A\", 5, \"B\"], \"expected\": [\"A\", 5, \"B\"], \"passed\": true}, {\"check\": \"regression: house edge\", \"actual\": [\"B\", 1, \"A\"], \"expected\": [null, 0, \"B\"], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [null, 0, \"B\"], \"expected\": [null, 0, \"B\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"B\", 2, \"A\"], \"expected\": [\"B\", 2, \"A\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.647,"exit_code":1,"observations":[{"actual":["A",1,"B"],"check":"control single shot","expected":["A",1,"B"],"passed":true},{"actual":[null,0,"A"],"check":"boundary stone biting house edge","expected":["B",1,"A"],"passed":false},{"actual":[null,0,"A"],"check":"boundary stone just outside","expected":[null,0,"A"],"passed":true},{"actual":["B",2,"A"],"check":"control steal of two","expected":["B",2,"A"],"passed":true},{"actual":[null,0,"B"],"check":"boundary measured tie","expected":[null,0,"B"],"passed":true},{"actual":[null,0,"A"],"check":"control empty house","expected":[null,0,"A"],"passed":true},{"actual":["A",4,"B"],"check":"regression: house edge","expected":["A",5,"B"],"passed":false},{"actual":[null,0,"B"],"check":"regression: house edge","expected":[null,0,"B"],"passed":true},{"actual":[null,0,"B"],"check":"variant scenario 1","expected":[null,0,"B"],"passed":true},{"actual":["B",2,"A"],"check":"variant scenario 2","expected":["B",2,"A"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single shot\", \"actual\": [\"A\", 1, \"B\"], \"expected\": [\"A\", 1, \"B\"], \"passed\": true}, {\"check\": \"boundary stone biting house edge\", \"actual\": [null, 0, \"A\"], \"expected\": [\"B\", 1, \"A\"], \"passed\": false}, {\"check\": \"boundary stone just outside\", \"actual\": [null, 0, \"A\"], \"expected\": [null, 0, \"A\"], \"passed\": true}, {\"check\": \"control steal of two\", \"actual\": [\"B\", 2, \"A\"], \"expected\": [\"B\", 2, \"A\"], \"passed\": true}, {\"check\": \"boundary measured tie\", \"actual\": [null, 0, \"B\"], \"expected\": [null, 0, \"B\"], \"passed\": true}, {\"check\": \"control empty house\", \"actual\": [null, 0, \"A\"], \"expected\": [null, 0, \"A\"], \"passed\": true}, {\"check\": \"regression: house edge\", \"actual\": [\"A\", 4, \"B\"], \"expected\": [\"A\", 5, \"B\"], \"passed\": false}, {\"check\": \"regression: house edge\", \"actual\": [null, 0, \"B\"], \"expected\": [null, 0, \"B\"], \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [null, 0, \"B\"], \"expected\": [null, 0, \"B\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"B\", 2, \"A\"], \"expected\": [\"B\", 2, \"A\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.198,"exit_code":0,"observations":[{"actual":["A",1,"B"],"check":"control single shot","expected":["A",1,"B"],"passed":true},{"actual":["B",1,"A"],"check":"boundary stone biting house edge","expected":["B",1,"A"],"passed":true},{"actual":[null,0,"A"],"check":"boundary stone just outside","expected":[null,0,"A"],"passed":true},{"actual":["B",2,"A"],"check":"control steal of two","expected":["B",2,"A"],"passed":true},{"actual":[null,0,"B"],"check":"boundary measured tie","expected":[null,0,"B"],"passed":true},{"actual":[null,0,"A"],"check":"control empty house","expected":[null,0,"A"],"passed":true},{"actual":["A",5,"B"],"check":"regression: house edge","expected":["A",5,"B"],"passed":true},{"actual":[null,0,"B"],"check":"regression: house edge","expected":[null,0,"B"],"passed":true},{"actual":[null,0,"B"],"check":"variant scenario 1","expected":[null,0,"B"],"passed":true},{"actual":["B",2,"A"],"check":"variant scenario 2","expected":["B",2,"A"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single shot\", \"actual\": [\"A\", 1, \"B\"], \"expected\": [\"A\", 1, \"B\"], \"passed\": true}, {\"check\": \"boundary stone biting house edge\", \"actual\": [\"B\", 1, \"A\"], \"expected\": [\"B\", 1, \"A\"], \"passed\": true}, {\"check\": \"boundary stone just outside\", \"actual\": [null, 0, \"A\"], \"expected\": [null, 0, \"A\"], \"passed\": true}, {\"check\": \"control steal of two\", \"actual\": [\"B\", 2, \"A\"], \"expected\": [\"B\", 2, \"A\"], \"passed\": true}, {\"check\": \"boundary measured tie\", \"actual\": [null, 0, \"B\"], \"expected\": [null, 0, \"B\"], \"passed\": true}, {\"check\": \"control empty house\", \"actual\": [null, 0, \"A\"], \"expected\": [null, 0, \"A\"], \"passed\": true}, {\"check\": \"regression: house edge\", \"actual\": [\"A\", 5, \"B\"], \"expected\": [\"A\", 5, \"B\"], \"passed\": true}, {\"check\": \"regression: house edge\", \"actual\": [null, 0, \"B\"], \"expected\": [null, 0, \"B\"], \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [null, 0, \"B\"], \"expected\": [null, 0, \"B\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"B\", 2, \"A\"], \"expected\": [\"B\", 2, \"A\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}