FA-83666 / Card game rule engines / Open access
A lone defender euchre scores only 2 · case 01
Defending alone earns no bonus.
ROOT CAUSE
The euchre branch ignores the defender-alone flag.
VERIFIED REPAIR
Defenders score 4 when a defender played alone.
Unsuccessful approach: Using the maker alone flag rewards the wrong player choice.
Case contract
Input [makers_tricks, maker_alone, defender_alone]. Makers with 3-4 tricks score 1; all 5 score 2, or 4 when alone. Makers with fewer than 3 are euchred: defenders score 2, or 4 when a defender played alone. Return [team, points].
Why this case matters
Card-game engines, scoring apps and online tables apply this rule automatically on every hand.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
tricks, alone, def_alone = x
if tricks >= 3:
if tricks == 5:
return ['makers', 4 if alone else 2]
return ['makers', 1]
return ['defenders', 2]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[0, False, True], ['defenders', 4]], [[0, False, True], ['defenders', 4]], [[2, False, False], ['defenders', 2]], [[2, False, True], ['defenders', 4]], [[2, True, False], ['defenders', 2]], [[2, True, True], ['defenders', 4]], [[3, False, False], ['makers', 1]], [[3, False, True], ['makers', 1]]], [[[1, True, True], ['defenders', 4]], [[2, True, False], ['defenders', 2]], [[4, False, False], ['makers', 1]], [[4, False, True], ['makers', 1]], [[4, True, False], ['makers', 1]], [[4, True, True], ['makers', 1]], [[5, False, False], ['makers', 2]], [[5, False, True], ['makers', 2]]], [[[0, False, False], ['defenders', 2]], [[0, False, True], ['defenders', 4]], [[0, True, False], ['defenders', 2]], [[0, True, True], ['defenders', 4]], [[1, False, False], ['defenders', 2]], [[1, False, True], ['defenders', 4]], [[2, False, True], ['defenders', 4]], [[5, True, True], ['makers', 4]]], [[[1, True, False], ['defenders', 2]], [[1, True, True], ['defenders', 4]], [[2, False, False], ['defenders', 2]], [[2, False, True], ['defenders', 4]], [[2, True, False], ['defenders', 2]], [[2, True, True], ['defenders', 4]], [[3, False, False], ['makers', 1]], [[3, False, True], ['makers', 1]]], [[[0, False, True], ['defenders', 4]], [[1, False, True], ['defenders', 4]], [[3, True, True], ['makers', 1]], [[4, False, False], ['makers', 1]], [[4, False, True], ['makers', 1]], [[4, True, False], ['makers', 1]], [[4, True, True], ['makers', 1]], [[5, False, False], ['makers', 2]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("hand points 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| hand points case 0 | ['defenders', 2] | ['defenders', 4] | Failed |
| hand points case 1 | ['defenders', 2] | ['defenders', 4] | Failed |
| hand points case 2 | ['defenders', 2] | ['defenders', 2] | Passed |
| hand points case 3 | ['defenders', 2] | ['defenders', 4] | Failed |
| hand points case 4 | ['defenders', 2] | ['defenders', 2] | Passed |
| hand points case 5 | ['defenders', 2] | ['defenders', 4] | Failed |
| hand points case 6 | ['makers', 1] | ['makers', 1] | Passed |
| hand points case 7 | ['makers', 1] | ['makers', 1] | Passed |
SHA-256 / f9d4bfdf643baf09c61f62bfe094b7e2f6f43c54e67bce66049704c6b55ff713
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
tricks, alone, def_alone = x
if tricks >= 3:
if tricks == 5:
return ['makers', 4 if alone else 2]
return ['makers', 1]
return ['defenders', 4 if alone else 2]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[0, False, True], ['defenders', 4]], [[0, False, True], ['defenders', 4]], [[2, False, False], ['defenders', 2]], [[2, False, True], ['defenders', 4]], [[2, True, False], ['defenders', 2]], [[2, True, True], ['defenders', 4]], [[3, False, False], ['makers', 1]], [[3, False, True], ['makers', 1]]], [[[1, True, True], ['defenders', 4]], [[2, True, False], ['defenders', 2]], [[4, False, False], ['makers', 1]], [[4, False, True], ['makers', 1]], [[4, True, False], ['makers', 1]], [[4, True, True], ['makers', 1]], [[5, False, False], ['makers', 2]], [[5, False, True], ['makers', 2]]], [[[0, False, False], ['defenders', 2]], [[0, False, True], ['defenders', 4]], [[0, True, False], ['defenders', 2]], [[0, True, True], ['defenders', 4]], [[1, False, False], ['defenders', 2]], [[1, False, True], ['defenders', 4]], [[2, False, True], ['defenders', 4]], [[5, True, True], ['makers', 4]]], [[[1, True, False], ['defenders', 2]], [[1, True, True], ['defenders', 4]], [[2, False, False], ['defenders', 2]], [[2, False, True], ['defenders', 4]], [[2, True, False], ['defenders', 2]], [[2, True, True], ['defenders', 4]], [[3, False, False], ['makers', 1]], [[3, False, True], ['makers', 1]]], [[[0, False, True], ['defenders', 4]], [[1, False, True], ['defenders', 4]], [[3, True, True], ['makers', 1]], [[4, False, False], ['makers', 1]], [[4, False, True], ['makers', 1]], [[4, True, False], ['makers', 1]], [[4, True, True], ['makers', 1]], [[5, False, False], ['makers', 2]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("hand points 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| hand points case 0 | ['defenders', 2] | ['defenders', 4] | Failed |
| hand points case 1 | ['defenders', 2] | ['defenders', 4] | Failed |
| hand points case 2 | ['defenders', 2] | ['defenders', 2] | Passed |
| hand points case 3 | ['defenders', 2] | ['defenders', 4] | Failed |
| hand points case 4 | ['defenders', 4] | ['defenders', 2] | Failed |
| hand points case 5 | ['defenders', 4] | ['defenders', 4] | Passed |
| hand points case 6 | ['makers', 1] | ['makers', 1] | Passed |
| hand points case 7 | ['makers', 1] | ['makers', 1] | Passed |
SHA-256 / d44cf43d1bcb5942ce0ce40b6e4a893e777e7931fb81207021d84d7dac3b6a38
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
tricks, alone, def_alone = x
if tricks >= 3:
if tricks == 5:
return ['makers', 4 if alone else 2]
return ['makers', 1]
return ['defenders', 4 if def_alone else 2]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[0, False, True], ['defenders', 4]], [[0, False, True], ['defenders', 4]], [[2, False, False], ['defenders', 2]], [[2, False, True], ['defenders', 4]], [[2, True, False], ['defenders', 2]], [[2, True, True], ['defenders', 4]], [[3, False, False], ['makers', 1]], [[3, False, True], ['makers', 1]]], [[[1, True, True], ['defenders', 4]], [[2, True, False], ['defenders', 2]], [[4, False, False], ['makers', 1]], [[4, False, True], ['makers', 1]], [[4, True, False], ['makers', 1]], [[4, True, True], ['makers', 1]], [[5, False, False], ['makers', 2]], [[5, False, True], ['makers', 2]]], [[[0, False, False], ['defenders', 2]], [[0, False, True], ['defenders', 4]], [[0, True, False], ['defenders', 2]], [[0, True, True], ['defenders', 4]], [[1, False, False], ['defenders', 2]], [[1, False, True], ['defenders', 4]], [[2, False, True], ['defenders', 4]], [[5, True, True], ['makers', 4]]], [[[1, True, False], ['defenders', 2]], [[1, True, True], ['defenders', 4]], [[2, False, False], ['defenders', 2]], [[2, False, True], ['defenders', 4]], [[2, True, False], ['defenders', 2]], [[2, True, True], ['defenders', 4]], [[3, False, False], ['makers', 1]], [[3, False, True], ['makers', 1]]], [[[0, False, True], ['defenders', 4]], [[1, False, True], ['defenders', 4]], [[3, True, True], ['makers', 1]], [[4, False, False], ['makers', 1]], [[4, False, True], ['makers', 1]], [[4, True, False], ['makers', 1]], [[4, True, True], ['makers', 1]], [[5, False, False], ['makers', 2]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("hand points 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| hand points case 0 | ['defenders', 4] | ['defenders', 4] | Passed |
| hand points case 1 | ['defenders', 4] | ['defenders', 4] | Passed |
| hand points case 2 | ['defenders', 2] | ['defenders', 2] | Passed |
| hand points case 3 | ['defenders', 4] | ['defenders', 4] | Passed |
| hand points case 4 | ['defenders', 2] | ['defenders', 2] | Passed |
| hand points case 5 | ['defenders', 4] | ['defenders', 4] | Passed |
| hand points case 6 | ['makers', 1] | ['makers', 1] | Passed |
| hand points case 7 | ['makers', 1] | ['makers', 1] | Passed |
SHA-256 / a2ccf206ea7a1081b3dbc6f139965fd8b47b9ea454061f03e008b99ccfa8ae14
Verification & scope
A bounded toy rule contract stated explicitly in the contract field; cards are two-character codes (rank, suit). Not a complete implementation of any published rulebook or casino table 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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:50:23.801178+00:00.
Case digest / 4038046fba9d4f98e0943ed12f4175e29f176bbf44a311ecb631a609336450d6