FAILURE MAP
← Case archive

FA-61656 / Options payoff and settlement / Open access

Exercise assignment allocation across short accounts: fifo assigns whole positions past the exercised count · case 01

More contracts are assigned than were exercised.

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

ROOT CAUSE

Each fifo step takes the full position quantity.

VERIFIED REPAIR

Take the smaller of the position and the contracts still unassigned.

Unsuccessful approach: Capping by the total exercised count instead of the remaining count still overassigns.

Case contract

Inputs exercised contracts (<= total short), shorts [account, qty, open sequence] and method. fifo assigns in ascending open sequence, each up to its quantity. pro-rata gives floor(exercised*qty/total) and distributes the remaining contracts one each by largest fractional remainder, ties by lower open sequence. Return sorted [account, assigned] for accounts with assignments.

Why this case matters

Option expiry, exercise and settlement engines move cash and shares; a wrong branch misstates obligations.

1 / The failure

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

N = 1
observations = []
def solve(exercised, shorts, method):
    total = sum(q for _, q, _ in shorts)
    alloc = {}
    if method == 'fifo':
        left = exercised
        for acct, q, seq in sorted(shorts, key=lambda s: s[2]):
            take = q if left > 0 else 0
            alloc[acct] = alloc.get(acct, 0) + take
            left -= take
    else:
        rem = []
        for acct, q, seq in shorts:
            alloc[acct] = alloc.get(acct, 0) + exercised * q // total
            rem.append((-(exercised * q % total), seq, acct))
        left = exercised - sum(alloc.values())
        for _, seq, acct in sorted(rem)[:left]:
            alloc[acct] += 1
    return sorted([a, n] for a, n in alloc.items() if n > 0)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression fifo allocation cap 1', [1, [['A1', 2, 17]], 'fifo'], [['A1', 1]]], ['regression fifo allocation cap 2', [1, [['F6', 7, 15]], 'fifo'], [['F6', 1]]], ['partial repair probe 1', [3, [['A1', 7, 19], ['E5', 2, 4], ['F6', 1, 15], ['D4', 3, 3]], 'fifo'], [['D4', 3]]], ['partial repair probe 2', [3, [['E5', 3, 8], ['D4', 3, 19]], 'fifo'], [['E5', 3]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [7, [['D4', 10, 16], ['E5', 1, 18], ['C3', 3, 13], ['A1', 1, 8]], 'pro-rata'], [['A1', 1], ['C3', 1], ['D4', 5]]], ['normal control 2', [3, [['E5', 3, 14], ['F6', 2, 15], ['A1', 2, 1], ['B2', 5, 2], ['D4', 1, 12]], 'pro-rata'], [['A1', 1], ['B2', 1], ['E5', 1]]], ['normal control 3', [2, [['F6', 2, 4]], 'pro-rata'], [['F6', 2]]]], [['regression fifo allocation cap 1', [14, [['C3', 10, 2], ['E5', 3, 5], ['A1', 3, 9], ['F6', 3, 8]], 'fifo'], [['C3', 10], ['E5', 3], ['F6', 1]]], ['regression fifo allocation cap 2', [9, [['B2', 7, 18], ['E5', 7, 5], ['C3', 1, 6]], 'fifo'], [['B2', 1], ['C3', 1], ['E5', 7]]], ['partial repair probe 1', [6, [['C3', 1, 11], ['A1', 3, 14], ['B2', 3, 16], ['D4', 2, 4]], 'fifo'], [['A1', 3], ['C3', 1], ['D4', 2]]], ['partial repair probe 2', [2, [['C3', 1, 6], ['F6', 1, 2], ['E5', 2, 1], ['B2', 7, 15]], 'fifo'], [['E5', 2]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [7, [['B2', 10, 14], ['F6', 3, 1], ['C3', 1, 5], ['A1', 5, 11], ['D4', 3, 9]], 'pro-rata'], [['A1', 2], ['B2', 3], ['D4', 1], ['F6', 1]]], ['normal control 2', [7, [['E5', 10, 1], ['A1', 5, 8], ['D4', 3, 18]], 'pro-rata'], [['A1', 2], ['D4', 1], ['E5', 4]]], ['normal control 3', [1, [['D4', 2, 17]], 'pro-rata'], [['D4', 1]]]], [['regression fifo allocation cap 1', [1, [['A1', 3, 7]], 'fifo'], [['A1', 1]]], ['regression fifo allocation cap 2', [1, [['B2', 2, 12]], 'fifo'], [['B2', 1]]], ['partial repair probe 1', [5, [['B2', 7, 13], ['A1', 3, 6], ['C3', 2, 5], ['F6', 2, 12]], 'fifo'], [['A1', 3], ['C3', 2]]], ['partial repair probe 2', [12, [['C3', 3, 10], ['F6', 3, 2], ['D4', 7, 3], ['B2', 5, 18], ['A1', 2, 8]], 'fifo'], [['A1', 2], ['D4', 7], ['F6', 3]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [6, [['F6', 10, 18], ['C3', 2, 1], ['E5', 3, 10], ['D4', 10, 4]], 'pro-rata'], [['C3', 1], ['D4', 2], ['E5', 1], ['F6', 2]]], ['normal control 2', [4, [['B2', 2, 1], ['F6', 2, 8]], 'pro-rata'], [['B2', 2], ['F6', 2]]], ['normal control 3', [6, [['F6', 7, 17], ['D4', 3, 4], ['B2', 1, 2]], 'pro-rata'], [['D4', 2], ['F6', 4]]]], [['regression fifo allocation cap 1', [6, [['F6', 3, 4], ['C3', 10, 16], ['E5', 7, 13]], 'fifo'], [['E5', 3], ['F6', 3]]], ['regression fifo allocation cap 2', [6, [['C3', 10, 3], ['A1', 7, 2], ['B2', 2, 9], ['F6', 3, 12]], 'fifo'], [['A1', 6]]], ['partial repair probe 1', [4, [['B2', 1, 6], ['D4', 10, 18], ['A1', 3, 13]], 'fifo'], [['A1', 3], ['B2', 1]]], ['partial repair probe 2', [7, [['B2', 3, 4], ['A1', 10, 14], ['E5', 1, 10], ['D4', 3, 11], ['C3', 3, 19]], 'fifo'], [['B2', 3], ['D4', 3], ['E5', 1]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [3, [['F6', 3, 13], ['E5', 10, 14], ['C3', 2, 8], ['B2', 3, 4], ['A1', 3, 11]], 'pro-rata'], [['A1', 1], ['B2', 1], ['E5', 1]]], ['normal control 2', [10, [['F6', 5, 17], ['A1', 3, 3], ['C3', 7, 18]], 'pro-rata'], [['A1', 2], ['C3', 5], ['F6', 3]]], ['normal control 3', [7, [['C3', 5, 8], ['F6', 3, 5], ['D4', 10, 14]], 'pro-rata'], [['C3', 2], ['D4', 4], ['F6', 1]]]], [['regression fifo allocation cap 1', [12, [['B2', 5, 18], ['C3', 3, 13], ['E5', 2, 5], ['D4', 5, 14]], 'fifo'], [['B2', 2], ['C3', 3], ['D4', 5], ['E5', 2]]], ['regression fifo allocation cap 2', [4, [['B2', 10, 14], ['A1', 3, 4], ['D4', 3, 6], ['C3', 3, 13]], 'fifo'], [['A1', 3], ['D4', 1]]], ['partial repair probe 1', [8, [['F6', 5, 17], ['E5', 3, 14], ['C3', 2, 18]], 'fifo'], [['E5', 3], ['F6', 5]]], ['partial repair probe 2', [1, [['E5', 5, 14], ['A1', 1, 1]], 'fifo'], [['A1', 1]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [3, [['B2', 10, 9]], 'pro-rata'], [['B2', 3]]], ['normal control 2', [2, [['A1', 1, 12], ['F6', 3, 5], ['B2', 7, 13], ['E5', 10, 4]], 'pro-rata'], [['B2', 1], ['E5', 1]]], ['normal control 3', [2, [['C3', 5, 3]], 'pro-rata'], [['C3', 2]]]]]
