FAILURE MAP
← Case archive

FA-83666 / Card game rule engines / Open access

A lone defender euchre scores only 2 · case 01

Defending alone earns no bonus.

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

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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