FAILURE MAP
← Case archive

FA-61581 / Options payoff and settlement / Open access

Special opening settlement value for index options: each component is rounded before summation · case 01

Per-component rounding accumulates into a settlement value off by cents.

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

ROOT CAUSE

Every weighted component is divided and rounded individually.

VERIFIED REPAIR

Sum all weighted prices, divide once, and round once.

Unsuccessful approach: Rounding the weighted total before dividing still rounds at the wrong stage.

Case contract

Inputs components [weight, opening price or None, last close] and a divisor. Each component uses its opening price, or its last close if it did not open. Settlement = sum(weight*price)/divisor computed in Decimal and rounded half-up to cents. Return as a string.

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
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_DOWN
N = 1
observations = []
def solve(components, divisor):
    total = Decimal(0)
    for w, op, close in components:
        px = op if op is not None else close
        total += (Decimal(str(w)) * Decimal(str(px)) / Decimal(str(divisor))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
    val = total
    return str(val)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression rounding stage 1', [[[2, None, 166.726], [2, 181.9, 176.974], [3, 59.489, 58.925]], 8], '109.46'], ['regression rounding stage 2', [[[3, 101.53, 101.078], [2, 16.883, 16.655], [3, 143.818, 137.285], [1.5, 119.806, 122.585], [2, None, 116.314]], 0.5], '2364.29'], ['partial repair probe 1', [[[3, 55.768, 55.255], [1, 179.191, 174.898]], 0.5], '692.99'], ['partial repair probe 2', [[[3, 50.169, 50.397], [1.5, 63.024, 64.919], [3, 119.42, 117.205], [1.5, None, 52.884]], 2], '341.31'], ['boundary control 1', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['boundary control 2', [[[1, 10.005, 10.0]], 1], '10.01'], ['normal control 1', [[[1, 72.089, 70.808], [0.5, None, 27.567], [3, 173.545, 172.931], [1.5, None, 43.012], [1.5, 53.007, 55.239], [1.5, 170.75, 174.861]], 4], '251.67'], ['normal control 2', [[[1, None, 136.365], [0.5, 147.398, 144.055], [3, 132.338, 135.418], [3, 17.789, 18.397], [0.5, None, 155.928], [0.5, 25.929, 25.394]], 1], '751.37']], [['regression rounding stage 1', [[[0.5, None, 89.35], [3, None, 190.386], [2, 155.569, 156.347], [1, None, 59.703], [1, None, 76.065], [2, 33.203, 32.443]], 1], '1129.15'], ['regression rounding stage 2', [[[1.5, 123.562, 118.813], [0.5, 177.835, 175.839], [1.5, 125.782, 129.645], [1, 82.191, 80.142], [3, None, 184.914]], 4], '274.97'], ['partial repair probe 1', [[[3, 22.761, 23.164], [1.5, 89.526, 93.293], [3, None, 171.079], [2, 146.004, 145.561], [2, None, 86.293], [2, 161.925, 157.093]], 0.5], '3008.51'], ['partial repair probe 2', [[[2, 36.527, 35.041], [1, None, 199.179], [1.5, 117.042, 116.599], [0.5, None, 58.818], [1, 110.297, 113.194], [1, None, 166.154]], 1.25], '602.92'], ['boundary control 1', [[[1, 10.005, 10.0]], 1], '10.01'], ['boundary control 2', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['normal control 1', [[[1.5, 86.302, 85.211], [3, 186.929, 192.362]], 0.5], '1380.48'], ['normal control 2', [[[3, None, 66.407], [1, 159.234, 162.497], [3, 151.846, 146.481], [0.5, 71.689, 71.863], [1.5, 135.318, 130.33]], 2], '526.41']], [['regression rounding stage 1', [[[1.5, 120.704, 119.817], [2, None, 164.813], [1.5, 181.044, 178.51], [0.5, 158.153, 154.295]], 0.5], '1722.65'], ['regression rounding stage 2', [[[1, 74.423, 74.269], [0.5, None, 176.705], [1, 130.244, 132.08]], 4], '73.25'], ['partial repair probe 1', [[[2, None, 18.514], [1.5, None, 141.993], [1, None, 32.875], [2, None, 74.401], [2, 154.316, 153.096]], 2], '370.16'], ['partial repair probe 2', [[[1.5, None, 89.833], [2, None, 45.596], [2, 68.543, 70.571]], 2], '181.51'], ['boundary control 1', [[[1, 10.005, 10.0]], 1], '10.01'], ['boundary control 2', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['normal control 1', [[[2, 117.445, 123.153], [3, 33.909, 35.66], [3, 63.392, 60.657], [1, None, 176.566], [1, None, 94.072], [3, 46.424, 45.429]], 1.25], '749.36'], ['normal control 2', [[[1, None, 12.358], [1.5, 44.745, 43.312]], 1], '79.48']], [['regression rounding stage 1', [[[0.5, None, 127.79], [1, 42.093, 44.292], [2, 16.421, 15.843]], 4], '34.71'], ['regression rounding stage 2', [[[0.5, 34.845, 34.294], [3, 99.348, 102.619]], 1.25], '252.37'], ['partial repair probe 1', [[[2, 163.35, 167.742], [0.5, 18.733, 18.605]], 0.5], '672.13'], ['partial repair probe 2', [[[3, 28.91, 29.801], [3, 136.517, 135.197], [2, 56.828, 55.989]], 4], '152.48'], ['boundary control 1', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['boundary control 2', [[[1, 10.005, 10.0]], 1], '10.01'], ['normal control 1', [[[2, 199.811, 191.043], [1, 160.533, 165.382], [1.5, 109.757, 105.192], [1, 52.426, 55.098], [0.5, 155.715, 162.061], [2, None, 95.436]], 4], '261.49'], ['normal control 2', [[[1, 111.096, 111.936], [2, 91.572, 95.908], [1, 146.534, 141.689], [1, 166.908, 175.629], [1, None, 132.167], [2, None, 93.34]], 4], '231.63']], [['regression rounding stage 1', [[[1.5, 70.861, 71.952], [1, None, 52.371], [0.5, None, 111.889]], 2], '107.30'], ['regression rounding stage 2', [[[3, None, 23.871], [1.5, None, 131.741], [0.5, 148.716, 154.366], [1.5, 10.137, 10.099], [3, 123.717, 129.376], [3, 105.203, 106.163]], 2], '522.77'], ['partial repair probe 1', [[[2, 46.349, 45.113], [3, None, 117.672]], 0.5], '891.43'], ['partial repair probe 2', [[[0.5, 169.603, 178.19], [0.5, 76.571, 76.008]], 2], '61.54'], ['boundary control 1', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['boundary control 2', [[[1, 10.005, 10.0]], 1], '10.01'], ['normal control 1', [[[3, 130.626, 126.859], [0.5, None, 23.816], [1, None, 17.6], [0.5, 196.733, 197.256], [3, None, 165.167], [3, 90.673, 86.552]], 4], '321.82'], ['normal control 2', [[[1, 170.556, 176.293], [2, 181.759, 181.889], [3, 133.531, 133.12], [1.5, 93.883, 96.748], [2, 82.608, 85.573], [2, 132.562, 137.639]], 4], '376.46']]]
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 rounding stage 1109.47109.46Failed
regression rounding stage 22364.302364.29Failed
partial repair probe 1692.99692.99Passed
partial repair probe 2341.31341.31Passed
boundary control 110.0010.00Passed
boundary control 210.0110.01Passed
normal control 1251.67251.67Passed
normal control 2751.37751.37Passed

SHA-256 / 8ad055a1327cdb1c939df3520494274abc6f56ebb01b13fc2a6d2a7b991128dc

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_DOWN
N = 1
observations = []
def solve(components, divisor):
    total = Decimal(0)
    for w, op, close in components:
        px = op if op is not None else close
        total += Decimal(str(w)) * Decimal(str(px))
    val = (total.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP) / Decimal(str(divisor))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
    return str(val)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression rounding stage 1', [[[2, None, 166.726], [2, 181.9, 176.974], [3, 59.489, 58.925]], 8], '109.46'], ['regression rounding stage 2', [[[3, 101.53, 101.078], [2, 16.883, 16.655], [3, 143.818, 137.285], [1.5, 119.806, 122.585], [2, None, 116.314]], 0.5], '2364.29'], ['partial repair probe 1', [[[3, 55.768, 55.255], [1, 179.191, 174.898]], 0.5], '692.99'], ['partial repair probe 2', [[[3, 50.169, 50.397], [1.5, 63.024, 64.919], [3, 119.42, 117.205], [1.5, None, 52.884]], 2], '341.31'], ['boundary control 1', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['boundary control 2', [[[1, 10.005, 10.0]], 1], '10.01'], ['normal control 1', [[[1, 72.089, 70.808], [0.5, None, 27.567], [3, 173.545, 172.931], [1.5, None, 43.012], [1.5, 53.007, 55.239], [1.5, 170.75, 174.861]], 4], '251.67'], ['normal control 2', [[[1, None, 136.365], [0.5, 147.398, 144.055], [3, 132.338, 135.418], [3, 17.789, 18.397], [0.5, None, 155.928], [0.5, 25.929, 25.394]], 1], '751.37']], [['regression rounding stage 1', [[[0.5, None, 89.35], [3, None, 190.386], [2, 155.569, 156.347], [1, None, 59.703], [1, None, 76.065], [2, 33.203, 32.443]], 1], '1129.15'], ['regression rounding stage 2', [[[1.5, 123.562, 118.813], [0.5, 177.835, 175.839], [1.5, 125.782, 129.645], [1, 82.191, 80.142], [3, None, 184.914]], 4], '274.97'], ['partial repair probe 1', [[[3, 22.761, 23.164], [1.5, 89.526, 93.293], [3, None, 171.079], [2, 146.004, 145.561], [2, None, 86.293], [2, 161.925, 157.093]], 0.5], '3008.51'], ['partial repair probe 2', [[[2, 36.527, 35.041], [1, None, 199.179], [1.5, 117.042, 116.599], [0.5, None, 58.818], [1, 110.297, 113.194], [1, None, 166.154]], 1.25], '602.92'], ['boundary control 1', [[[1, 10.005, 10.0]], 1], '10.01'], ['boundary control 2', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['normal control 1', [[[1.5, 86.302, 85.211], [3, 186.929, 192.362]], 0.5], '1380.48'], ['normal control 2', [[[3, None, 66.407], [1, 159.234, 162.497], [3, 151.846, 146.481], [0.5, 71.689, 71.863], [1.5, 135.318, 130.33]], 2], '526.41']], [['regression rounding stage 1', [[[1.5, 120.704, 119.817], [2, None, 164.813], [1.5, 181.044, 178.51], [0.5, 158.153, 154.295]], 0.5], '1722.65'], ['regression rounding stage 2', [[[1, 74.423, 74.269], [0.5, None, 176.705], [1, 130.244, 132.08]], 4], '73.25'], ['partial repair probe 1', [[[2, None, 18.514], [1.5, None, 141.993], [1, None, 32.875], [2, None, 74.401], [2, 154.316, 153.096]], 2], '370.16'], ['partial repair probe 2', [[[1.5, None, 89.833], [2, None, 45.596], [2, 68.543, 70.571]], 2], '181.51'], ['boundary control 1', [[[1, 10.005, 10.0]], 1], '10.01'], ['boundary control 2', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['normal control 1', [[[2, 117.445, 123.153], [3, 33.909, 35.66], [3, 63.392, 60.657], [1, None, 176.566], [1, None, 94.072], [3, 46.424, 45.429]], 1.25], '749.36'], ['normal control 2', [[[1, None, 12.358], [1.5, 44.745, 43.312]], 1], '79.48']], [['regression rounding stage 1', [[[0.5, None, 127.79], [1, 42.093, 44.292], [2, 16.421, 15.843]], 4], '34.71'], ['regression rounding stage 2', [[[0.5, 34.845, 34.294], [3, 99.348, 102.619]], 1.25], '252.37'], ['partial repair probe 1', [[[2, 163.35, 167.742], [0.5, 18.733, 18.605]], 0.5], '672.13'], ['partial repair probe 2', [[[3, 28.91, 29.801], [3, 136.517, 135.197], [2, 56.828, 55.989]], 4], '152.48'], ['boundary control 1', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['boundary control 2', [[[1, 10.005, 10.0]], 1], '10.01'], ['normal control 1', [[[2, 199.811, 191.043], [1, 160.533, 165.382], [1.5, 109.757, 105.192], [1, 52.426, 55.098], [0.5, 155.715, 162.061], [2, None, 95.436]], 4], '261.49'], ['normal control 2', [[[1, 111.096, 111.936], [2, 91.572, 95.908], [1, 146.534, 141.689], [1, 166.908, 175.629], [1, None, 132.167], [2, None, 93.34]], 4], '231.63']], [['regression rounding stage 1', [[[1.5, 70.861, 71.952], [1, None, 52.371], [0.5, None, 111.889]], 2], '107.30'], ['regression rounding stage 2', [[[3, None, 23.871], [1.5, None, 131.741], [0.5, 148.716, 154.366], [1.5, 10.137, 10.099], [3, 123.717, 129.376], [3, 105.203, 106.163]], 2], '522.77'], ['partial repair probe 1', [[[2, 46.349, 45.113], [3, None, 117.672]], 0.5], '891.43'], ['partial repair probe 2', [[[0.5, 169.603, 178.19], [0.5, 76.571, 76.008]], 2], '61.54'], ['boundary control 1', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['boundary control 2', [[[1, 10.005, 10.0]], 1], '10.01'], ['normal control 1', [[[3, 130.626, 126.859], [0.5, None, 23.816], [1, None, 17.6], [0.5, 196.733, 197.256], [3, None, 165.167], [3, 90.673, 86.552]], 4], '321.82'], ['normal control 2', [[[1, 170.556, 176.293], [2, 181.759, 181.889], [3, 133.531, 133.12], [1.5, 93.883, 96.748], [2, 82.608, 85.573], [2, 132.562, 137.639]], 4], '376.46']]]
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 rounding stage 1109.47109.46Failed
regression rounding stage 22364.302364.29Failed
partial repair probe 1693.00692.99Failed
partial repair probe 2341.32341.31Failed
boundary control 110.0010.00Passed
boundary control 210.0110.01Passed
normal control 1251.67251.67Passed
normal control 2751.37751.37Passed

SHA-256 / c67c90fdcf15643872e68f494a6e65d3cfc756481d3bcda28effdfbbc53eb2e7

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_DOWN
N = 1
observations = []
def solve(components, divisor):
    total = Decimal(0)
    for w, op, close in components:
        px = op if op is not None else close
        total += Decimal(str(w)) * Decimal(str(px))
    val = (total / Decimal(str(divisor))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
    return str(val)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression rounding stage 1', [[[2, None, 166.726], [2, 181.9, 176.974], [3, 59.489, 58.925]], 8], '109.46'], ['regression rounding stage 2', [[[3, 101.53, 101.078], [2, 16.883, 16.655], [3, 143.818, 137.285], [1.5, 119.806, 122.585], [2, None, 116.314]], 0.5], '2364.29'], ['partial repair probe 1', [[[3, 55.768, 55.255], [1, 179.191, 174.898]], 0.5], '692.99'], ['partial repair probe 2', [[[3, 50.169, 50.397], [1.5, 63.024, 64.919], [3, 119.42, 117.205], [1.5, None, 52.884]], 2], '341.31'], ['boundary control 1', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['boundary control 2', [[[1, 10.005, 10.0]], 1], '10.01'], ['normal control 1', [[[1, 72.089, 70.808], [0.5, None, 27.567], [3, 173.545, 172.931], [1.5, None, 43.012], [1.5, 53.007, 55.239], [1.5, 170.75, 174.861]], 4], '251.67'], ['normal control 2', [[[1, None, 136.365], [0.5, 147.398, 144.055], [3, 132.338, 135.418], [3, 17.789, 18.397], [0.5, None, 155.928], [0.5, 25.929, 25.394]], 1], '751.37']], [['regression rounding stage 1', [[[0.5, None, 89.35], [3, None, 190.386], [2, 155.569, 156.347], [1, None, 59.703], [1, None, 76.065], [2, 33.203, 32.443]], 1], '1129.15'], ['regression rounding stage 2', [[[1.5, 123.562, 118.813], [0.5, 177.835, 175.839], [1.5, 125.782, 129.645], [1, 82.191, 80.142], [3, None, 184.914]], 4], '274.97'], ['partial repair probe 1', [[[3, 22.761, 23.164], [1.5, 89.526, 93.293], [3, None, 171.079], [2, 146.004, 145.561], [2, None, 86.293], [2, 161.925, 157.093]], 0.5], '3008.51'], ['partial repair probe 2', [[[2, 36.527, 35.041], [1, None, 199.179], [1.5, 117.042, 116.599], [0.5, None, 58.818], [1, 110.297, 113.194], [1, None, 166.154]], 1.25], '602.92'], ['boundary control 1', [[[1, 10.005, 10.0]], 1], '10.01'], ['boundary control 2', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['normal control 1', [[[1.5, 86.302, 85.211], [3, 186.929, 192.362]], 0.5], '1380.48'], ['normal control 2', [[[3, None, 66.407], [1, 159.234, 162.497], [3, 151.846, 146.481], [0.5, 71.689, 71.863], [1.5, 135.318, 130.33]], 2], '526.41']], [['regression rounding stage 1', [[[1.5, 120.704, 119.817], [2, None, 164.813], [1.5, 181.044, 178.51], [0.5, 158.153, 154.295]], 0.5], '1722.65'], ['regression rounding stage 2', [[[1, 74.423, 74.269], [0.5, None, 176.705], [1, 130.244, 132.08]], 4], '73.25'], ['partial repair probe 1', [[[2, None, 18.514], [1.5, None, 141.993], [1, None, 32.875], [2, None, 74.401], [2, 154.316, 153.096]], 2], '370.16'], ['partial repair probe 2', [[[1.5, None, 89.833], [2, None, 45.596], [2, 68.543, 70.571]], 2], '181.51'], ['boundary control 1', [[[1, 10.005, 10.0]], 1], '10.01'], ['boundary control 2', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['normal control 1', [[[2, 117.445, 123.153], [3, 33.909, 35.66], [3, 63.392, 60.657], [1, None, 176.566], [1, None, 94.072], [3, 46.424, 45.429]], 1.25], '749.36'], ['normal control 2', [[[1, None, 12.358], [1.5, 44.745, 43.312]], 1], '79.48']], [['regression rounding stage 1', [[[0.5, None, 127.79], [1, 42.093, 44.292], [2, 16.421, 15.843]], 4], '34.71'], ['regression rounding stage 2', [[[0.5, 34.845, 34.294], [3, 99.348, 102.619]], 1.25], '252.37'], ['partial repair probe 1', [[[2, 163.35, 167.742], [0.5, 18.733, 18.605]], 0.5], '672.13'], ['partial repair probe 2', [[[3, 28.91, 29.801], [3, 136.517, 135.197], [2, 56.828, 55.989]], 4], '152.48'], ['boundary control 1', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['boundary control 2', [[[1, 10.005, 10.0]], 1], '10.01'], ['normal control 1', [[[2, 199.811, 191.043], [1, 160.533, 165.382], [1.5, 109.757, 105.192], [1, 52.426, 55.098], [0.5, 155.715, 162.061], [2, None, 95.436]], 4], '261.49'], ['normal control 2', [[[1, 111.096, 111.936], [2, 91.572, 95.908], [1, 146.534, 141.689], [1, 166.908, 175.629], [1, None, 132.167], [2, None, 93.34]], 4], '231.63']], [['regression rounding stage 1', [[[1.5, 70.861, 71.952], [1, None, 52.371], [0.5, None, 111.889]], 2], '107.30'], ['regression rounding stage 2', [[[3, None, 23.871], [1.5, None, 131.741], [0.5, 148.716, 154.366], [1.5, 10.137, 10.099], [3, 123.717, 129.376], [3, 105.203, 106.163]], 2], '522.77'], ['partial repair probe 1', [[[2, 46.349, 45.113], [3, None, 117.672]], 0.5], '891.43'], ['partial repair probe 2', [[[0.5, 169.603, 178.19], [0.5, 76.571, 76.008]], 2], '61.54'], ['boundary control 1', [[[1, None, 10.0], [2, 5.0, 4.0]], 2], '10.00'], ['boundary control 2', [[[1, 10.005, 10.0]], 1], '10.01'], ['normal control 1', [[[3, 130.626, 126.859], [0.5, None, 23.816], [1, None, 17.6], [0.5, 196.733, 197.256], [3, None, 165.167], [3, 90.673, 86.552]], 4], '321.82'], ['normal control 2', [[[1, 170.556, 176.293], [2, 181.759, 181.889], [3, 133.531, 133.12], [1.5, 93.883, 96.748], [2, 82.608, 85.573], [2, 132.562, 137.639]], 4], '376.46']]]
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 rounding stage 1109.46109.46Passed
regression rounding stage 22364.292364.29Passed
partial repair probe 1692.99692.99Passed
partial repair probe 2341.31341.31Passed
boundary control 110.0010.00Passed
boundary control 210.0110.01Passed
normal control 1251.67251.67Passed
normal control 2751.37751.37Passed

SHA-256 / bd067a52a224453763ff63e22a3538e419fbaee3ee6300be9405fd4a2b77f091

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:56.553576+00:00.

Case digest / 96178b56bfc46398ba234b077ce8850a4aa74e4cf346cee85ceee4ccf6ed1539