FAILURE MAP
← Case archive

FA-83296 / Go territory scoring / Open access

The agreed dead list is the raw black proposal · case 01

Agreed results carry duplicates and caller order.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The agree branch echoes the input list.

VERIFIED REPAIR

Return sorted distinct points.

Unsuccessful approach: Sorting the raw list still keeps duplicates.

Case contract

Input [black_proposal, white_proposal] as lists of points (any order, duplicates allowed). Equal point sets -> ["agree", sorted points]; otherwise ["dispute", sorted symmetric difference].

Why this case matters

Go servers and scoring tools compute this value automatically; a wrong answer changes a game result.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    pb, pw = x
    sb = {tuple(p) for p in pb}
    sw = {tuple(p) for p in pw}
    if sb == sw:
        return ['agree', pb]
    return ['dispute', sorted(list(p) for p in sb ^ sw)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[[0, 0], [3, 0], [0, 1], [1, 2]], [[1, 2], [0, 1], [0, 0], [3, 0], [0, 0]]], ['agree', [[0, 0], [0, 1], [1, 2], [3, 0]]]], [[[], []], ['agree', []]], [[[], [[0, 3]]], ['dispute', [[0, 3]]]], [[[[2, 2], [0, 0], [3, 3]], [[0, 0], [3, 3], [2, 2]]], ['agree', [[0, 0], [2, 2], [3, 3]]]], [[[[2, 3], [1, 1], [3, 3], [2, 2]], [[2, 3], [1, 1], [3, 3], [2, 2], [2, 3]]], ['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]], [[[[1, 3], [3, 1], [1, 3], [1, 1]], [[2, 3], [2, 0], [1, 2]]], ['dispute', [[1, 1], [1, 2], [1, 3], [2, 0], [2, 3], [3, 1]]]], [[[[3, 0]], [[3, 0]]], ['agree', [[3, 0]]]], [[[[3, 0], [3, 0], [3, 2]], [[3, 0], [3, 0], [3, 2]]], ['agree', [[3, 0], [3, 2]]]]], [[[[[3, 1], [2, 1]], [[3, 1], [2, 1]]], ['agree', [[2, 1], [3, 1]]]], [[[[3, 2], [3, 2], [3, 3], [1, 0]], [[3, 2], [0, 1]]], ['dispute', [[0, 1], [1, 0], [3, 3]]]], [[[[3, 3], [1, 3], [0, 3], [0, 0]], [[3, 3], [1, 3], [0, 3], [0, 0]]], ['agree', [[0, 0], [0, 3], [1, 3], [3, 3]]]], [[[[3, 2], [3, 3]], []], ['dispute', [[3, 2], [3, 3]]]], [[[[2, 2], [1, 3], [2, 2], [0, 0]], [[1, 0], [2, 1], [2, 2]]], ['dispute', [[0, 0], [1, 0], [1, 3], [2, 1]]]], [[[[2, 1], [0, 3]], [[0, 3], [2, 1]]], ['agree', [[0, 3], [2, 1]]]], [[[[2, 1], [2, 3], [0, 2], [3, 1]], [[2, 1], [2, 3], [0, 2], [3, 1], [2, 1]]], ['agree', [[0, 2], [2, 1], [2, 3], [3, 1]]]], [[[[1, 1], [3, 3], [0, 3], [0, 3]], [[0, 3], [0, 3], [3, 3], [1, 1], [1, 1]]], ['agree', [[0, 3], [1, 1], [3, 3]]]]], [[[[[2, 3], [1, 1], [3, 3], [2, 2]], [[2, 3], [1, 1], [3, 3], [2, 2], [2, 3]]], ['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]], [[[[0, 2], [1, 3], [1, 1], [2, 1]], [[1, 1]]], ['dispute', [[0, 2], [1, 3], [2, 1]]]], [[[], []], ['agree', []]], [[[[3, 0]], [[3, 0], [3, 0]]], ['agree', [[3, 0]]]], [[[[1, 0], [0, 1]], [[1, 3]]], ['dispute', [[0, 1], [1, 0], [1, 3]]]], [[[[1, 1], [3, 0]], [[1, 1], [3, 0]]], ['agree', [[1, 1], [3, 0]]]], [[[], []], ['agree', []]], [[[[0, 1], [0, 1]], [[0, 1], [0, 1], [0, 1]]], ['agree', [[0, 1]]]]], [[[[[2, 1], [2, 3], [0, 2], [3, 1]], [[2, 1], [2, 3], [0, 2], [3, 1], [2, 1]]], ['agree', [[0, 2], [2, 1], [2, 3], [3, 1]]]], [[[], [[3, 2], [2, 3], [1, 3]]], ['dispute', [[1, 3], [2, 3], [3, 2]]]], [[[[0, 2], [2, 1], [1, 0]], []], ['dispute', [[0, 2], [1, 0], [2, 1]]]], [[[], [[1, 0], [0, 0]]], ['dispute', [[0, 0], [1, 0]]]], [[[], [[3, 3], [0, 2]]], ['dispute', [[0, 2], [3, 3]]]], [[[[3, 0]], [[3, 0], [3, 0]]], ['agree', [[3, 0]]]], [[[[1, 1], [1, 3]], [[1, 1], [1, 3]]], ['agree', [[1, 1], [1, 3]]]], [[[[1, 1], [0, 0], [0, 0], [2, 0]], [[2, 0], [0, 0], [1, 1], [0, 0]]], ['agree', [[0, 0], [1, 1], [2, 0]]]]], [[[[[3, 3], [3, 1], [0, 2], [2, 0]], [[2, 2], [0, 1], [3, 3]]], ['dispute', [[0, 1], [0, 2], [2, 0], [2, 2], [3, 1]]]], [[[[0, 2], [0, 1]], [[2, 0]]], ['dispute', [[0, 1], [0, 2], [2, 0]]]], [[[[0, 0], [3, 2]], [[3, 2], [0, 0], [0, 0]]], ['agree', [[0, 0], [3, 2]]]], [[[], []], ['agree', []]], [[[[1, 1], [3, 3], [0, 2]], [[3, 3], [0, 2], [1, 1]]], ['agree', [[0, 2], [1, 1], [3, 3]]]], [[[[0, 1]], [[0, 1]]], ['agree', [[0, 1]]]], [[[[1, 0], [1, 0], [2, 0], [0, 1]], [[1, 0], [1, 0], [2, 0], [0, 1]]], ['agree', [[0, 1], [1, 0], [2, 0]]]], [[[[2, 3], [2, 3]], [[2, 3]]], ['agree', [[2, 3]]]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("agreement case %d" % i, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
agreement case 0['agree', [[0, 0], [3, 0], [0, 1], [1, 2]]]['agree', [[0, 0], [0, 1], [1, 2], [3, 0]]]Failed
agreement case 1['agree', []]['agree', []]Passed
agreement case 2['dispute', [[0, 3]]]['dispute', [[0, 3]]]Passed
agreement case 3['agree', [[2, 2], [0, 0], [3, 3]]]['agree', [[0, 0], [2, 2], [3, 3]]]Failed
agreement case 4['agree', [[2, 3], [1, 1], [3, 3], [2, 2]]]['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]Failed
agreement case 5['dispute', [[1, 1], [1, 2], [1, 3], [2, 0], [2, 3], [3, 1]]]['dispute', [[1, 1], [1, 2], [1, 3], [2, 0], [2, 3], [3, 1]]]Passed
agreement case 6['agree', [[3, 0]]]['agree', [[3, 0]]]Passed
agreement case 7['agree', [[3, 0], [3, 0], [3, 2]]]['agree', [[3, 0], [3, 2]]]Failed

SHA-256 / 6cdf8e32d044d90536c6e516fa80bdacb3a9749487f6c3cffb613fdb7266aca6

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    pb, pw = x
    sb = {tuple(p) for p in pb}
    sw = {tuple(p) for p in pw}
    if sb == sw:
        return ['agree', sorted(pb)]
    return ['dispute', sorted(list(p) for p in sb ^ sw)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[[0, 0], [3, 0], [0, 1], [1, 2]], [[1, 2], [0, 1], [0, 0], [3, 0], [0, 0]]], ['agree', [[0, 0], [0, 1], [1, 2], [3, 0]]]], [[[], []], ['agree', []]], [[[], [[0, 3]]], ['dispute', [[0, 3]]]], [[[[2, 2], [0, 0], [3, 3]], [[0, 0], [3, 3], [2, 2]]], ['agree', [[0, 0], [2, 2], [3, 3]]]], [[[[2, 3], [1, 1], [3, 3], [2, 2]], [[2, 3], [1, 1], [3, 3], [2, 2], [2, 3]]], ['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]], [[[[1, 3], [3, 1], [1, 3], [1, 1]], [[2, 3], [2, 0], [1, 2]]], ['dispute', [[1, 1], [1, 2], [1, 3], [2, 0], [2, 3], [3, 1]]]], [[[[3, 0]], [[3, 0]]], ['agree', [[3, 0]]]], [[[[3, 0], [3, 0], [3, 2]], [[3, 0], [3, 0], [3, 2]]], ['agree', [[3, 0], [3, 2]]]]], [[[[[3, 1], [2, 1]], [[3, 1], [2, 1]]], ['agree', [[2, 1], [3, 1]]]], [[[[3, 2], [3, 2], [3, 3], [1, 0]], [[3, 2], [0, 1]]], ['dispute', [[0, 1], [1, 0], [3, 3]]]], [[[[3, 3], [1, 3], [0, 3], [0, 0]], [[3, 3], [1, 3], [0, 3], [0, 0]]], ['agree', [[0, 0], [0, 3], [1, 3], [3, 3]]]], [[[[3, 2], [3, 3]], []], ['dispute', [[3, 2], [3, 3]]]], [[[[2, 2], [1, 3], [2, 2], [0, 0]], [[1, 0], [2, 1], [2, 2]]], ['dispute', [[0, 0], [1, 0], [1, 3], [2, 1]]]], [[[[2, 1], [0, 3]], [[0, 3], [2, 1]]], ['agree', [[0, 3], [2, 1]]]], [[[[2, 1], [2, 3], [0, 2], [3, 1]], [[2, 1], [2, 3], [0, 2], [3, 1], [2, 1]]], ['agree', [[0, 2], [2, 1], [2, 3], [3, 1]]]], [[[[1, 1], [3, 3], [0, 3], [0, 3]], [[0, 3], [0, 3], [3, 3], [1, 1], [1, 1]]], ['agree', [[0, 3], [1, 1], [3, 3]]]]], [[[[[2, 3], [1, 1], [3, 3], [2, 2]], [[2, 3], [1, 1], [3, 3], [2, 2], [2, 3]]], ['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]], [[[[0, 2], [1, 3], [1, 1], [2, 1]], [[1, 1]]], ['dispute', [[0, 2], [1, 3], [2, 1]]]], [[[], []], ['agree', []]], [[[[3, 0]], [[3, 0], [3, 0]]], ['agree', [[3, 0]]]], [[[[1, 0], [0, 1]], [[1, 3]]], ['dispute', [[0, 1], [1, 0], [1, 3]]]], [[[[1, 1], [3, 0]], [[1, 1], [3, 0]]], ['agree', [[1, 1], [3, 0]]]], [[[], []], ['agree', []]], [[[[0, 1], [0, 1]], [[0, 1], [0, 1], [0, 1]]], ['agree', [[0, 1]]]]], [[[[[2, 1], [2, 3], [0, 2], [3, 1]], [[2, 1], [2, 3], [0, 2], [3, 1], [2, 1]]], ['agree', [[0, 2], [2, 1], [2, 3], [3, 1]]]], [[[], [[3, 2], [2, 3], [1, 3]]], ['dispute', [[1, 3], [2, 3], [3, 2]]]], [[[[0, 2], [2, 1], [1, 0]], []], ['dispute', [[0, 2], [1, 0], [2, 1]]]], [[[], [[1, 0], [0, 0]]], ['dispute', [[0, 0], [1, 0]]]], [[[], [[3, 3], [0, 2]]], ['dispute', [[0, 2], [3, 3]]]], [[[[3, 0]], [[3, 0], [3, 0]]], ['agree', [[3, 0]]]], [[[[1, 1], [1, 3]], [[1, 1], [1, 3]]], ['agree', [[1, 1], [1, 3]]]], [[[[1, 1], [0, 0], [0, 0], [2, 0]], [[2, 0], [0, 0], [1, 1], [0, 0]]], ['agree', [[0, 0], [1, 1], [2, 0]]]]], [[[[[3, 3], [3, 1], [0, 2], [2, 0]], [[2, 2], [0, 1], [3, 3]]], ['dispute', [[0, 1], [0, 2], [2, 0], [2, 2], [3, 1]]]], [[[[0, 2], [0, 1]], [[2, 0]]], ['dispute', [[0, 1], [0, 2], [2, 0]]]], [[[[0, 0], [3, 2]], [[3, 2], [0, 0], [0, 0]]], ['agree', [[0, 0], [3, 2]]]], [[[], []], ['agree', []]], [[[[1, 1], [3, 3], [0, 2]], [[3, 3], [0, 2], [1, 1]]], ['agree', [[0, 2], [1, 1], [3, 3]]]], [[[[0, 1]], [[0, 1]]], ['agree', [[0, 1]]]], [[[[1, 0], [1, 0], [2, 0], [0, 1]], [[1, 0], [1, 0], [2, 0], [0, 1]]], ['agree', [[0, 1], [1, 0], [2, 0]]]], [[[[2, 3], [2, 3]], [[2, 3]]], ['agree', [[2, 3]]]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("agreement case %d" % i, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
agreement case 0['agree', [[0, 0], [0, 1], [1, 2], [3, 0]]]['agree', [[0, 0], [0, 1], [1, 2], [3, 0]]]Passed
agreement case 1['agree', []]['agree', []]Passed
agreement case 2['dispute', [[0, 3]]]['dispute', [[0, 3]]]Passed
agreement case 3['agree', [[0, 0], [2, 2], [3, 3]]]['agree', [[0, 0], [2, 2], [3, 3]]]Passed
agreement case 4['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]Passed
agreement case 5['dispute', [[1, 1], [1, 2], [1, 3], [2, 0], [2, 3], [3, 1]]]['dispute', [[1, 1], [1, 2], [1, 3], [2, 0], [2, 3], [3, 1]]]Passed
agreement case 6['agree', [[3, 0]]]['agree', [[3, 0]]]Passed
agreement case 7['agree', [[3, 0], [3, 0], [3, 2]]]['agree', [[3, 0], [3, 2]]]Failed

SHA-256 / cc82c69fc2710210e58e8a3956c8aec5394f3373da4ec454dd9fc277642b4e7e

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    pb, pw = x
    sb = {tuple(p) for p in pb}
    sw = {tuple(p) for p in pw}
    if sb == sw:
        return ['agree', sorted(list(p) for p in sb)]
    return ['dispute', sorted(list(p) for p in sb ^ sw)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[[0, 0], [3, 0], [0, 1], [1, 2]], [[1, 2], [0, 1], [0, 0], [3, 0], [0, 0]]], ['agree', [[0, 0], [0, 1], [1, 2], [3, 0]]]], [[[], []], ['agree', []]], [[[], [[0, 3]]], ['dispute', [[0, 3]]]], [[[[2, 2], [0, 0], [3, 3]], [[0, 0], [3, 3], [2, 2]]], ['agree', [[0, 0], [2, 2], [3, 3]]]], [[[[2, 3], [1, 1], [3, 3], [2, 2]], [[2, 3], [1, 1], [3, 3], [2, 2], [2, 3]]], ['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]], [[[[1, 3], [3, 1], [1, 3], [1, 1]], [[2, 3], [2, 0], [1, 2]]], ['dispute', [[1, 1], [1, 2], [1, 3], [2, 0], [2, 3], [3, 1]]]], [[[[3, 0]], [[3, 0]]], ['agree', [[3, 0]]]], [[[[3, 0], [3, 0], [3, 2]], [[3, 0], [3, 0], [3, 2]]], ['agree', [[3, 0], [3, 2]]]]], [[[[[3, 1], [2, 1]], [[3, 1], [2, 1]]], ['agree', [[2, 1], [3, 1]]]], [[[[3, 2], [3, 2], [3, 3], [1, 0]], [[3, 2], [0, 1]]], ['dispute', [[0, 1], [1, 0], [3, 3]]]], [[[[3, 3], [1, 3], [0, 3], [0, 0]], [[3, 3], [1, 3], [0, 3], [0, 0]]], ['agree', [[0, 0], [0, 3], [1, 3], [3, 3]]]], [[[[3, 2], [3, 3]], []], ['dispute', [[3, 2], [3, 3]]]], [[[[2, 2], [1, 3], [2, 2], [0, 0]], [[1, 0], [2, 1], [2, 2]]], ['dispute', [[0, 0], [1, 0], [1, 3], [2, 1]]]], [[[[2, 1], [0, 3]], [[0, 3], [2, 1]]], ['agree', [[0, 3], [2, 1]]]], [[[[2, 1], [2, 3], [0, 2], [3, 1]], [[2, 1], [2, 3], [0, 2], [3, 1], [2, 1]]], ['agree', [[0, 2], [2, 1], [2, 3], [3, 1]]]], [[[[1, 1], [3, 3], [0, 3], [0, 3]], [[0, 3], [0, 3], [3, 3], [1, 1], [1, 1]]], ['agree', [[0, 3], [1, 1], [3, 3]]]]], [[[[[2, 3], [1, 1], [3, 3], [2, 2]], [[2, 3], [1, 1], [3, 3], [2, 2], [2, 3]]], ['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]], [[[[0, 2], [1, 3], [1, 1], [2, 1]], [[1, 1]]], ['dispute', [[0, 2], [1, 3], [2, 1]]]], [[[], []], ['agree', []]], [[[[3, 0]], [[3, 0], [3, 0]]], ['agree', [[3, 0]]]], [[[[1, 0], [0, 1]], [[1, 3]]], ['dispute', [[0, 1], [1, 0], [1, 3]]]], [[[[1, 1], [3, 0]], [[1, 1], [3, 0]]], ['agree', [[1, 1], [3, 0]]]], [[[], []], ['agree', []]], [[[[0, 1], [0, 1]], [[0, 1], [0, 1], [0, 1]]], ['agree', [[0, 1]]]]], [[[[[2, 1], [2, 3], [0, 2], [3, 1]], [[2, 1], [2, 3], [0, 2], [3, 1], [2, 1]]], ['agree', [[0, 2], [2, 1], [2, 3], [3, 1]]]], [[[], [[3, 2], [2, 3], [1, 3]]], ['dispute', [[1, 3], [2, 3], [3, 2]]]], [[[[0, 2], [2, 1], [1, 0]], []], ['dispute', [[0, 2], [1, 0], [2, 1]]]], [[[], [[1, 0], [0, 0]]], ['dispute', [[0, 0], [1, 0]]]], [[[], [[3, 3], [0, 2]]], ['dispute', [[0, 2], [3, 3]]]], [[[[3, 0]], [[3, 0], [3, 0]]], ['agree', [[3, 0]]]], [[[[1, 1], [1, 3]], [[1, 1], [1, 3]]], ['agree', [[1, 1], [1, 3]]]], [[[[1, 1], [0, 0], [0, 0], [2, 0]], [[2, 0], [0, 0], [1, 1], [0, 0]]], ['agree', [[0, 0], [1, 1], [2, 0]]]]], [[[[[3, 3], [3, 1], [0, 2], [2, 0]], [[2, 2], [0, 1], [3, 3]]], ['dispute', [[0, 1], [0, 2], [2, 0], [2, 2], [3, 1]]]], [[[[0, 2], [0, 1]], [[2, 0]]], ['dispute', [[0, 1], [0, 2], [2, 0]]]], [[[[0, 0], [3, 2]], [[3, 2], [0, 0], [0, 0]]], ['agree', [[0, 0], [3, 2]]]], [[[], []], ['agree', []]], [[[[1, 1], [3, 3], [0, 2]], [[3, 3], [0, 2], [1, 1]]], ['agree', [[0, 2], [1, 1], [3, 3]]]], [[[[0, 1]], [[0, 1]]], ['agree', [[0, 1]]]], [[[[1, 0], [1, 0], [2, 0], [0, 1]], [[1, 0], [1, 0], [2, 0], [0, 1]]], ['agree', [[0, 1], [1, 0], [2, 0]]]], [[[[2, 3], [2, 3]], [[2, 3]]], ['agree', [[2, 3]]]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("agreement case %d" % i, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
agreement case 0['agree', [[0, 0], [0, 1], [1, 2], [3, 0]]]['agree', [[0, 0], [0, 1], [1, 2], [3, 0]]]Passed
agreement case 1['agree', []]['agree', []]Passed
agreement case 2['dispute', [[0, 3]]]['dispute', [[0, 3]]]Passed
agreement case 3['agree', [[0, 0], [2, 2], [3, 3]]]['agree', [[0, 0], [2, 2], [3, 3]]]Passed
agreement case 4['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]['agree', [[1, 1], [2, 2], [2, 3], [3, 3]]]Passed
agreement case 5['dispute', [[1, 1], [1, 2], [1, 3], [2, 0], [2, 3], [3, 1]]]['dispute', [[1, 1], [1, 2], [1, 3], [2, 0], [2, 3], [3, 1]]]Passed
agreement case 6['agree', [[3, 0]]]['agree', [[3, 0]]]Passed
agreement case 7['agree', [[3, 0], [3, 2]]]['agree', [[3, 0], [3, 2]]]Passed

SHA-256 / 8b11e42cefc1b56ba58c3d4efe5301e74ad04af1ef7b01fc464db82e39c95a07

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:50:20.179686+00:00.

Case digest / 089361e2435a950cc4c94e3cce76e27188e723d726a199f6e1b034a328dbc239