{"abstract":"AGA games are scored like Chinese games.","category":"Go territory scoring","checks":8,"contract":"Input [rules, handicap, area_b, area_w, komi_tenths]. With handicap >= 2, white receives handicap points under chinese and handicap-1 under aga; other rules none. Return black margin in tenths.","evaluation_group":"w2-go-territory-scoring-handicap-comp","failed_approach":"Halving the handicap under-compensates larger handicaps.","family":"w2-go-territory-scoring-handicap-comp-aga-reduction","id":"FA-83071","implementations":{"attempt":{"sha256":"1418412edda57d2e0079593c712bbc0dd2b16b96a2448e739b76ebc13390bd31","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    rules, h, ab, aw, komi = x\n    comp = 0\n    if h >= 2:\n        if rules == 'chinese':\n            comp = h\n        elif rules == 'aga':\n            comp = h // 2\n    return ab * 10 - (aw + comp) * 10 - komi\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[['aga', 5, 177, 168, 5], 45], [['aga', 4, 151, 193, 65], -515], [['japanese', 2, 192, 168, 5], 235], [['japanese', 6, 150, 163, 0], -130], [['korean', 4, 186, 189, 0], -30], [['japanese', 0, 194, 172, 5], 215], [['aga', 5, 208, 202, 65], -45], [['aga', 9, 154, 181, 75], -425]], [[['aga', 5, 208, 202, 65], -45], [['aga', 8, 157, 153, 0], -30], [['japanese', 9, 154, 170, 65], -225], [['japanese', 5, 174, 162, 5], 115], [['korean', 6, 207, 201, 5], 55], [['korean', 0, 160, 185, 65], -315], [['japanese', 1, 209, 204, 5], 45], [['aga', 4, 197, 187, 75], -5]], [[['korean', 2, 163, 163, 65], -65], [['aga', 0, 154, 183, 75], -365], [['chinese', 0, 190, 164, 75], 185], [['korean', 2, 151, 171, 75], -275], [['chinese', 5, 192, 202, 5], -155], [['korean', 2, 172, 205, 75], -405], [['aga', 2, 184, 170, 65], 65], [['aga', 7, 169, 174, 65], -175]], [[['aga', 8, 157, 153, 0], -30], [['aga', 2, 184, 170, 65], 65], [['korean', 2, 160, 206, 65], -525], [['korean', 7, 159, 177, 0], -180], [['aga', 9, 154, 181, 75], -425], [['japanese', 7, 205, 198, 0], 70], [['aga', 7, 191, 209, 75], -315], [['aga', 7, 202, 195, 65], -55]], [[['korean', 8, 159, 195, 0], -360], [['korean', 4, 163, 154, 0], 90], [['aga', 7, 202, 195, 65], -55], [['korean', 1, 174, 169, 75], -25], [['korean', 7, 195, 188, 65], 5], [['korean', 8, 166, 205, 5], -395], [['aga', 9, 167, 184, 65], -315], [['aga', 6, 185, 208, 0], -280]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"compensation case %d\" % i, 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":"2a400715e534b432b6cb4f5050d4b95f2159511033a5e017d93585f1b0ab84cc","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    rules, h, ab, aw, komi = x\n    comp = 0\n    if h >= 2:\n        if rules == 'chinese':\n            comp = h\n        elif rules == 'aga':\n            comp = h\n    return ab * 10 - (aw + comp) * 10 - komi\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[['aga', 5, 177, 168, 5], 45], [['aga', 4, 151, 193, 65], -515], [['japanese', 2, 192, 168, 5], 235], [['japanese', 6, 150, 163, 0], -130], [['korean', 4, 186, 189, 0], -30], [['japanese', 0, 194, 172, 5], 215], [['aga', 5, 208, 202, 65], -45], [['aga', 9, 154, 181, 75], -425]], [[['aga', 5, 208, 202, 65], -45], [['aga', 8, 157, 153, 0], -30], [['japanese', 9, 154, 170, 65], -225], [['japanese', 5, 174, 162, 5], 115], [['korean', 6, 207, 201, 5], 55], [['korean', 0, 160, 185, 65], -315], [['japanese', 1, 209, 204, 5], 45], [['aga', 4, 197, 187, 75], -5]], [[['korean', 2, 163, 163, 65], -65], [['aga', 0, 154, 183, 75], -365], [['chinese', 0, 190, 164, 75], 185], [['korean', 2, 151, 171, 75], -275], [['chinese', 5, 192, 202, 5], -155], [['korean', 2, 172, 205, 75], -405], [['aga', 2, 184, 170, 65], 65], [['aga', 7, 169, 174, 65], -175]], [[['aga', 8, 157, 153, 0], -30], [['aga', 2, 184, 170, 65], 65], [['korean', 2, 160, 206, 65], -525], [['korean', 7, 159, 177, 0], -180], [['aga', 9, 154, 181, 75], -425], [['japanese', 7, 205, 198, 0], 70], [['aga', 7, 191, 209, 75], -315], [['aga', 7, 202, 195, 65], -55]], [[['korean', 8, 159, 195, 0], -360], [['korean', 4, 163, 154, 0], 90], [['aga', 7, 202, 195, 65], -55], [['korean', 1, 174, 169, 75], -25], [['korean', 7, 195, 188, 65], 5], [['korean', 8, 166, 205, 5], -395], [['aga', 9, 167, 184, 65], -315], [['aga', 6, 185, 208, 0], -280]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"compensation case %d\" % i, 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":"b70a960f9632d7df9dbfcad3cb702fca54eb0e1d92ebd21b1404a91ff1a693e8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    rules, h, ab, aw, komi = x\n    comp = 0\n    if h >= 2:\n        if rules == 'chinese':\n            comp = h\n        elif rules == 'aga':\n            comp = h - 1\n    return ab * 10 - (aw + comp) * 10 - komi\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[['aga', 5, 177, 168, 5], 45], [['aga', 4, 151, 193, 65], -515], [['japanese', 2, 192, 168, 5], 235], [['japanese', 6, 150, 163, 0], -130], [['korean', 4, 186, 189, 0], -30], [['japanese', 0, 194, 172, 5], 215], [['aga', 5, 208, 202, 65], -45], [['aga', 9, 154, 181, 75], -425]], [[['aga', 5, 208, 202, 65], -45], [['aga', 8, 157, 153, 0], -30], [['japanese', 9, 154, 170, 65], -225], [['japanese', 5, 174, 162, 5], 115], [['korean', 6, 207, 201, 5], 55], [['korean', 0, 160, 185, 65], -315], [['japanese', 1, 209, 204, 5], 45], [['aga', 4, 197, 187, 75], -5]], [[['korean', 2, 163, 163, 65], -65], [['aga', 0, 154, 183, 75], -365], [['chinese', 0, 190, 164, 75], 185], [['korean', 2, 151, 171, 75], -275], [['chinese', 5, 192, 202, 5], -155], [['korean', 2, 172, 205, 75], -405], [['aga', 2, 184, 170, 65], 65], [['aga', 7, 169, 174, 65], -175]], [[['aga', 8, 157, 153, 0], -30], [['aga', 2, 184, 170, 65], 65], [['korean', 2, 160, 206, 65], -525], [['korean', 7, 159, 177, 0], -180], [['aga', 9, 154, 181, 75], -425], [['japanese', 7, 205, 198, 0], 70], [['aga', 7, 191, 209, 75], -315], [['aga', 7, 202, 195, 65], -55]], [[['korean', 8, 159, 195, 0], -360], [['korean', 4, 163, 154, 0], 90], [['aga', 7, 202, 195, 65], -55], [['korean', 1, 174, 169, 75], -25], [['korean', 7, 195, 188, 65], 5], [['korean', 8, 166, 205, 5], -395], [['aga', 9, 167, 184, 65], -315], [['aga', 6, 185, 208, 0], -280]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"compensation case %d\" % i, 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":"Small rectangular toy boards given as strings of B, W and dot; a bounded teaching model of one scoring or bookkeeping rule, not a complete rules engine or server implementation. 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-go-territory-scoring-handicap-comp-aga-reduction","generated_at":"2026-09-29T14:50:18.107316+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Go servers and scoring tools compute this value automatically; a wrong answer changes a game result.","repair":"AGA gives handicap-1 points.","root_cause":"The AGA branch omits the minus-one adjustment.","sha256":"9ebbad44db0ec37a3cbd348e5b0b7b07a62a7624d9afcfe2e19db8d777972d43","title":"AGA compensation uses the full handicap count · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.868,"exit_code":1,"observations":[{"actual":65,"check":"compensation case 0","expected":45,"passed":false},{"actual":-505,"check":"compensation case 1","expected":-515,"passed":false},{"actual":235,"check":"compensation case 2","expected":235,"passed":true},{"actual":-130,"check":"compensation case 3","expected":-130,"passed":true},{"actual":-30,"check":"compensation case 4","expected":-30,"passed":true},{"actual":215,"check":"compensation case 5","expected":215,"passed":true},{"actual":-25,"check":"compensation case 6","expected":-45,"passed":false},{"actual":-385,"check":"compensation case 7","expected":-425,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"compensation case 0\", \"actual\": 65, \"expected\": 45, \"passed\": false}, {\"check\": \"compensation case 1\", \"actual\": -505, \"expected\": -515, \"passed\": false}, {\"check\": \"compensation case 2\", \"actual\": 235, \"expected\": 235, \"passed\": true}, {\"check\": \"compensation case 3\", \"actual\": -130, \"expected\": -130, \"passed\": true}, {\"check\": \"compensation case 4\", \"actual\": -30, \"expected\": -30, \"passed\": true}, {\"check\": \"compensation case 5\", \"actual\": 215, \"expected\": 215, \"passed\": true}, {\"check\": \"compensation case 6\", \"actual\": -25, \"expected\": -45, \"passed\": false}, {\"check\": \"compensation case 7\", \"actual\": -385, \"expected\": -425, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.569,"exit_code":1,"observations":[{"actual":35,"check":"compensation case 0","expected":45,"passed":false},{"actual":-525,"check":"compensation case 1","expected":-515,"passed":false},{"actual":235,"check":"compensation case 2","expected":235,"passed":true},{"actual":-130,"check":"compensation case 3","expected":-130,"passed":true},{"actual":-30,"check":"compensation case 4","expected":-30,"passed":true},{"actual":215,"check":"compensation case 5","expected":215,"passed":true},{"actual":-55,"check":"compensation case 6","expected":-45,"passed":false},{"actual":-435,"check":"compensation case 7","expected":-425,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"compensation case 0\", \"actual\": 35, \"expected\": 45, \"passed\": false}, {\"check\": \"compensation case 1\", \"actual\": -525, \"expected\": -515, \"passed\": false}, {\"check\": \"compensation case 2\", \"actual\": 235, \"expected\": 235, \"passed\": true}, {\"check\": \"compensation case 3\", \"actual\": -130, \"expected\": -130, \"passed\": true}, {\"check\": \"compensation case 4\", \"actual\": -30, \"expected\": -30, \"passed\": true}, {\"check\": \"compensation case 5\", \"actual\": 215, \"expected\": 215, \"passed\": true}, {\"check\": \"compensation case 6\", \"actual\": -55, \"expected\": -45, \"passed\": false}, {\"check\": \"compensation case 7\", \"actual\": -435, \"expected\": -425, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":83.578,"exit_code":0,"observations":[{"actual":45,"check":"compensation case 0","expected":45,"passed":true},{"actual":-515,"check":"compensation case 1","expected":-515,"passed":true},{"actual":235,"check":"compensation case 2","expected":235,"passed":true},{"actual":-130,"check":"compensation case 3","expected":-130,"passed":true},{"actual":-30,"check":"compensation case 4","expected":-30,"passed":true},{"actual":215,"check":"compensation case 5","expected":215,"passed":true},{"actual":-45,"check":"compensation case 6","expected":-45,"passed":true},{"actual":-425,"check":"compensation case 7","expected":-425,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"compensation case 0\", \"actual\": 45, \"expected\": 45, \"passed\": true}, {\"check\": \"compensation case 1\", \"actual\": -515, \"expected\": -515, \"passed\": true}, {\"check\": \"compensation case 2\", \"actual\": 235, \"expected\": 235, \"passed\": true}, {\"check\": \"compensation case 3\", \"actual\": -130, \"expected\": -130, \"passed\": true}, {\"check\": \"compensation case 4\", \"actual\": -30, \"expected\": -30, \"passed\": true}, {\"check\": \"compensation case 5\", \"actual\": 215, \"expected\": 215, \"passed\": true}, {\"check\": \"compensation case 6\", \"actual\": -45, \"expected\": -45, \"passed\": true}, {\"check\": \"compensation case 7\", \"actual\": -425, \"expected\": -425, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}