FA-57981 / Double-entry ledger accounting / Open access
Foreign currency period-end revaluation: non-monetary exclusion · case 01
Inventory and prepaid balances are remeasured at the closing rate.
ROOT CAUSE
Only non-monetary liabilities are kept at historical cost; non-monetary assets are revalued.
VERIFIED REPAIR
Keep every non-monetary account at its carried amount.
Unsuccessful approach: Flipping the test protects non-monetary assets but now revalues deferred revenue.
Case contract
x = {'bid': [num, den], 'ask': [num, den], 'accounts': [[name, 'asset'|'liability', monetary, foreign units, carried home cents]]}. Monetary assets are revalued at the bid rate and monetary liabilities at the ask rate: home = foreign * num / den rounded half-up per account. Non-monetary accounts keep their carried amount. Unrealized gain sums (new - carried) for assets and (carried - new) for liabilities. Return {'balances': [[name, home]], 'unrealized_gain'}.
Why this case matters
Ledger software must keep debits equal to credits and apply normal-balance, period and cutoff rules exactly; small sign or boundary slips silently misstate financial statements.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
def to_home(amount, rate):
num, den = rate
q, r = divmod(amount * num, den)
return q + (1 if 2 * r >= den else 0)
gain = 0
out = []
for name, kind, monetary, foreign, carried in x['accounts']:
if not monetary and kind != 'asset':
out.append([name, carried])
continue
rate = x['bid'] if kind == 'asset' else x['ask']
new = to_home(foreign, rate)
delta = new - carried
gain += delta if kind == 'asset' else -delta
out.append([name, new])
return {'balances': out, 'unrealized_gain': gain}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: non-monetary exclusion', {'bid': [9, 8], 'ask': [12, 8], 'accounts': [['a0', 'liability', True, 5, 10], ['a1', 'asset', True, 101, 101], ['a2', 'asset', True, 7, 7], ['a3', 'asset', False, 250, 500]]}, {'balances': [['a0', 8], ['a1', 114], ['a2', 8], ['a3', 500]], 'unrealized_gain': 16}], ['regression: non-monetary exclusion, partial-repair probe', {'bid': [124, 100], 'ask': [125, 100], 'accounts': [['a0', 'liability', True, 7, 14], ['a1', 'liability', False, 7, 7], ['a2', 'liability', True, 5, 8]]}, {'balances': [['a0', 9], ['a1', 7], ['a2', 6]], 'unrealized_gain': 7}], ['control 1', {'bid': [2, 2], 'ask': [5, 2], 'accounts': [['a0', 'liability', True, 3, 500], ['a1', 'asset', True, 3, 3]]}, {'balances': [['a0', 8], ['a1', 3]], 'unrealized_gain': 492}], ['control 2', {'bid': [11, 8], 'ask': [13, 8], 'accounts': [['a0', 'asset', True, 250, 500], ['a1', 'asset', True, 101, 500], ['a2', 'liability', True, 250, 253], ['a3', 'liability', True, 1000, 2000], ['a4', 'asset', True, 7, 14]]}, {'balances': [['a0', 344], ['a1', 139], ['a2', 406], ['a3', 1625], ['a4', 10]], 'unrealized_gain': -299}], ['control 3', {'bid': [3, 4], 'ask': [5, 4], 'accounts': [['a0', 'asset', True, 1000, 2000], ['a1', 'liability', True, 999, 500], ['a2', 'liability', True, 3, 500], ['a3', 'liability', True, 1000, 1003], ['a4', 'asset', True, 1, 2]]}, {'balances': [['a0', 750], ['a1', 1249], ['a2', 4], ['a3', 1250], ['a4', 1]], 'unrealized_gain': -1751}], ['control 4', {'bid': [5, 2], 'ask': [8, 2], 'accounts': [['a0', 'liability', True, 1, 4], ['a1', 'asset', True, 250, 500]]}, {'balances': [['a0', 4], ['a1', 625]], 'unrealized_gain': 125}], ['control 5', {'bid': [1, 2], 'ask': [2, 2], 'accounts': [['a0', 'asset', True, 999, 1998], ['a1', 'liability', False, 999, 999], ['a2', 'asset', True, 250, 500]]}, {'balances': [['a0', 500], ['a1', 999], ['a2', 125]], 'unrealized_gain': -1873}]], [['regression: non-monetary exclusion', {'bid': [9, 4], 'ask': [10, 4], 'accounts': [['a0', 'asset', False, 1, 500], ['a1', 'liability', True, 999, 999]]}, {'balances': [['a0', 500], ['a1', 2498]], 'unrealized_gain': -1499}], ['regression: non-monetary exclusion, partial-repair probe', {'bid': [133, 100], 'ask': [135, 100], 'accounts': [['a0', 'liability', False, 3, 6], ['a1', 'asset', True, 1, 1], ['a2', 'liability', True, 7, 500], ['a3', 'liability', True, 3, 6]]}, {'balances': [['a0', 6], ['a1', 1], ['a2', 9], ['a3', 4]], 'unrealized_gain': 493}], ['control 1', {'bid': [15, 8], 'ask': [17, 8], 'accounts': [['a0', 'liability', True, 999, 999], ['a1', 'liability', True, 101, 101], ['a2', 'asset', True, 7, 7], ['a3', 'liability', True, 101, 202]]}, {'balances': [['a0', 2123], ['a1', 215], ['a2', 13], ['a3', 215]], 'unrealized_gain': -1245}], ['control 2', {'bid': [15, 8], 'ask': [16, 8], 'accounts': [['a0', 'asset', True, 999, 500], ['a1', 'asset', False, 3, 6], ['a2', 'asset', True, 999, 1998], ['a3', 'asset', True, 3, 3], ['a4', 'asset', True, 1, 4]]}, {'balances': [['a0', 1873], ['a1', 6], ['a2', 1873], ['a3', 6], ['a4', 2]], 'unrealized_gain': 1249}], ['control 3', {'bid': [3, 4], 'ask': [4, 4], 'accounts': [['a0', 'asset', True, 250, 500], ['a1', 'liability', True, 101, 202], ['a2', 'liability', False, 101, 104], ['a3', 'asset', True, 1000, 500], ['a4', 'asset', True, 5, 500]]}, {'balances': [['a0', 188], ['a1', 101], ['a2', 104], ['a3', 750], ['a4', 4]], 'unrealized_gain': -457}], ['control 4', {'bid': [4, 8], 'ask': [5, 8], 'accounts': [['a0', 'liability', False, 1, 2], ['a1', 'liability', True, 5, 500], ['a2', 'asset', True, 1, 4], ['a3', 'asset', True, 999, 1002], ['a4', 'liability', True, 5, 5]]}, {'balances': [['a0', 2], ['a1', 3], ['a2', 1], ['a3', 500], ['a4', 3]], 'unrealized_gain': -6}], ['control 5', {'bid': [6, 4], 'ask': [7, 4], 'accounts': [['a0', 'asset', True, 1, 4], ['a1', 'liability', True, 1000, 2000]]}, {'balances': [['a0', 2], ['a1', 1750]], 'unrealized_gain': 248}]], [['regression: non-monetary exclusion', {'bid': [2, 2], 'ask': [3, 2], 'accounts': [['a0', 'asset', True, 3, 3], ['a1', 'asset', False, 5, 500], ['a2', 'asset', False, 999, 1998], ['a3', 'asset', True, 5, 5], ['a4', 'liability', False, 7, 14]]}, {'balances': [['a0', 3], ['a1', 500], ['a2', 1998], ['a3', 5], ['a4', 14]], 'unrealized_gain': 0}], ['control 1', {'bid': [130, 100], 'ask': [132, 100], 'accounts': [['a0', 'asset', True, 1, 4], ['a1', 'asset', True, 7, 500]]}, {'balances': [['a0', 1], ['a1', 9]], 'unrealized_gain': -494}], ['control 2', {'bid': [7, 4], 'ask': [9, 4], 'accounts': [['a0', 'asset', True, 1000, 500], ['a1', 'liability', True, 1, 2], ['a2', 'asset', True, 250, 253], ['a3', 'liability', True, 101, 500], ['a4', 'asset', True, 5, 8]]}, {'balances': [['a0', 1750], ['a1', 2], ['a2', 438], ['a3', 227], ['a4', 9]], 'unrealized_gain': 1709}], ['control 3', {'bid': [135, 100], 'ask': [136, 100], 'accounts': [['a0', 'liability', True, 999, 1002], ['a1', 'liability', False, 1, 500], ['a2', 'liability', True, 5, 5]]}, {'balances': [['a0', 1359], ['a1', 500], ['a2', 7]], 'unrealized_gain': -359}], ['control 4', {'bid': [4, 2], 'ask': [6, 2], 'accounts': [['a0', 'liability', True, 1000, 2000], ['a1', 'asset', True, 7, 10], ['a2', 'asset', True, 101, 101]]}, {'balances': [['a0', 3000], ['a1', 14], ['a2', 202]], 'unrealized_gain': -895}], ['control 5', {'bid': [7, 4], 'ask': [10, 4], 'accounts': [['a0', 'liability', True, 101, 500], ['a1', 'asset', True, 1, 2]]}, {'balances': [['a0', 253], ['a1', 2]], 'unrealized_gain': 247}], ['control 6', {'bid': [12, 10], 'ask': [13, 10], 'accounts': [['a0', 'liability', False, 1000, 2000], ['a1', 'asset', True, 1000, 2000], ['a2', 'liability', True, 1, 2], ['a3', 'asset', True, 3, 500]]}, {'balances': [['a0', 2000], ['a1', 1200], ['a2', 1], ['a3', 4]], 'unrealized_gain': -1295}]], [['regression: non-monetary exclusion', {'bid': [8, 4], 'ask': [9, 4], 'accounts': [['a0', 'asset', False, 250, 253], ['a1', 'liability', True, 5, 8], ['a2', 'asset', False, 5, 10], ['a3', 'liability', True, 5, 8], ['a4', 'liability', True, 999, 1998]]}, {'balances': [['a0', 253], ['a1', 11], ['a2', 10], ['a3', 11], ['a4', 2248]], 'unrealized_gain': -256}], ['regression: non-monetary exclusion, partial-repair probe', {'bid': [3, 2], 'ask': [4, 2], 'accounts': [['a0', 'liability', True, 999, 500], ['a1', 'liability', False, 3, 3], ['a2', 'liability', True, 5, 10]]}, {'balances': [['a0', 1998], ['a1', 3], ['a2', 10]], 'unrealized_gain': -1498}], ['control 1', {'bid': [7, 4], 'ask': [10, 4], 'accounts': [['a0', 'liability', True, 1000, 2000], ['a1', 'asset', True, 1000, 1003], ['a2', 'liability', False, 7, 14]]}, {'balances': [['a0', 2500], ['a1', 1750], ['a2', 14]], 'unrealized_gain': 247}], ['control 2', {'bid': [6, 8], 'ask': [8, 8], 'accounts': [['a0', 'liability', False, 3, 500], ['a1', 'liability', True, 101, 101], ['a2', 'asset', True, 999, 1998], ['a3', 'liability', False, 3, 3], ['a4', 'asset', True, 999, 1002]]}, {'balances': [['a0', 500], ['a1', 101], ['a2', 749], ['a3', 3], ['a4', 749]], 'unrealized_gain': -1502}], ['control 3', {'bid': [6, 4], 'ask': [9, 4], 'accounts': [['a0', 'liability', False, 7, 500], ['a1', 'liability', True, 3, 6]]}, {'balances': [['a0', 500], ['a1', 7]], 'unrealized_gain': -1}], ['control 4', {'bid': [97, 100], 'ask': [98, 100], 'accounts': [['a0', 'liability', False, 3, 3], ['a1', 'liability', True, 999, 999], ['a2', 'liability', False, 5, 10], ['a3', 'liability', True, 101, 104]]}, {'balances': [['a0', 3], ['a1', 979], ['a2', 10], ['a3', 99]], 'unrealized_gain': 25}], ['control 5', {'bid': [15, 10], 'ask': [16, 10], 'accounts': [['a0', 'asset', True, 3, 6], ['a1', 'asset', True, 7, 500], ['a2', 'liability', True, 999, 500], ['a3', 'liability', True, 3, 6], ['a4', 'liability', True, 1, 2]]}, {'balances': [['a0', 5], ['a1', 11], ['a2', 1598], ['a3', 5], ['a4', 2]], 'unrealized_gain': -1587}]], [['regression: non-monetary exclusion', {'bid': [158, 100], 'ask': [159, 100], 'accounts': [['a0', 'liability', True, 1, 1], ['a1', 'asset', False, 999, 1002], ['a2', 'liability', True, 1, 2], ['a3', 'liability', False, 1000, 1003]]}, {'balances': [['a0', 2], ['a1', 1002], ['a2', 2], ['a3', 1003]], 'unrealized_gain': -1}], ['control 1', {'bid': [2, 4], 'ask': [3, 4], 'accounts': [['a0', 'asset', True, 5, 500], ['a1', 'asset', True, 5, 500], ['a2', 'asset', True, 5, 8], ['a3', 'asset', True, 3, 500]]}, {'balances': [['a0', 3], ['a1', 3], ['a2', 3], ['a3', 2]], 'unrealized_gain': -1497}], ['control 2', {'bid': [4, 2], 'ask': [7, 2], 'accounts': [['a0', 'asset', True, 1, 4], ['a1', 'asset', True, 101, 101]]}, {'balances': [['a0', 2], ['a1', 202]], 'unrealized_gain': 99}], ['control 3', {'bid': [3, 4], 'ask': [4, 4], 'accounts': [['a0', 'liability', True, 999, 500], ['a1', 'liability', True, 7, 7], ['a2', 'asset', True, 101, 101]]}, {'balances': [['a0', 999], ['a1', 7], ['a2', 76]], 'unrealized_gain': -524}], ['control 4', {'bid': [2, 2], 'ask': [5, 2], 'accounts': [['a0', 'asset', False, 7, 7], ['a1', 'liability', False, 101, 500]]}, {'balances': [['a0', 7], ['a1', 500]], 'unrealized_gain': 0}], ['control 5', {'bid': [167, 100], 'ask': [169, 100], 'accounts': [['a0', 'asset', True, 250, 250], ['a1', 'asset', True, 101, 104], ['a2', 'liability', True, 999, 1998]]}, {'balances': [['a0', 418], ['a1', 169], ['a2', 1688]], 'unrealized_gain': 543}], ['control 6', {'bid': [6, 10], 'ask': [7, 10], 'accounts': [['a0', 'liability', True, 250, 500], ['a1', 'asset', True, 3, 6]]}, {'balances': [['a0', 175], ['a1', 2]], 'unrealized_gain': 321}]]]
for label, args, expected in fixtures[N-1]:
try:
actual = solve(args)
except Exception as exc:
actual = 'raised ' + type(exc).__name__
check(label, actual, 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 |
|---|---|---|---|
| regression: non-monetary exclusion | {'balances': [['a0', 8], ['a1', 114], ['a2', 8], ['a3', 281]], 'unrealized_gain': -203} | {'balances': [['a0', 8], ['a1', 114], ['a2', 8], ['a3', 500]], 'unrealized_gain': 16} | Failed |
| regression: non-monetary exclusion, partial-repair probe | {'balances': [['a0', 9], ['a1', 7], ['a2', 6]], 'unrealized_gain': 7} | {'balances': [['a0', 9], ['a1', 7], ['a2', 6]], 'unrealized_gain': 7} | Passed |
| control 1 | {'balances': [['a0', 8], ['a1', 3]], 'unrealized_gain': 492} | {'balances': [['a0', 8], ['a1', 3]], 'unrealized_gain': 492} | Passed |
| control 2 | {'balances': [['a0', 344], ['a1', 139], ['a2', 406], ['a3', 1625], ['a4', 10]], 'unrealized_gain': -299} | {'balances': [['a0', 344], ['a1', 139], ['a2', 406], ['a3', 1625], ['a4', 10]], 'unrealized_gain': -299} | Passed |
| control 3 | {'balances': [['a0', 750], ['a1', 1249], ['a2', 4], ['a3', 1250], ['a4', 1]], 'unrealized_gain': -1751} | {'balances': [['a0', 750], ['a1', 1249], ['a2', 4], ['a3', 1250], ['a4', 1]], 'unrealized_gain': -1751} | Passed |
| control 4 | {'balances': [['a0', 4], ['a1', 625]], 'unrealized_gain': 125} | {'balances': [['a0', 4], ['a1', 625]], 'unrealized_gain': 125} | Passed |
| control 5 | {'balances': [['a0', 500], ['a1', 999], ['a2', 125]], 'unrealized_gain': -1873} | {'balances': [['a0', 500], ['a1', 999], ['a2', 125]], 'unrealized_gain': -1873} | Passed |
SHA-256 / 2e75b3d96d994edc810ca8c7b9e5af0c91ffd927e2b3271ea438bc7677d455b8
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
def to_home(amount, rate):
num, den = rate
q, r = divmod(amount * num, den)
return q + (1 if 2 * r >= den else 0)
gain = 0
out = []
for name, kind, monetary, foreign, carried in x['accounts']:
if not monetary and kind == 'asset':
out.append([name, carried])
continue
rate = x['bid'] if kind == 'asset' else x['ask']
new = to_home(foreign, rate)
delta = new - carried
gain += delta if kind == 'asset' else -delta
out.append([name, new])
return {'balances': out, 'unrealized_gain': gain}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: non-monetary exclusion', {'bid': [9, 8], 'ask': [12, 8], 'accounts': [['a0', 'liability', True, 5, 10], ['a1', 'asset', True, 101, 101], ['a2', 'asset', True, 7, 7], ['a3', 'asset', False, 250, 500]]}, {'balances': [['a0', 8], ['a1', 114], ['a2', 8], ['a3', 500]], 'unrealized_gain': 16}], ['regression: non-monetary exclusion, partial-repair probe', {'bid': [124, 100], 'ask': [125, 100], 'accounts': [['a0', 'liability', True, 7, 14], ['a1', 'liability', False, 7, 7], ['a2', 'liability', True, 5, 8]]}, {'balances': [['a0', 9], ['a1', 7], ['a2', 6]], 'unrealized_gain': 7}], ['control 1', {'bid': [2, 2], 'ask': [5, 2], 'accounts': [['a0', 'liability', True, 3, 500], ['a1', 'asset', True, 3, 3]]}, {'balances': [['a0', 8], ['a1', 3]], 'unrealized_gain': 492}], ['control 2', {'bid': [11, 8], 'ask': [13, 8], 'accounts': [['a0', 'asset', True, 250, 500], ['a1', 'asset', True, 101, 500], ['a2', 'liability', True, 250, 253], ['a3', 'liability', True, 1000, 2000], ['a4', 'asset', True, 7, 14]]}, {'balances': [['a0', 344], ['a1', 139], ['a2', 406], ['a3', 1625], ['a4', 10]], 'unrealized_gain': -299}], ['control 3', {'bid': [3, 4], 'ask': [5, 4], 'accounts': [['a0', 'asset', True, 1000, 2000], ['a1', 'liability', True, 999, 500], ['a2', 'liability', True, 3, 500], ['a3', 'liability', True, 1000, 1003], ['a4', 'asset', True, 1, 2]]}, {'balances': [['a0', 750], ['a1', 1249], ['a2', 4], ['a3', 1250], ['a4', 1]], 'unrealized_gain': -1751}], ['control 4', {'bid': [5, 2], 'ask': [8, 2], 'accounts': [['a0', 'liability', True, 1, 4], ['a1', 'asset', True, 250, 500]]}, {'balances': [['a0', 4], ['a1', 625]], 'unrealized_gain': 125}], ['control 5', {'bid': [1, 2], 'ask': [2, 2], 'accounts': [['a0', 'asset', True, 999, 1998], ['a1', 'liability', False, 999, 999], ['a2', 'asset', True, 250, 500]]}, {'balances': [['a0', 500], ['a1', 999], ['a2', 125]], 'unrealized_gain': -1873}]], [['regression: non-monetary exclusion', {'bid': [9, 4], 'ask': [10, 4], 'accounts': [['a0', 'asset', False, 1, 500], ['a1', 'liability', True, 999, 999]]}, {'balances': [['a0', 500], ['a1', 2498]], 'unrealized_gain': -1499}], ['regression: non-monetary exclusion, partial-repair probe', {'bid': [133, 100], 'ask': [135, 100], 'accounts': [['a0', 'liability', False, 3, 6], ['a1', 'asset', True, 1, 1], ['a2', 'liability', True, 7, 500], ['a3', 'liability', True, 3, 6]]}, {'balances': [['a0', 6], ['a1', 1], ['a2', 9], ['a3', 4]], 'unrealized_gain': 493}], ['control 1', {'bid': [15, 8], 'ask': [17, 8], 'accounts': [['a0', 'liability', True, 999, 999], ['a1', 'liability', True, 101, 101], ['a2', 'asset', True, 7, 7], ['a3', 'liability', True, 101, 202]]}, {'balances': [['a0', 2123], ['a1', 215], ['a2', 13], ['a3', 215]], 'unrealized_gain': -1245}], ['control 2', {'bid': [15, 8], 'ask': [16, 8], 'accounts': [['a0', 'asset', True, 999, 500], ['a1', 'asset', False, 3, 6], ['a2', 'asset', True, 999, 1998], ['a3', 'asset', True, 3, 3], ['a4', 'asset', True, 1, 4]]}, {'balances': [['a0', 1873], ['a1', 6], ['a2', 1873], ['a3', 6], ['a4', 2]], 'unrealized_gain': 1249}], ['control 3', {'bid': [3, 4], 'ask': [4, 4], 'accounts': [['a0', 'asset', True, 250, 500], ['a1', 'liability', True, 101, 202], ['a2', 'liability', False, 101, 104], ['a3', 'asset', True, 1000, 500], ['a4', 'asset', True, 5, 500]]}, {'balances': [['a0', 188], ['a1', 101], ['a2', 104], ['a3', 750], ['a4', 4]], 'unrealized_gain': -457}], ['control 4', {'bid': [4, 8], 'ask': [5, 8], 'accounts': [['a0', 'liability', False, 1, 2], ['a1', 'liability', True, 5, 500], ['a2', 'asset', True, 1, 4], ['a3', 'asset', True, 999, 1002], ['a4', 'liability', True, 5, 5]]}, {'balances': [['a0', 2], ['a1', 3], ['a2', 1], ['a3', 500], ['a4', 3]], 'unrealized_gain': -6}], ['control 5', {'bid': [6, 4], 'ask': [7, 4], 'accounts': [['a0', 'asset', True, 1, 4], ['a1', 'liability', True, 1000, 2000]]}, {'balances': [['a0', 2], ['a1', 1750]], 'unrealized_gain': 248}]], [['regression: non-monetary exclusion', {'bid': [2, 2], 'ask': [3, 2], 'accounts': [['a0', 'asset', True, 3, 3], ['a1', 'asset', False, 5, 500], ['a2', 'asset', False, 999, 1998], ['a3', 'asset', True, 5, 5], ['a4', 'liability', False, 7, 14]]}, {'balances': [['a0', 3], ['a1', 500], ['a2', 1998], ['a3', 5], ['a4', 14]], 'unrealized_gain': 0}], ['control 1', {'bid': [130, 100], 'ask': [132, 100], 'accounts': [['a0', 'asset', True, 1, 4], ['a1', 'asset', True, 7, 500]]}, {'balances': [['a0', 1], ['a1', 9]], 'unrealized_gain': -494}], ['control 2', {'bid': [7, 4], 'ask': [9, 4], 'accounts': [['a0', 'asset', True, 1000, 500], ['a1', 'liability', True, 1, 2], ['a2', 'asset', True, 250, 253], ['a3', 'liability', True, 101, 500], ['a4', 'asset', True, 5, 8]]}, {'balances': [['a0', 1750], ['a1', 2], ['a2', 438], ['a3', 227], ['a4', 9]], 'unrealized_gain': 1709}], ['control 3', {'bid': [135, 100], 'ask': [136, 100], 'accounts': [['a0', 'liability', True, 999, 1002], ['a1', 'liability', False, 1, 500], ['a2', 'liability', True, 5, 5]]}, {'balances': [['a0', 1359], ['a1', 500], ['a2', 7]], 'unrealized_gain': -359}], ['control 4', {'bid': [4, 2], 'ask': [6, 2], 'accounts': [['a0', 'liability', True, 1000, 2000], ['a1', 'asset', True, 7, 10], ['a2', 'asset', True, 101, 101]]}, {'balances': [['a0', 3000], ['a1', 14], ['a2', 202]], 'unrealized_gain': -895}], ['control 5', {'bid': [7, 4], 'ask': [10, 4], 'accounts': [['a0', 'liability', True, 101, 500], ['a1', 'asset', True, 1, 2]]}, {'balances': [['a0', 253], ['a1', 2]], 'unrealized_gain': 247}], ['control 6', {'bid': [12, 10], 'ask': [13, 10], 'accounts': [['a0', 'liability', False, 1000, 2000], ['a1', 'asset', True, 1000, 2000], ['a2', 'liability', True, 1, 2], ['a3', 'asset', True, 3, 500]]}, {'balances': [['a0', 2000], ['a1', 1200], ['a2', 1], ['a3', 4]], 'unrealized_gain': -1295}]], [['regression: non-monetary exclusion', {'bid': [8, 4], 'ask': [9, 4], 'accounts': [['a0', 'asset', False, 250, 253], ['a1', 'liability', True, 5, 8], ['a2', 'asset', False, 5, 10], ['a3', 'liability', True, 5, 8], ['a4', 'liability', True, 999, 1998]]}, {'balances': [['a0', 253], ['a1', 11], ['a2', 10], ['a3', 11], ['a4', 2248]], 'unrealized_gain': -256}], ['regression: non-monetary exclusion, partial-repair probe', {'bid': [3, 2], 'ask': [4, 2], 'accounts': [['a0', 'liability', True, 999, 500], ['a1', 'liability', False, 3, 3], ['a2', 'liability', True, 5, 10]]}, {'balances': [['a0', 1998], ['a1', 3], ['a2', 10]], 'unrealized_gain': -1498}], ['control 1', {'bid': [7, 4], 'ask': [10, 4], 'accounts': [['a0', 'liability', True, 1000, 2000], ['a1', 'asset', True, 1000, 1003], ['a2', 'liability', False, 7, 14]]}, {'balances': [['a0', 2500], ['a1', 1750], ['a2', 14]], 'unrealized_gain': 247}], ['control 2', {'bid': [6, 8], 'ask': [8, 8], 'accounts': [['a0', 'liability', False, 3, 500], ['a1', 'liability', True, 101, 101], ['a2', 'asset', True, 999, 1998], ['a3', 'liability', False, 3, 3], ['a4', 'asset', True, 999, 1002]]}, {'balances': [['a0', 500], ['a1', 101], ['a2', 749], ['a3', 3], ['a4', 749]], 'unrealized_gain': -1502}], ['control 3', {'bid': [6, 4], 'ask': [9, 4], 'accounts': [['a0', 'liability', False, 7, 500], ['a1', 'liability', True, 3, 6]]}, {'balances': [['a0', 500], ['a1', 7]], 'unrealized_gain': -1}], ['control 4', {'bid': [97, 100], 'ask': [98, 100], 'accounts': [['a0', 'liability', False, 3, 3], ['a1', 'liability', True, 999, 999], ['a2', 'liability', False, 5, 10], ['a3', 'liability', True, 101, 104]]}, {'balances': [['a0', 3], ['a1', 979], ['a2', 10], ['a3', 99]], 'unrealized_gain': 25}], ['control 5', {'bid': [15, 10], 'ask': [16, 10], 'accounts': [['a0', 'asset', True, 3, 6], ['a1', 'asset', True, 7, 500], ['a2', 'liability', True, 999, 500], ['a3', 'liability', True, 3, 6], ['a4', 'liability', True, 1, 2]]}, {'balances': [['a0', 5], ['a1', 11], ['a2', 1598], ['a3', 5], ['a4', 2]], 'unrealized_gain': -1587}]], [['regression: non-monetary exclusion', {'bid': [158, 100], 'ask': [159, 100], 'accounts': [['a0', 'liability', True, 1, 1], ['a1', 'asset', False, 999, 1002], ['a2', 'liability', True, 1, 2], ['a3', 'liability', False, 1000, 1003]]}, {'balances': [['a0', 2], ['a1', 1002], ['a2', 2], ['a3', 1003]], 'unrealized_gain': -1}], ['control 1', {'bid': [2, 4], 'ask': [3, 4], 'accounts': [['a0', 'asset', True, 5, 500], ['a1', 'asset', True, 5, 500], ['a2', 'asset', True, 5, 8], ['a3', 'asset', True, 3, 500]]}, {'balances': [['a0', 3], ['a1', 3], ['a2', 3], ['a3', 2]], 'unrealized_gain': -1497}], ['control 2', {'bid': [4, 2], 'ask': [7, 2], 'accounts': [['a0', 'asset', True, 1, 4], ['a1', 'asset', True, 101, 101]]}, {'balances': [['a0', 2], ['a1', 202]], 'unrealized_gain': 99}], ['control 3', {'bid': [3, 4], 'ask': [4, 4], 'accounts': [['a0', 'liability', True, 999, 500], ['a1', 'liability', True, 7, 7], ['a2', 'asset', True, 101, 101]]}, {'balances': [['a0', 999], ['a1', 7], ['a2', 76]], 'unrealized_gain': -524}], ['control 4', {'bid': [2, 2], 'ask': [5, 2], 'accounts': [['a0', 'asset', False, 7, 7], ['a1', 'liability', False, 101, 500]]}, {'balances': [['a0', 7], ['a1', 500]], 'unrealized_gain': 0}], ['control 5', {'bid': [167, 100], 'ask': [169, 100], 'accounts': [['a0', 'asset', True, 250, 250], ['a1', 'asset', True, 101, 104], ['a2', 'liability', True, 999, 1998]]}, {'balances': [['a0', 418], ['a1', 169], ['a2', 1688]], 'unrealized_gain': 543}], ['control 6', {'bid': [6, 10], 'ask': [7, 10], 'accounts': [['a0', 'liability', True, 250, 500], ['a1', 'asset', True, 3, 6]]}, {'balances': [['a0', 175], ['a1', 2]], 'unrealized_gain': 321}]]]
for label, args, expected in fixtures[N-1]:
try:
actual = solve(args)
except Exception as exc:
actual = 'raised ' + type(exc).__name__
check(label, actual, 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 |
|---|---|---|---|
| regression: non-monetary exclusion | {'balances': [['a0', 8], ['a1', 114], ['a2', 8], ['a3', 500]], 'unrealized_gain': 16} | {'balances': [['a0', 8], ['a1', 114], ['a2', 8], ['a3', 500]], 'unrealized_gain': 16} | Passed |
| regression: non-monetary exclusion, partial-repair probe | {'balances': [['a0', 9], ['a1', 9], ['a2', 6]], 'unrealized_gain': 5} | {'balances': [['a0', 9], ['a1', 7], ['a2', 6]], 'unrealized_gain': 7} | Failed |
| control 1 | {'balances': [['a0', 8], ['a1', 3]], 'unrealized_gain': 492} | {'balances': [['a0', 8], ['a1', 3]], 'unrealized_gain': 492} | Passed |
| control 2 | {'balances': [['a0', 344], ['a1', 139], ['a2', 406], ['a3', 1625], ['a4', 10]], 'unrealized_gain': -299} | {'balances': [['a0', 344], ['a1', 139], ['a2', 406], ['a3', 1625], ['a4', 10]], 'unrealized_gain': -299} | Passed |
| control 3 | {'balances': [['a0', 750], ['a1', 1249], ['a2', 4], ['a3', 1250], ['a4', 1]], 'unrealized_gain': -1751} | {'balances': [['a0', 750], ['a1', 1249], ['a2', 4], ['a3', 1250], ['a4', 1]], 'unrealized_gain': -1751} | Passed |
| control 4 | {'balances': [['a0', 4], ['a1', 625]], 'unrealized_gain': 125} | {'balances': [['a0', 4], ['a1', 625]], 'unrealized_gain': 125} | Passed |
| control 5 | {'balances': [['a0', 500], ['a1', 999], ['a2', 125]], 'unrealized_gain': -1873} | {'balances': [['a0', 500], ['a1', 999], ['a2', 125]], 'unrealized_gain': -1873} | Passed |
SHA-256 / 3a10563005fb4eb4400021841779ebfdebc23150a25a236ed2bbb94aa7c312f3
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
def to_home(amount, rate):
num, den = rate
q, r = divmod(amount * num, den)
return q + (1 if 2 * r >= den else 0)
gain = 0
out = []
for name, kind, monetary, foreign, carried in x['accounts']:
if not monetary:
out.append([name, carried])
continue
rate = x['bid'] if kind == 'asset' else x['ask']
new = to_home(foreign, rate)
delta = new - carried
gain += delta if kind == 'asset' else -delta
out.append([name, new])
return {'balances': out, 'unrealized_gain': gain}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: non-monetary exclusion', {'bid': [9, 8], 'ask': [12, 8], 'accounts': [['a0', 'liability', True, 5, 10], ['a1', 'asset', True, 101, 101], ['a2', 'asset', True, 7, 7], ['a3', 'asset', False, 250, 500]]}, {'balances': [['a0', 8], ['a1', 114], ['a2', 8], ['a3', 500]], 'unrealized_gain': 16}], ['regression: non-monetary exclusion, partial-repair probe', {'bid': [124, 100], 'ask': [125, 100], 'accounts': [['a0', 'liability', True, 7, 14], ['a1', 'liability', False, 7, 7], ['a2', 'liability', True, 5, 8]]}, {'balances': [['a0', 9], ['a1', 7], ['a2', 6]], 'unrealized_gain': 7}], ['control 1', {'bid': [2, 2], 'ask': [5, 2], 'accounts': [['a0', 'liability', True, 3, 500], ['a1', 'asset', True, 3, 3]]}, {'balances': [['a0', 8], ['a1', 3]], 'unrealized_gain': 492}], ['control 2', {'bid': [11, 8], 'ask': [13, 8], 'accounts': [['a0', 'asset', True, 250, 500], ['a1', 'asset', True, 101, 500], ['a2', 'liability', True, 250, 253], ['a3', 'liability', True, 1000, 2000], ['a4', 'asset', True, 7, 14]]}, {'balances': [['a0', 344], ['a1', 139], ['a2', 406], ['a3', 1625], ['a4', 10]], 'unrealized_gain': -299}], ['control 3', {'bid': [3, 4], 'ask': [5, 4], 'accounts': [['a0', 'asset', True, 1000, 2000], ['a1', 'liability', True, 999, 500], ['a2', 'liability', True, 3, 500], ['a3', 'liability', True, 1000, 1003], ['a4', 'asset', True, 1, 2]]}, {'balances': [['a0', 750], ['a1', 1249], ['a2', 4], ['a3', 1250], ['a4', 1]], 'unrealized_gain': -1751}], ['control 4', {'bid': [5, 2], 'ask': [8, 2], 'accounts': [['a0', 'liability', True, 1, 4], ['a1', 'asset', True, 250, 500]]}, {'balances': [['a0', 4], ['a1', 625]], 'unrealized_gain': 125}], ['control 5', {'bid': [1, 2], 'ask': [2, 2], 'accounts': [['a0', 'asset', True, 999, 1998], ['a1', 'liability', False, 999, 999], ['a2', 'asset', True, 250, 500]]}, {'balances': [['a0', 500], ['a1', 999], ['a2', 125]], 'unrealized_gain': -1873}]], [['regression: non-monetary exclusion', {'bid': [9, 4], 'ask': [10, 4], 'accounts': [['a0', 'asset', False, 1, 500], ['a1', 'liability', True, 999, 999]]}, {'balances': [['a0', 500], ['a1', 2498]], 'unrealized_gain': -1499}], ['regression: non-monetary exclusion, partial-repair probe', {'bid': [133, 100], 'ask': [135, 100], 'accounts': [['a0', 'liability', False, 3, 6], ['a1', 'asset', True, 1, 1], ['a2', 'liability', True, 7, 500], ['a3', 'liability', True, 3, 6]]}, {'balances': [['a0', 6], ['a1', 1], ['a2', 9], ['a3', 4]], 'unrealized_gain': 493}], ['control 1', {'bid': [15, 8], 'ask': [17, 8], 'accounts': [['a0', 'liability', True, 999, 999], ['a1', 'liability', True, 101, 101], ['a2', 'asset', True, 7, 7], ['a3', 'liability', True, 101, 202]]}, {'balances': [['a0', 2123], ['a1', 215], ['a2', 13], ['a3', 215]], 'unrealized_gain': -1245}], ['control 2', {'bid': [15, 8], 'ask': [16, 8], 'accounts': [['a0', 'asset', True, 999, 500], ['a1', 'asset', False, 3, 6], ['a2', 'asset', True, 999, 1998], ['a3', 'asset', True, 3, 3], ['a4', 'asset', True, 1, 4]]}, {'balances': [['a0', 1873], ['a1', 6], ['a2', 1873], ['a3', 6], ['a4', 2]], 'unrealized_gain': 1249}], ['control 3', {'bid': [3, 4], 'ask': [4, 4], 'accounts': [['a0', 'asset', True, 250, 500], ['a1', 'liability', True, 101, 202], ['a2', 'liability', False, 101, 104], ['a3', 'asset', True, 1000, 500], ['a4', 'asset', True, 5, 500]]}, {'balances': [['a0', 188], ['a1', 101], ['a2', 104], ['a3', 750], ['a4', 4]], 'unrealized_gain': -457}], ['control 4', {'bid': [4, 8], 'ask': [5, 8], 'accounts': [['a0', 'liability', False, 1, 2], ['a1', 'liability', True, 5, 500], ['a2', 'asset', True, 1, 4], ['a3', 'asset', True, 999, 1002], ['a4', 'liability', True, 5, 5]]}, {'balances': [['a0', 2], ['a1', 3], ['a2', 1], ['a3', 500], ['a4', 3]], 'unrealized_gain': -6}], ['control 5', {'bid': [6, 4], 'ask': [7, 4], 'accounts': [['a0', 'asset', True, 1, 4], ['a1', 'liability', True, 1000, 2000]]}, {'balances': [['a0', 2], ['a1', 1750]], 'unrealized_gain': 248}]], [['regression: non-monetary exclusion', {'bid': [2, 2], 'ask': [3, 2], 'accounts': [['a0', 'asset', True, 3, 3], ['a1', 'asset', False, 5, 500], ['a2', 'asset', False, 999, 1998], ['a3', 'asset', True, 5, 5], ['a4', 'liability', False, 7, 14]]}, {'balances': [['a0', 3], ['a1', 500], ['a2', 1998], ['a3', 5], ['a4', 14]], 'unrealized_gain': 0}], ['control 1', {'bid': [130, 100], 'ask': [132, 100], 'accounts': [['a0', 'asset', True, 1, 4], ['a1', 'asset', True, 7, 500]]}, {'balances': [['a0', 1], ['a1', 9]], 'unrealized_gain': -494}], ['control 2', {'bid': [7, 4], 'ask': [9, 4], 'accounts': [['a0', 'asset', True, 1000, 500], ['a1', 'liability', True, 1, 2], ['a2', 'asset', True, 250, 253], ['a3', 'liability', True, 101, 500], ['a4', 'asset', True, 5, 8]]}, {'balances': [['a0', 1750], ['a1', 2], ['a2', 438], ['a3', 227], ['a4', 9]], 'unrealized_gain': 1709}], ['control 3', {'bid': [135, 100], 'ask': [136, 100], 'accounts': [['a0', 'liability', True, 999, 1002], ['a1', 'liability', False, 1, 500], ['a2', 'liability', True, 5, 5]]}, {'balances': [['a0', 1359], ['a1', 500], ['a2', 7]], 'unrealized_gain': -359}], ['control 4', {'bid': [4, 2], 'ask': [6, 2], 'accounts': [['a0', 'liability', True, 1000, 2000], ['a1', 'asset', True, 7, 10], ['a2', 'asset', True, 101, 101]]}, {'balances': [['a0', 3000], ['a1', 14], ['a2', 202]], 'unrealized_gain': -895}], ['control 5', {'bid': [7, 4], 'ask': [10, 4], 'accounts': [['a0', 'liability', True, 101, 500], ['a1', 'asset', True, 1, 2]]}, {'balances': [['a0', 253], ['a1', 2]], 'unrealized_gain': 247}], ['control 6', {'bid': [12, 10], 'ask': [13, 10], 'accounts': [['a0', 'liability', False, 1000, 2000], ['a1', 'asset', True, 1000, 2000], ['a2', 'liability', True, 1, 2], ['a3', 'asset', True, 3, 500]]}, {'balances': [['a0', 2000], ['a1', 1200], ['a2', 1], ['a3', 4]], 'unrealized_gain': -1295}]], [['regression: non-monetary exclusion', {'bid': [8, 4], 'ask': [9, 4], 'accounts': [['a0', 'asset', False, 250, 253], ['a1', 'liability', True, 5, 8], ['a2', 'asset', False, 5, 10], ['a3', 'liability', True, 5, 8], ['a4', 'liability', True, 999, 1998]]}, {'balances': [['a0', 253], ['a1', 11], ['a2', 10], ['a3', 11], ['a4', 2248]], 'unrealized_gain': -256}], ['regression: non-monetary exclusion, partial-repair probe', {'bid': [3, 2], 'ask': [4, 2], 'accounts': [['a0', 'liability', True, 999, 500], ['a1', 'liability', False, 3, 3], ['a2', 'liability', True, 5, 10]]}, {'balances': [['a0', 1998], ['a1', 3], ['a2', 10]], 'unrealized_gain': -1498}], ['control 1', {'bid': [7, 4], 'ask': [10, 4], 'accounts': [['a0', 'liability', True, 1000, 2000], ['a1', 'asset', True, 1000, 1003], ['a2', 'liability', False, 7, 14]]}, {'balances': [['a0', 2500], ['a1', 1750], ['a2', 14]], 'unrealized_gain': 247}], ['control 2', {'bid': [6, 8], 'ask': [8, 8], 'accounts': [['a0', 'liability', False, 3, 500], ['a1', 'liability', True, 101, 101], ['a2', 'asset', True, 999, 1998], ['a3', 'liability', False, 3, 3], ['a4', 'asset', True, 999, 1002]]}, {'balances': [['a0', 500], ['a1', 101], ['a2', 749], ['a3', 3], ['a4', 749]], 'unrealized_gain': -1502}], ['control 3', {'bid': [6, 4], 'ask': [9, 4], 'accounts': [['a0', 'liability', False, 7, 500], ['a1', 'liability', True, 3, 6]]}, {'balances': [['a0', 500], ['a1', 7]], 'unrealized_gain': -1}], ['control 4', {'bid': [97, 100], 'ask': [98, 100], 'accounts': [['a0', 'liability', False, 3, 3], ['a1', 'liability', True, 999, 999], ['a2', 'liability', False, 5, 10], ['a3', 'liability', True, 101, 104]]}, {'balances': [['a0', 3], ['a1', 979], ['a2', 10], ['a3', 99]], 'unrealized_gain': 25}], ['control 5', {'bid': [15, 10], 'ask': [16, 10], 'accounts': [['a0', 'asset', True, 3, 6], ['a1', 'asset', True, 7, 500], ['a2', 'liability', True, 999, 500], ['a3', 'liability', True, 3, 6], ['a4', 'liability', True, 1, 2]]}, {'balances': [['a0', 5], ['a1', 11], ['a2', 1598], ['a3', 5], ['a4', 2]], 'unrealized_gain': -1587}]], [['regression: non-monetary exclusion', {'bid': [158, 100], 'ask': [159, 100], 'accounts': [['a0', 'liability', True, 1, 1], ['a1', 'asset', False, 999, 1002], ['a2', 'liability', True, 1, 2], ['a3', 'liability', False, 1000, 1003]]}, {'balances': [['a0', 2], ['a1', 1002], ['a2', 2], ['a3', 1003]], 'unrealized_gain': -1}], ['control 1', {'bid': [2, 4], 'ask': [3, 4], 'accounts': [['a0', 'asset', True, 5, 500], ['a1', 'asset', True, 5, 500], ['a2', 'asset', True, 5, 8], ['a3', 'asset', True, 3, 500]]}, {'balances': [['a0', 3], ['a1', 3], ['a2', 3], ['a3', 2]], 'unrealized_gain': -1497}], ['control 2', {'bid': [4, 2], 'ask': [7, 2], 'accounts': [['a0', 'asset', True, 1, 4], ['a1', 'asset', True, 101, 101]]}, {'balances': [['a0', 2], ['a1', 202]], 'unrealized_gain': 99}], ['control 3', {'bid': [3, 4], 'ask': [4, 4], 'accounts': [['a0', 'liability', True, 999, 500], ['a1', 'liability', True, 7, 7], ['a2', 'asset', True, 101, 101]]}, {'balances': [['a0', 999], ['a1', 7], ['a2', 76]], 'unrealized_gain': -524}], ['control 4', {'bid': [2, 2], 'ask': [5, 2], 'accounts': [['a0', 'asset', False, 7, 7], ['a1', 'liability', False, 101, 500]]}, {'balances': [['a0', 7], ['a1', 500]], 'unrealized_gain': 0}], ['control 5', {'bid': [167, 100], 'ask': [169, 100], 'accounts': [['a0', 'asset', True, 250, 250], ['a1', 'asset', True, 101, 104], ['a2', 'liability', True, 999, 1998]]}, {'balances': [['a0', 418], ['a1', 169], ['a2', 1688]], 'unrealized_gain': 543}], ['control 6', {'bid': [6, 10], 'ask': [7, 10], 'accounts': [['a0', 'liability', True, 250, 500], ['a1', 'asset', True, 3, 6]]}, {'balances': [['a0', 175], ['a1', 2]], 'unrealized_gain': 321}]]]
for label, args, expected in fixtures[N-1]:
try:
actual = solve(args)
except Exception as exc:
actual = 'raised ' + type(exc).__name__
check(label, actual, 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 |
|---|---|---|---|
| regression: non-monetary exclusion | {'balances': [['a0', 8], ['a1', 114], ['a2', 8], ['a3', 500]], 'unrealized_gain': 16} | {'balances': [['a0', 8], ['a1', 114], ['a2', 8], ['a3', 500]], 'unrealized_gain': 16} | Passed |
| regression: non-monetary exclusion, partial-repair probe | {'balances': [['a0', 9], ['a1', 7], ['a2', 6]], 'unrealized_gain': 7} | {'balances': [['a0', 9], ['a1', 7], ['a2', 6]], 'unrealized_gain': 7} | Passed |
| control 1 | {'balances': [['a0', 8], ['a1', 3]], 'unrealized_gain': 492} | {'balances': [['a0', 8], ['a1', 3]], 'unrealized_gain': 492} | Passed |
| control 2 | {'balances': [['a0', 344], ['a1', 139], ['a2', 406], ['a3', 1625], ['a4', 10]], 'unrealized_gain': -299} | {'balances': [['a0', 344], ['a1', 139], ['a2', 406], ['a3', 1625], ['a4', 10]], 'unrealized_gain': -299} | Passed |
| control 3 | {'balances': [['a0', 750], ['a1', 1249], ['a2', 4], ['a3', 1250], ['a4', 1]], 'unrealized_gain': -1751} | {'balances': [['a0', 750], ['a1', 1249], ['a2', 4], ['a3', 1250], ['a4', 1]], 'unrealized_gain': -1751} | Passed |
| control 4 | {'balances': [['a0', 4], ['a1', 625]], 'unrealized_gain': 125} | {'balances': [['a0', 4], ['a1', 625]], 'unrealized_gain': 125} | Passed |
| control 5 | {'balances': [['a0', 500], ['a1', 999], ['a2', 125]], 'unrealized_gain': -1873} | {'balances': [['a0', 500], ['a1', 999], ['a2', 125]], 'unrealized_gain': -1873} | Passed |
SHA-256 / c8c81f7b958dc8ce85cdfcd15855dd260ffdbf6bbf2aa3edd5e4f612afa8fb54
Verification & scope
A deterministic bounded teaching model with stipulated toy bookkeeping rules stated in the contract; amounts are integer cents; it makes no claim of conformance to any accounting standard or product. 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:22.282118+00:00.
Case digest / 26ac3c79520e212c11cbe00cd65d4702c819c1fcde085dfdfdb8238180ddfebc