for label, args, expected in fixtures[N-1]:
    check(label, 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
regression fifo allocation cap 1[['A1', 2]][['A1', 1]]Failed
regression fifo allocation cap 2[['F6', 7]][['F6', 1]]Failed
partial repair probe 1[['D4', 3]][['D4', 3]]Passed
partial repair probe 2[['E5', 3]][['E5', 3]]Passed
boundary control 1[['A1', 1], ['B2', 1], ['C3', 1]][['A1', 1], ['B2', 1], ['C3', 1]]Passed
normal control 1[['A1', 1], ['C3', 1], ['D4', 5]][['A1', 1], ['C3', 1], ['D4', 5]]Passed
normal control 2[['A1', 1], ['B2', 1], ['E5', 1]][['A1', 1], ['B2', 1], ['E5', 1]]Passed
normal control 3[['F6', 2]][['F6', 2]]Passed

SHA-256 / bcb3e21c27f292574fb56fac177669da4f003a277f9e308f61e70edb41540b5a

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(exercised, shorts, method):
    total = sum(q for _, q, _ in shorts)
    alloc = {}
    if method == 'fifo':
        left = exercised
        for acct, q, seq in sorted(shorts, key=lambda s: s[2]):
            take = min(q, exercised)
            alloc[acct] = alloc.get(acct, 0) + take
            left -= take
    else:
        rem = []
        for acct, q, seq in shorts:
            alloc[acct] = alloc.get(acct, 0) + exercised * q // total
            rem.append((-(exercised * q % total), seq, acct))
        left = exercised - sum(alloc.values())
        for _, seq, acct in sorted(rem)[:left]:
            alloc[acct] += 1
    return sorted([a, n] for a, n in alloc.items() if n > 0)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression fifo allocation cap 1', [1, [['A1', 2, 17]], 'fifo'], [['A1', 1]]], ['regression fifo allocation cap 2', [1, [['F6', 7, 15]], 'fifo'], [['F6', 1]]], ['partial repair probe 1', [3, [['A1', 7, 19], ['E5', 2, 4], ['F6', 1, 15], ['D4', 3, 3]], 'fifo'], [['D4', 3]]], ['partial repair probe 2', [3, [['E5', 3, 8], ['D4', 3, 19]], 'fifo'], [['E5', 3]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [7, [['D4', 10, 16], ['E5', 1, 18], ['C3', 3, 13], ['A1', 1, 8]], 'pro-rata'], [['A1', 1], ['C3', 1], ['D4', 5]]], ['normal control 2', [3, [['E5', 3, 14], ['F6', 2, 15], ['A1', 2, 1], ['B2', 5, 2], ['D4', 1, 12]], 'pro-rata'], [['A1', 1], ['B2', 1], ['E5', 1]]], ['normal control 3', [2, [['F6', 2, 4]], 'pro-rata'], [['F6', 2]]]], [['regression fifo allocation cap 1', [14, [['C3', 10, 2], ['E5', 3, 5], ['A1', 3, 9], ['F6', 3, 8]], 'fifo'], [['C3', 10], ['E5', 3], ['F6', 1]]], ['regression fifo allocation cap 2', [9, [['B2', 7, 18], ['E5', 7, 5], ['C3', 1, 6]], 'fifo'], [['B2', 1], ['C3', 1], ['E5', 7]]], ['partial repair probe 1', [6, [['C3', 1, 11], ['A1', 3, 14], ['B2', 3, 16], ['D4', 2, 4]], 'fifo'], [['A1', 3], ['C3', 1], ['D4', 2]]], ['partial repair probe 2', [2, [['C3', 1, 6], ['F6', 1, 2], ['E5', 2, 1], ['B2', 7, 15]], 'fifo'], [['E5', 2]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [7, [['B2', 10, 14], ['F6', 3, 1], ['C3', 1, 5], ['A1', 5, 11], ['D4', 3, 9]], 'pro-rata'], [['A1', 2], ['B2', 3], ['D4', 1], ['F6', 1]]], ['normal control 2', [7, [['E5', 10, 1], ['A1', 5, 8], ['D4', 3, 18]], 'pro-rata'], [['A1', 2], ['D4', 1], ['E5', 4]]], ['normal control 3', [1, [['D4', 2, 17]], 'pro-rata'], [['D4', 1]]]], [['regression fifo allocation cap 1', [1, [['A1', 3, 7]], 'fifo'], [['A1', 1]]], ['regression fifo allocation cap 2', [1, [['B2', 2, 12]], 'fifo'], [['B2', 1]]], ['partial repair probe 1', [5, [['B2', 7, 13], ['A1', 3, 6], ['C3', 2, 5], ['F6', 2, 12]], 'fifo'], [['A1', 3], ['C3', 2]]], ['partial repair probe 2', [12, [['C3', 3, 10], ['F6', 3, 2], ['D4', 7, 3], ['B2', 5, 18], ['A1', 2, 8]], 'fifo'], [['A1', 2], ['D4', 7], ['F6', 3]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [6, [['F6', 10, 18], ['C3', 2, 1], ['E5', 3, 10], ['D4', 10, 4]], 'pro-rata'], [['C3', 1], ['D4', 2], ['E5', 1], ['F6', 2]]], ['normal control 2', [4, [['B2', 2, 1], ['F6', 2, 8]], 'pro-rata'], [['B2', 2], ['F6', 2]]], ['normal control 3', [6, [['F6', 7, 17], ['D4', 3, 4], ['B2', 1, 2]], 'pro-rata'], [['D4', 2], ['F6', 4]]]], [['regression fifo allocation cap 1', [6, [['F6', 3, 4], ['C3', 10, 16], ['E5', 7, 13]], 'fifo'], [['E5', 3], ['F6', 3]]], ['regression fifo allocation cap 2', [6, [['C3', 10, 3], ['A1', 7, 2], ['B2', 2, 9], ['F6', 3, 12]], 'fifo'], [['A1', 6]]], ['partial repair probe 1', [4, [['B2', 1, 6], ['D4', 10, 18], ['A1', 3, 13]], 'fifo'], [['A1', 3], ['B2', 1]]], ['partial repair probe 2', [7, [['B2', 3, 4], ['A1', 10, 14], ['E5', 1, 10], ['D4', 3, 11], ['C3', 3, 19]], 'fifo'], [['B2', 3], ['D4', 3], ['E5', 1]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [3, [['F6', 3, 13], ['E5', 10, 14], ['C3', 2, 8], ['B2', 3, 4], ['A1', 3, 11]], 'pro-rata'], [['A1', 1], ['B2', 1], ['E5', 1]]], ['normal control 2', [10, [['F6', 5, 17], ['A1', 3, 3], ['C3', 7, 18]], 'pro-rata'], [['A1', 2], ['C3', 5], ['F6', 3]]], ['normal control 3', [7, [['C3', 5, 8], ['F6', 3, 5], ['D4', 10, 14]], 'pro-rata'], [['C3', 2], ['D4', 4], ['F6', 1]]]], [['regression fifo allocation cap 1', [12, [['B2', 5, 18], ['C3', 3, 13], ['E5', 2, 5], ['D4', 5, 14]], 'fifo'], [['B2', 2], ['C3', 3], ['D4', 5], ['E5', 2]]], ['regression fifo allocation cap 2', [4, [['B2', 10, 14], ['A1', 3, 4], ['D4', 3, 6], ['C3', 3, 13]], 'fifo'], [['A1', 3], ['D4', 1]]], ['partial repair probe 1', [8, [['F6', 5, 17], ['E5', 3, 14], ['C3', 2, 18]], 'fifo'], [['E5', 3], ['F6', 5]]], ['partial repair probe 2', [1, [['E5', 5, 14], ['A1', 1, 1]], 'fifo'], [['A1', 1]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [3, [['B2', 10, 9]], 'pro-rata'], [['B2', 3]]], ['normal control 2', [2, [['A1', 1, 12], ['F6', 3, 5], ['B2', 7, 13], ['E5', 10, 4]], 'pro-rata'], [['B2', 1], ['E5', 1]]], ['normal control 3', [2, [['C3', 5, 3]], 'pro-rata'], [['C3', 2]]]]]
for label, args, expected in fixtures[N-1]:
    check(label, 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
regression fifo allocation cap 1[['A1', 1]][['A1', 1]]Passed
regression fifo allocation cap 2[['F6', 1]][['F6', 1]]Passed
partial repair probe 1[['A1', 3], ['D4', 3], ['E5', 2], ['F6', 1]][['D4', 3]]Failed
partial repair probe 2[['D4', 3], ['E5', 3]][['E5', 3]]Failed
boundary control 1[['A1', 1], ['B2', 1], ['C3', 1]][['A1', 1], ['B2', 1], ['C3', 1]]Passed
normal control 1[['A1', 1], ['C3', 1], ['D4', 5]][['A1', 1], ['C3', 1], ['D4', 5]]Passed
normal control 2[['A1', 1], ['B2', 1], ['E5', 1]][['A1', 1], ['B2', 1], ['E5', 1]]Passed
normal control 3[['F6', 2]][['F6', 2]]Passed

SHA-256 / 5c8c60768d92ffb4eef706cf7e2fe12358aa818c5da520adf80eb66c145580fa

3 / The verified repair

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

N = 1
observations = []
def solve(exercised, shorts, method):
    total = sum(q for _, q, _ in shorts)
    alloc = {}
    if method == 'fifo':
        left = exercised
        for acct, q, seq in sorted(shorts, key=lambda s: s[2]):
            take = min(q, left)
            alloc[acct] = alloc.get(acct, 0) + take
            left -= take
    else:
        rem = []
        for acct, q, seq in shorts:
            alloc[acct] = alloc.get(acct, 0) + exercised * q // total
            rem.append((-(exercised * q % total), seq, acct))
        left = exercised - sum(alloc.values())
        for _, seq, acct in sorted(rem)[:left]:
            alloc[acct] += 1
    return sorted([a, n] for a, n in alloc.items() if n > 0)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression fifo allocation cap 1', [1, [['A1', 2, 17]], 'fifo'], [['A1', 1]]], ['regression fifo allocation cap 2', [1, [['F6', 7, 15]], 'fifo'], [['F6', 1]]], ['partial repair probe 1', [3, [['A1', 7, 19], ['E5', 2, 4], ['F6', 1, 15], ['D4', 3, 3]], 'fifo'], [['D4', 3]]], ['partial repair probe 2', [3, [['E5', 3, 8], ['D4', 3, 19]], 'fifo'], [['E5', 3]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [7, [['D4', 10, 16], ['E5', 1, 18], ['C3', 3, 13], ['A1', 1, 8]], 'pro-rata'], [['A1', 1], ['C3', 1], ['D4', 5]]], ['normal control 2', [3, [['E5', 3, 14], ['F6', 2, 15], ['A1', 2, 1], ['B2', 5, 2], ['D4', 1, 12]], 'pro-rata'], [['A1', 1], ['B2', 1], ['E5', 1]]], ['normal control 3', [2, [['F6', 2, 4]], 'pro-rata'], [['F6', 2]]]], [['regression fifo allocation cap 1', [14, [['C3', 10, 2], ['E5', 3, 5], ['A1', 3, 9], ['F6', 3, 8]], 'fifo'], [['C3', 10], ['E5', 3], ['F6', 1]]], ['regression fifo allocation cap 2', [9, [['B2', 7, 18], ['E5', 7, 5], ['C3', 1, 6]], 'fifo'], [['B2', 1], ['C3', 1], ['E5', 7]]], ['partial repair probe 1', [6, [['C3', 1, 11], ['A1', 3, 14], ['B2', 3, 16], ['D4', 2, 4]], 'fifo'], [['A1', 3], ['C3', 1], ['D4', 2]]], ['partial repair probe 2', [2, [['C3', 1, 6], ['F6', 1, 2], ['E5', 2, 1], ['B2', 7, 15]], 'fifo'], [['E5', 2]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [7, [['B2', 10, 14], ['F6', 3, 1], ['C3', 1, 5], ['A1', 5, 11], ['D4', 3, 9]], 'pro-rata'], [['A1', 2], ['B2', 3], ['D4', 1], ['F6', 1]]], ['normal control 2', [7, [['E5', 10, 1], ['A1', 5, 8], ['D4', 3, 18]], 'pro-rata'], [['A1', 2], ['D4', 1], ['E5', 4]]], ['normal control 3', [1, [['D4', 2, 17]], 'pro-rata'], [['D4', 1]]]], [['regression fifo allocation cap 1', [1, [['A1', 3, 7]], 'fifo'], [['A1', 1]]], ['regression fifo allocation cap 2', [1, [['B2', 2, 12]], 'fifo'], [['B2', 1]]], ['partial repair probe 1', [5, [['B2', 7, 13], ['A1', 3, 6], ['C3', 2, 5], ['F6', 2, 12]], 'fifo'], [['A1', 3], ['C3', 2]]], ['partial repair probe 2', [12, [['C3', 3, 10], ['F6', 3, 2], ['D4', 7, 3], ['B2', 5, 18], ['A1', 2, 8]], 'fifo'], [['A1', 2], ['D4', 7], ['F6', 3]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [6, [['F6', 10, 18], ['C3', 2, 1], ['E5', 3, 10], ['D4', 10, 4]], 'pro-rata'], [['C3', 1], ['D4', 2], ['E5', 1], ['F6', 2]]], ['normal control 2', [4, [['B2', 2, 1], ['F6', 2, 8]], 'pro-rata'], [['B2', 2], ['F6', 2]]], ['normal control 3', [6, [['F6', 7, 17], ['D4', 3, 4], ['B2', 1, 2]], 'pro-rata'], [['D4', 2], ['F6', 4]]]], [['regression fifo allocation cap 1', [6, [['F6', 3, 4], ['C3', 10, 16], ['E5', 7, 13]], 'fifo'], [['E5', 3], ['F6', 3]]], ['regression fifo allocation cap 2', [6, [['C3', 10, 3], ['A1', 7, 2], ['B2', 2, 9], ['F6', 3, 12]], 'fifo'], [['A1', 6]]], ['partial repair probe 1', [4, [['B2', 1, 6], ['D4', 10, 18], ['A1', 3, 13]], 'fifo'], [['A1', 3], ['B2', 1]]], ['partial repair probe 2', [7, [['B2', 3, 4], ['A1', 10, 14], ['E5', 1, 10], ['D4', 3, 11], ['C3', 3, 19]], 'fifo'], [['B2', 3], ['D4', 3], ['E5', 1]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [3, [['F6', 3, 13], ['E5', 10, 14], ['C3', 2, 8], ['B2', 3, 4], ['A1', 3, 11]], 'pro-rata'], [['A1', 1], ['B2', 1], ['E5', 1]]], ['normal control 2', [10, [['F6', 5, 17], ['A1', 3, 3], ['C3', 7, 18]], 'pro-rata'], [['A1', 2], ['C3', 5], ['F6', 3]]], ['normal control 3', [7, [['C3', 5, 8], ['F6', 3, 5], ['D4', 10, 14]], 'pro-rata'], [['C3', 2], ['D4', 4], ['F6', 1]]]], [['regression fifo allocation cap 1', [12, [['B2', 5, 18], ['C3', 3, 13], ['E5', 2, 5], ['D4', 5, 14]], 'fifo'], [['B2', 2], ['C3', 3], ['D4', 5], ['E5', 2]]], ['regression fifo allocation cap 2', [4, [['B2', 10, 14], ['A1', 3, 4], ['D4', 3, 6], ['C3', 3, 13]], 'fifo'], [['A1', 3], ['D4', 1]]], ['partial repair probe 1', [8, [['F6', 5, 17], ['E5', 3, 14], ['C3', 2, 18]], 'fifo'], [['E5', 3], ['F6', 5]]], ['partial repair probe 2', [1, [['E5', 5, 14], ['A1', 1, 1]], 'fifo'], [['A1', 1]]], ['boundary control 1', [3, [['A1', 1, 1], ['B2', 1, 2], ['C3', 1, 3]], 'pro-rata'], [['A1', 1], ['B2', 1], ['C3', 1]]], ['normal control 1', [3, [['B2', 10, 9]], 'pro-rata'], [['B2', 3]]], ['normal control 2', [2, [['A1', 1, 12], ['F6', 3, 5], ['B2', 7, 13], ['E5', 10, 4]], 'pro-rata'], [['B2', 1], ['E5', 1]]], ['normal control 3', [2, [['C3', 5, 3]], 'pro-rata'], [['C3', 2]]]]]
for label, args, expected in fixtures[N-1]:
    check(label, 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
regression fifo allocation cap 1[['A1', 1]][['A1', 1]]Passed
regression fifo allocation cap 2[['F6', 1]][['F6', 1]]Passed
partial repair probe 1[['D4', 3]][['D4', 3]]Passed
partial repair probe 2[['E5', 3]][['E5', 3]]Passed
boundary control 1[['A1', 1], ['B2', 1], ['C3', 1]][['A1', 1], ['B2', 1], ['C3', 1]]Passed
normal control 1[['A1', 1], ['C3', 1], ['D4', 5]][['A1', 1], ['C3', 1], ['D4', 5]]Passed
normal control 2[['A1', 1], ['B2', 1], ['E5', 1]][['A1', 1], ['B2', 1], ['E5', 1]]Passed
normal control 3[['F6', 2]][['F6', 2]]Passed

SHA-256 / c0242f01799cef15b761da40b41283015ddf82bfca5b3ae9870b628cfa487a17

Verification & scope

A deterministic toy contract stated explicitly in the contract field; no claim of conformance to any exchange or clearing rulebook. 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:46:57.375591+00:00.

Case digest / 0e558c63e56930af4d5793787d7d8af110eb7319b43eab4b3882a6740fc291b5