FA-58161 / Double-entry ledger accounting / Open access
Cost pool allocation entry: reversal sides · case 01
Reversing an allocation posts it a second time.
ROOT CAUSE
Negative pool amounts keep the forward credit/debit sides.
VERIFIED REPAIR
Swap the sides for negative amounts.
Unsuccessful approach: Inverting the rule reverses the ordinary forward allocation.
Case contract
x = {'amount': signed cents, 'weights': [[center, non-negative weight]] (some positive), 'source': account}. The pool magnitude is split across positive-weight centers by the largest remainder method: floor shares, then one extra cent to the largest remainders, ties to the earlier-listed center. A non-negative amount credits the source and debits centers; a negative amount (reversal) debits the source and credits centers, all amounts positive. Return lines [[source, side, magnitude]] + [[center, side, share]] for nonzero shares in listing order.
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):
amt = x['amount']
side_src, side_dst = ('C', 'D')
mag = abs(amt)
ws = [(c, w) for c, w in x['weights'] if w > 0]
total = sum(w for _, w in ws)
base = [mag * w // total for _, w in ws]
rems = [mag * w % total for _, w in ws]
left = mag - sum(base)
order = sorted(range(len(ws)), key=lambda i: (-rems[i], i))
for i in order[:left]:
base[i] += 1
lines = [[x['source'], side_src, mag]]
for (c, w), share in zip(ws, base):
if share:
lines.append([c, side_dst, share])
return lines
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: reversal sides', {'amount': -7, 'weights': [['ops', 0], ['mkt', 5], ['hr', 1], ['it', 2], ['lab', 0]], 'source': 'pool'}, [['pool', 'D', 7], ['mkt', 'C', 4], ['hr', 'C', 1], ['it', 'C', 2]]], ['control 1', {'amount': 7, 'weights': [['fin', 0], ['it', 7], ['hr', 2], ['lab', 3], ['ops', 2]], 'source': 'pool'}, [['pool', 'C', 7], ['it', 'D', 4], ['hr', 'D', 1], ['lab', 'D', 1], ['ops', 'D', 1]]], ['control 2', {'amount': 7, 'weights': [['mkt', 0], ['fin', 1]], 'source': 'pool'}, [['pool', 'C', 7], ['fin', 'D', 7]]], ['control 3', {'amount': 99999, 'weights': [['hr', 1], ['it', 0]], 'source': 'pool'}, [['pool', 'C', 99999], ['hr', 'D', 99999]]], ['control 4', {'amount': 0, 'weights': [['ops', 3], ['mkt', 7], ['fin', 3], ['lab', 5]], 'source': 'pool'}, [['pool', 'C', 0]]], ['control 5', {'amount': 100, 'weights': [['ops', 5], ['it', 5]], 'source': 'pool'}, [['pool', 'C', 100], ['ops', 'D', 50], ['it', 'D', 50]]], ['control 6', {'amount': 0, 'weights': [['ops', 5], ['hr', 5], ['mkt', 7], ['fin', 3]], 'source': 'pool'}, [['pool', 'C', 0]]]], [['regression: reversal sides', {'amount': -101, 'weights': [['lab', 1], ['mkt', 5], ['ops', 2]], 'source': 'pool'}, [['pool', 'D', 101], ['lab', 'C', 13], ['mkt', 'C', 63], ['ops', 'C', 25]]], ['control 1', {'amount': 7, 'weights': [['mkt', 0], ['it', 7], ['ops', 2], ['fin', 2], ['lab', 1]], 'source': 'pool'}, [['pool', 'C', 7], ['it', 'D', 4], ['ops', 'D', 1], ['fin', 'D', 1], ['lab', 'D', 1]]], ['control 2', {'amount': 0, 'weights': [['it', 3], ['lab', 1], ['mkt', 0]], 'source': 'pool'}, [['pool', 'C', 0]]], ['control 3', {'amount': 101, 'weights': [['lab', 7], ['hr', 5]], 'source': 'pool'}, [['pool', 'C', 101], ['lab', 'D', 59], ['hr', 'D', 42]]], ['control 4', {'amount': 10, 'weights': [['lab', 1], ['it', 3], ['hr', 1], ['ops', 7], ['mkt', 0]], 'source': 'pool'}, [['pool', 'C', 10], ['lab', 'D', 1], ['it', 'D', 2], ['hr', 'D', 1], ['ops', 'D', 6]]], ['control 5', {'amount': 10, 'weights': [['mkt', 1], ['it', 2], ['fin', 1], ['hr', 7]], 'source': 'pool'}, [['pool', 'C', 10], ['mkt', 'D', 1], ['it', 'D', 2], ['fin', 'D', 1], ['hr', 'D', 6]]], ['control 6', {'amount': 1000, 'weights': [['mkt', 2], ['fin', 5]], 'source': 'pool'}, [['pool', 'C', 1000], ['mkt', 'D', 286], ['fin', 'D', 714]]]], [['regression: reversal sides', {'amount': -7, 'weights': [['mkt', 7], ['fin', 7]], 'source': 'pool'}, [['pool', 'D', 7], ['mkt', 'C', 4], ['fin', 'C', 3]]], ['control 1', {'amount': 7, 'weights': [['fin', 1], ['mkt', 5]], 'source': 'pool'}, [['pool', 'C', 7], ['fin', 'D', 1], ['mkt', 'D', 6]]], ['control 2', {'amount': 7, 'weights': [['it', 0], ['lab', 7], ['mkt', 1], ['hr', 3]], 'source': 'pool'}, [['pool', 'C', 7], ['lab', 'D', 4], ['mkt', 'D', 1], ['hr', 'D', 2]]], ['control 3', {'amount': 3, 'weights': [['it', 7], ['hr', 1]], 'source': 'pool'}, [['pool', 'C', 3], ['it', 'D', 3]]], ['control 4', {'amount': 10, 'weights': [['ops', 3], ['lab', 5]], 'source': 'pool'}, [['pool', 'C', 10], ['ops', 'D', 4], ['lab', 'D', 6]]], ['control 5', {'amount': 1000, 'weights': [['ops', 7], ['mkt', 5], ['fin', 7]], 'source': 'pool'}, [['pool', 'C', 1000], ['ops', 'D', 369], ['mkt', 'D', 263], ['fin', 'D', 368]]], ['control 6', {'amount': 10, 'weights': [['ops', 1], ['lab', 5]], 'source': 'pool'}, [['pool', 'C', 10], ['ops', 'D', 2], ['lab', 'D', 8]]]], [['regression: reversal sides', {'amount': -7, 'weights': [['lab', 2], ['ops', 7], ['mkt', 2]], 'source': 'pool'}, [['pool', 'D', 7], ['lab', 'C', 1], ['ops', 'C', 5], ['mkt', 'C', 1]]], ['control 1', {'amount': 100, 'weights': [['it', 7], ['fin', 3], ['mkt', 7], ['hr', 1]], 'source': 'pool'}, [['pool', 'C', 100], ['it', 'D', 39], ['fin', 'D', 17], ['mkt', 'D', 39], ['hr', 'D', 5]]], ['control 2', {'amount': 10, 'weights': [['lab', 2], ['it', 5], ['hr', 7], ['mkt', 0], ['ops', 7]], 'source': 'pool'}, [['pool', 'C', 10], ['lab', 'D', 1], ['it', 'D', 3], ['hr', 'D', 3], ['ops', 'D', 3]]], ['control 3', {'amount': 1000, 'weights': [['fin', 7], ['mkt', 3], ['it', 3], ['lab', 1], ['hr', 2]], 'source': 'pool'}, [['pool', 'C', 1000], ['fin', 'D', 438], ['mkt', 'D', 188], ['it', 'D', 187], ['lab', 'D', 62], ['hr', 'D', 125]]], ['control 4', {'amount': 3, 'weights': [['it', 3], ['lab', 3], ['hr', 7]], 'source': 'pool'}, [['pool', 'C', 3], ['it', 'D', 1], ['lab', 'D', 1], ['hr', 'D', 1]]], ['control 5', {'amount': 99999, 'weights': [['hr', 0], ['lab', 0], ['ops', 3], ['mkt', 5], ['it', 2]], 'source': 'pool'}, [['pool', 'C', 99999], ['ops', 'D', 30000], ['mkt', 'D', 49999], ['it', 'D', 20000]]], ['control 6', {'amount': 101, 'weights': [['mkt', 3], ['hr', 0], ['fin', 5]], 'source': 'pool'}, [['pool', 'C', 101], ['mkt', 'D', 38], ['fin', 'D', 63]]]], [['regression: reversal sides', {'amount': -7, 'weights': [['fin', 3], ['mkt', 1]], 'source': 'pool'}, [['pool', 'D', 7], ['fin', 'C', 5], ['mkt', 'C', 2]]], ['control 1', {'amount': 100, 'weights': [['fin', 2], ['hr', 0], ['it', 0], ['mkt', 0]], 'source': 'pool'}, [['pool', 'C', 100], ['fin', 'D', 100]]], ['control 2', {'amount': 10, 'weights': [['ops', 3], ['it', 1], ['mkt', 3], ['hr', 0]], 'source': 'pool'}, [['pool', 'C', 10], ['ops', 'D', 4], ['it', 'D', 2], ['mkt', 'D', 4]]], ['control 3', {'amount': 7, 'weights': [['mkt', 1], ['it', 0]], 'source': 'pool'}, [['pool', 'C', 7], ['mkt', 'D', 7]]], ['control 4', {'amount': 10, 'weights': [['mkt', 1], ['it', 7], ['fin', 0], ['ops', 1]], 'source': 'pool'}, [['pool', 'C', 10], ['mkt', 'D', 1], ['it', 'D', 8], ['ops', 'D', 1]]], ['control 5', {'amount': 101, 'weights': [['fin', 5], ['hr', 2]], 'source': 'pool'}, [['pool', 'C', 101], ['fin', 'D', 72], ['hr', 'D', 29]]], ['control 6', {'amount': 101, 'weights': [['fin', 2], ['hr', 2]], 'source': 'pool'}, [['pool', 'C', 101], ['fin', 'D', 51], ['hr', 'D', 50]]]]]
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: reversal sides | [['pool', 'C', 7], ['mkt', 'D', 4], ['hr', 'D', 1], ['it', 'D', 2]] | [['pool', 'D', 7], ['mkt', 'C', 4], ['hr', 'C', 1], ['it', 'C', 2]] | Failed |
| control 1 | [['pool', 'C', 7], ['it', 'D', 4], ['hr', 'D', 1], ['lab', 'D', 1], ['ops', 'D', 1]] | [['pool', 'C', 7], ['it', 'D', 4], ['hr', 'D', 1], ['lab', 'D', 1], ['ops', 'D', 1]] | Passed |
| control 2 | [['pool', 'C', 7], ['fin', 'D', 7]] | [['pool', 'C', 7], ['fin', 'D', 7]] | Passed |
| control 3 | [['pool', 'C', 99999], ['hr', 'D', 99999]] | [['pool', 'C', 99999], ['hr', 'D', 99999]] | Passed |
| control 4 | [['pool', 'C', 0]] | [['pool', 'C', 0]] | Passed |
| control 5 | [['pool', 'C', 100], ['ops', 'D', 50], ['it', 'D', 50]] | [['pool', 'C', 100], ['ops', 'D', 50], ['it', 'D', 50]] | Passed |
| control 6 | [['pool', 'C', 0]] | [['pool', 'C', 0]] | Passed |
SHA-256 / ddf6328e640aa2c8c5afe19343f98e7ff76aadcce4af8547edb84b1e4649747d
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
amt = x['amount']
side_src, side_dst = ('D', 'C') if amt >= 0 else ('C', 'D')
mag = abs(amt)
ws = [(c, w) for c, w in x['weights'] if w > 0]
total = sum(w for _, w in ws)
base = [mag * w // total for _, w in ws]
rems = [mag * w % total for _, w in ws]
left = mag - sum(base)
order = sorted(range(len(ws)), key=lambda i: (-rems[i], i))
for i in order[:left]:
base[i] += 1
lines = [[x['source'], side_src, mag]]
for (c, w), share in zip(ws, base):
if share:
lines.append([c, side_dst, share])
return lines
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: reversal sides', {'amount': -7, 'weights': [['ops', 0], ['mkt', 5], ['hr', 1], ['it', 2], ['lab', 0]], 'source': 'pool'}, [['pool', 'D', 7], ['mkt', 'C', 4], ['hr', 'C', 1], ['it', 'C', 2]]], ['control 1', {'amount': 7, 'weights': [['fin', 0], ['it', 7], ['hr', 2], ['lab', 3], ['ops', 2]], 'source': 'pool'}, [['pool', 'C', 7], ['it', 'D', 4], ['hr', 'D', 1], ['lab', 'D', 1], ['ops', 'D', 1]]], ['control 2', {'amount': 7, 'weights': [['mkt', 0], ['fin', 1]], 'source': 'pool'}, [['pool', 'C', 7], ['fin', 'D', 7]]], ['control 3', {'amount': 99999, 'weights': [['hr', 1], ['it', 0]], 'source': 'pool'}, [['pool', 'C', 99999], ['hr', 'D', 99999]]], ['control 4', {'amount': 0, 'weights': [['ops', 3], ['mkt', 7], ['fin', 3], ['lab', 5]], 'source': 'pool'}, [['pool', 'C', 0]]], ['control 5', {'amount': 100, 'weights': [['ops', 5], ['it', 5]], 'source': 'pool'}, [['pool', 'C', 100], ['ops', 'D', 50], ['it', 'D', 50]]], ['control 6', {'amount': 0, 'weights': [['ops', 5], ['hr', 5], ['mkt', 7], ['fin', 3]], 'source': 'pool'}, [['pool', 'C', 0]]]], [['regression: reversal sides', {'amount': -101, 'weights': [['lab', 1], ['mkt', 5], ['ops', 2]], 'source': 'pool'}, [['pool', 'D', 101], ['lab', 'C', 13], ['mkt', 'C', 63], ['ops', 'C', 25]]], ['control 1', {'amount': 7, 'weights': [['mkt', 0], ['it', 7], ['ops', 2], ['fin', 2], ['lab', 1]], 'source': 'pool'}, [['pool', 'C', 7], ['it', 'D', 4], ['ops', 'D', 1], ['fin', 'D', 1], ['lab', 'D', 1]]], ['control 2', {'amount': 0, 'weights': [['it', 3], ['lab', 1], ['mkt', 0]], 'source': 'pool'}, [['pool', 'C', 0]]], ['control 3', {'amount': 101, 'weights': [['lab', 7], ['hr', 5]], 'source': 'pool'}, [['pool', 'C', 101], ['lab', 'D', 59], ['hr', 'D', 42]]], ['control 4', {'amount': 10, 'weights': [['lab', 1], ['it', 3], ['hr', 1], ['ops', 7], ['mkt', 0]], 'source': 'pool'}, [['pool', 'C', 10], ['lab', 'D', 1], ['it', 'D', 2], ['hr', 'D', 1], ['ops', 'D', 6]]], ['control 5', {'amount': 10, 'weights': [['mkt', 1], ['it', 2], ['fin', 1], ['hr', 7]], 'source': 'pool'}, [['pool', 'C', 10], ['mkt', 'D', 1], ['it', 'D', 2], ['fin', 'D', 1], ['hr', 'D', 6]]], ['control 6', {'amount': 1000, 'weights': [['mkt', 2], ['fin', 5]], 'source': 'pool'}, [['pool', 'C', 1000], ['mkt', 'D', 286], ['fin', 'D', 714]]]], [['regression: reversal sides', {'amount': -7, 'weights': [['mkt', 7], ['fin', 7]], 'source': 'pool'}, [['pool', 'D', 7], ['mkt', 'C', 4], ['fin', 'C', 3]]], ['control 1', {'amount': 7, 'weights': [['fin', 1], ['mkt', 5]], 'source': 'pool'}, [['pool', 'C', 7], ['fin', 'D', 1], ['mkt', 'D', 6]]], ['control 2', {'amount': 7, 'weights': [['it', 0], ['lab', 7], ['mkt', 1], ['hr', 3]], 'source': 'pool'}, [['pool', 'C', 7], ['lab', 'D', 4], ['mkt', 'D', 1], ['hr', 'D', 2]]], ['control 3', {'amount': 3, 'weights': [['it', 7], ['hr', 1]], 'source': 'pool'}, [['pool', 'C', 3], ['it', 'D', 3]]], ['control 4', {'amount': 10, 'weights': [['ops', 3], ['lab', 5]], 'source': 'pool'}, [['pool', 'C', 10], ['ops', 'D', 4], ['lab', 'D', 6]]], ['control 5', {'amount': 1000, 'weights': [['ops', 7], ['mkt', 5], ['fin', 7]], 'source': 'pool'}, [['pool', 'C', 1000], ['ops', 'D', 369], ['mkt', 'D', 263], ['fin', 'D', 368]]], ['control 6', {'amount': 10, 'weights': [['ops', 1], ['lab', 5]], 'source': 'pool'}, [['pool', 'C', 10], ['ops', 'D', 2], ['lab', 'D', 8]]]], [['regression: reversal sides', {'amount': -7, 'weights': [['lab', 2], ['ops', 7], ['mkt', 2]], 'source': 'pool'}, [['pool', 'D', 7], ['lab', 'C', 1], ['ops', 'C', 5], ['mkt', 'C', 1]]], ['control 1', {'amount': 100, 'weights': [['it', 7], ['fin', 3], ['mkt', 7], ['hr', 1]], 'source': 'pool'}, [['pool', 'C', 100], ['it', 'D', 39], ['fin', 'D', 17], ['mkt', 'D', 39], ['hr', 'D', 5]]], ['control 2', {'amount': 10, 'weights': [['lab', 2], ['it', 5], ['hr', 7], ['mkt', 0], ['ops', 7]], 'source': 'pool'}, [['pool', 'C', 10], ['lab', 'D', 1], ['it', 'D', 3], ['hr', 'D', 3], ['ops', 'D', 3]]], ['control 3', {'amount': 1000, 'weights': [['fin', 7], ['mkt', 3], ['it', 3], ['lab', 1], ['hr', 2]], 'source': 'pool'}, [['pool', 'C', 1000], ['fin', 'D', 438], ['mkt', 'D', 188], ['it', 'D', 187], ['lab', 'D', 62], ['hr', 'D', 125]]], ['control 4', {'amount': 3, 'weights': [['it', 3], ['lab', 3], ['hr', 7]], 'source': 'pool'}, [['pool', 'C', 3], ['it', 'D', 1], ['lab', 'D', 1], ['hr', 'D', 1]]], ['control 5', {'amount': 99999, 'weights': [['hr', 0], ['lab', 0], ['ops', 3], ['mkt', 5], ['it', 2]], 'source': 'pool'}, [['pool', 'C', 99999], ['ops', 'D', 30000], ['mkt', 'D', 49999], ['it', 'D', 20000]]], ['control 6', {'amount': 101, 'weights': [['mkt', 3], ['hr', 0], ['fin', 5]], 'source': 'pool'}, [['pool', 'C', 101], ['mkt', 'D', 38], ['fin', 'D', 63]]]], [['regression: reversal sides', {'amount': -7, 'weights': [['fin', 3], ['mkt', 1]], 'source': 'pool'}, [['pool', 'D', 7], ['fin', 'C', 5], ['mkt', 'C', 2]]], ['control 1', {'amount': 100, 'weights': [['fin', 2], ['hr', 0], ['it', 0], ['mkt', 0]], 'source': 'pool'}, [['pool', 'C', 100], ['fin', 'D', 100]]], ['control 2', {'amount': 10, 'weights': [['ops', 3], ['it', 1], ['mkt', 3], ['hr', 0]], 'source': 'pool'}, [['pool', 'C', 10], ['ops', 'D', 4], ['it', 'D', 2], ['mkt', 'D', 4]]], ['control 3', {'amount': 7, 'weights': [['mkt', 1], ['it', 0]], 'source': 'pool'}, [['pool', 'C', 7], ['mkt', 'D', 7]]], ['control 4', {'amount': 10, 'weights': [['mkt', 1], ['it', 7], ['fin', 0], ['ops', 1]], 'source': 'pool'}, [['pool', 'C', 10], ['mkt', 'D', 1], ['it', 'D', 8], ['ops', 'D', 1]]], ['control 5', {'amount': 101, 'weights': [['fin', 5], ['hr', 2]], 'source': 'pool'}, [['pool', 'C', 101], ['fin', 'D', 72], ['hr', 'D', 29]]], ['control 6', {'amount': 101, 'weights': [['fin', 2], ['hr', 2]], 'source': 'pool'}, [['pool', 'C', 101], ['fin', 'D', 51], ['hr', 'D', 50]]]]]
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: reversal sides | [['pool', 'C', 7], ['mkt', 'D', 4], ['hr', 'D', 1], ['it', 'D', 2]] | [['pool', 'D', 7], ['mkt', 'C', 4], ['hr', 'C', 1], ['it', 'C', 2]] | Failed |
| control 1 | [['pool', 'D', 7], ['it', 'C', 4], ['hr', 'C', 1], ['lab', 'C', 1], ['ops', 'C', 1]] | [['pool', 'C', 7], ['it', 'D', 4], ['hr', 'D', 1], ['lab', 'D', 1], ['ops', 'D', 1]] | Failed |
| control 2 | [['pool', 'D', 7], ['fin', 'C', 7]] | [['pool', 'C', 7], ['fin', 'D', 7]] | Failed |
| control 3 | [['pool', 'D', 99999], ['hr', 'C', 99999]] | [['pool', 'C', 99999], ['hr', 'D', 99999]] | Failed |
| control 4 | [['pool', 'D', 0]] | [['pool', 'C', 0]] | Failed |
| control 5 | [['pool', 'D', 100], ['ops', 'C', 50], ['it', 'C', 50]] | [['pool', 'C', 100], ['ops', 'D', 50], ['it', 'D', 50]] | Failed |
| control 6 | [['pool', 'D', 0]] | [['pool', 'C', 0]] | Failed |
SHA-256 / 021f79937953bd54e428d5f94c7bb48c313160a0f0214952560305f861ce1757
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
amt = x['amount']
side_src, side_dst = ('C', 'D') if amt >= 0 else ('D', 'C')
mag = abs(amt)
ws = [(c, w) for c, w in x['weights'] if w > 0]
total = sum(w for _, w in ws)
base = [mag * w // total for _, w in ws]
rems = [mag * w % total for _, w in ws]
left = mag - sum(base)
order = sorted(range(len(ws)), key=lambda i: (-rems[i], i))
for i in order[:left]:
base[i] += 1
lines = [[x['source'], side_src, mag]]
for (c, w), share in zip(ws, base):
if share:
lines.append([c, side_dst, share])
return lines
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: reversal sides', {'amount': -7, 'weights': [['ops', 0], ['mkt', 5], ['hr', 1], ['it', 2], ['lab', 0]], 'source': 'pool'}, [['pool', 'D', 7], ['mkt', 'C', 4], ['hr', 'C', 1], ['it', 'C', 2]]], ['control 1', {'amount': 7, 'weights': [['fin', 0], ['it', 7], ['hr', 2], ['lab', 3], ['ops', 2]], 'source': 'pool'}, [['pool', 'C', 7], ['it', 'D', 4], ['hr', 'D', 1], ['lab', 'D', 1], ['ops', 'D', 1]]], ['control 2', {'amount': 7, 'weights': [['mkt', 0], ['fin', 1]], 'source': 'pool'}, [['pool', 'C', 7], ['fin', 'D', 7]]], ['control 3', {'amount': 99999, 'weights': [['hr', 1], ['it', 0]], 'source': 'pool'}, [['pool', 'C', 99999], ['hr', 'D', 99999]]], ['control 4', {'amount': 0, 'weights': [['ops', 3], ['mkt', 7], ['fin', 3], ['lab', 5]], 'source': 'pool'}, [['pool', 'C', 0]]], ['control 5', {'amount': 100, 'weights': [['ops', 5], ['it', 5]], 'source': 'pool'}, [['pool', 'C', 100], ['ops', 'D', 50], ['it', 'D', 50]]], ['control 6', {'amount': 0, 'weights': [['ops', 5], ['hr', 5], ['mkt', 7], ['fin', 3]], 'source': 'pool'}, [['pool', 'C', 0]]]], [['regression: reversal sides', {'amount': -101, 'weights': [['lab', 1], ['mkt', 5], ['ops', 2]], 'source': 'pool'}, [['pool', 'D', 101], ['lab', 'C', 13], ['mkt', 'C', 63], ['ops', 'C', 25]]], ['control 1', {'amount': 7, 'weights': [['mkt', 0], ['it', 7], ['ops', 2], ['fin', 2], ['lab', 1]], 'source': 'pool'}, [['pool', 'C', 7], ['it', 'D', 4], ['ops', 'D', 1], ['fin', 'D', 1], ['lab', 'D', 1]]], ['control 2', {'amount': 0, 'weights': [['it', 3], ['lab', 1], ['mkt', 0]], 'source': 'pool'}, [['pool', 'C', 0]]], ['control 3', {'amount': 101, 'weights': [['lab', 7], ['hr', 5]], 'source': 'pool'}, [['pool', 'C', 101], ['lab', 'D', 59], ['hr', 'D', 42]]], ['control 4', {'amount': 10, 'weights': [['lab', 1], ['it', 3], ['hr', 1], ['ops', 7], ['mkt', 0]], 'source': 'pool'}, [['pool', 'C', 10], ['lab', 'D', 1], ['it', 'D', 2], ['hr', 'D', 1], ['ops', 'D', 6]]], ['control 5', {'amount': 10, 'weights': [['mkt', 1], ['it', 2], ['fin', 1], ['hr', 7]], 'source': 'pool'}, [['pool', 'C', 10], ['mkt', 'D', 1], ['it', 'D', 2], ['fin', 'D', 1], ['hr', 'D', 6]]], ['control 6', {'amount': 1000, 'weights': [['mkt', 2], ['fin', 5]], 'source': 'pool'}, [['pool', 'C', 1000], ['mkt', 'D', 286], ['fin', 'D', 714]]]], [['regression: reversal sides', {'amount': -7, 'weights': [['mkt', 7], ['fin', 7]], 'source': 'pool'}, [['pool', 'D', 7], ['mkt', 'C', 4], ['fin', 'C', 3]]], ['control 1', {'amount': 7, 'weights': [['fin', 1], ['mkt', 5]], 'source': 'pool'}, [['pool', 'C', 7], ['fin', 'D', 1], ['mkt', 'D', 6]]], ['control 2', {'amount': 7, 'weights': [['it', 0], ['lab', 7], ['mkt', 1], ['hr', 3]], 'source': 'pool'}, [['pool', 'C', 7], ['lab', 'D', 4], ['mkt', 'D', 1], ['hr', 'D', 2]]], ['control 3', {'amount': 3, 'weights': [['it', 7], ['hr', 1]], 'source': 'pool'}, [['pool', 'C', 3], ['it', 'D', 3]]], ['control 4', {'amount': 10, 'weights': [['ops', 3], ['lab', 5]], 'source': 'pool'}, [['pool', 'C', 10], ['ops', 'D', 4], ['lab', 'D', 6]]], ['control 5', {'amount': 1000, 'weights': [['ops', 7], ['mkt', 5], ['fin', 7]], 'source': 'pool'}, [['pool', 'C', 1000], ['ops', 'D', 369], ['mkt', 'D', 263], ['fin', 'D', 368]]], ['control 6', {'amount': 10, 'weights': [['ops', 1], ['lab', 5]], 'source': 'pool'}, [['pool', 'C', 10], ['ops', 'D', 2], ['lab', 'D', 8]]]], [['regression: reversal sides', {'amount': -7, 'weights': [['lab', 2], ['ops', 7], ['mkt', 2]], 'source': 'pool'}, [['pool', 'D', 7], ['lab', 'C', 1], ['ops', 'C', 5], ['mkt', 'C', 1]]], ['control 1', {'amount': 100, 'weights': [['it', 7], ['fin', 3], ['mkt', 7], ['hr', 1]], 'source': 'pool'}, [['pool', 'C', 100], ['it', 'D', 39], ['fin', 'D', 17], ['mkt', 'D', 39], ['hr', 'D', 5]]], ['control 2', {'amount': 10, 'weights': [['lab', 2], ['it', 5], ['hr', 7], ['mkt', 0], ['ops', 7]], 'source': 'pool'}, [['pool', 'C', 10], ['lab', 'D', 1], ['it', 'D', 3], ['hr', 'D', 3], ['ops', 'D', 3]]], ['control 3', {'amount': 1000, 'weights': [['fin', 7], ['mkt', 3], ['it', 3], ['lab', 1], ['hr', 2]], 'source': 'pool'}, [['pool', 'C', 1000], ['fin', 'D', 438], ['mkt', 'D', 188], ['it', 'D', 187], ['lab', 'D', 62], ['hr', 'D', 125]]], ['control 4', {'amount': 3, 'weights': [['it', 3], ['lab', 3], ['hr', 7]], 'source': 'pool'}, [['pool', 'C', 3], ['it', 'D', 1], ['lab', 'D', 1], ['hr', 'D', 1]]], ['control 5', {'amount': 99999, 'weights': [['hr', 0], ['lab', 0], ['ops', 3], ['mkt', 5], ['it', 2]], 'source': 'pool'}, [['pool', 'C', 99999], ['ops', 'D', 30000], ['mkt', 'D', 49999], ['it', 'D', 20000]]], ['control 6', {'amount': 101, 'weights': [['mkt', 3], ['hr', 0], ['fin', 5]], 'source': 'pool'}, [['pool', 'C', 101], ['mkt', 'D', 38], ['fin', 'D', 63]]]], [['regression: reversal sides', {'amount': -7, 'weights': [['fin', 3], ['mkt', 1]], 'source': 'pool'}, [['pool', 'D', 7], ['fin', 'C', 5], ['mkt', 'C', 2]]], ['control 1', {'amount': 100, 'weights': [['fin', 2], ['hr', 0], ['it', 0], ['mkt', 0]], 'source': 'pool'}, [['pool', 'C', 100], ['fin', 'D', 100]]], ['control 2', {'amount': 10, 'weights': [['ops', 3], ['it', 1], ['mkt', 3], ['hr', 0]], 'source': 'pool'}, [['pool', 'C', 10], ['ops', 'D', 4], ['it', 'D', 2], ['mkt', 'D', 4]]], ['control 3', {'amount': 7, 'weights': [['mkt', 1], ['it', 0]], 'source': 'pool'}, [['pool', 'C', 7], ['mkt', 'D', 7]]], ['control 4', {'amount': 10, 'weights': [['mkt', 1], ['it', 7], ['fin', 0], ['ops', 1]], 'source': 'pool'}, [['pool', 'C', 10], ['mkt', 'D', 1], ['it', 'D', 8], ['ops', 'D', 1]]], ['control 5', {'amount': 101, 'weights': [['fin', 5], ['hr', 2]], 'source': 'pool'}, [['pool', 'C', 101], ['fin', 'D', 72], ['hr', 'D', 29]]], ['control 6', {'amount': 101, 'weights': [['fin', 2], ['hr', 2]], 'source': 'pool'}, [['pool', 'C', 101], ['fin', 'D', 51], ['hr', 'D', 50]]]]]
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: reversal sides | [['pool', 'D', 7], ['mkt', 'C', 4], ['hr', 'C', 1], ['it', 'C', 2]] | [['pool', 'D', 7], ['mkt', 'C', 4], ['hr', 'C', 1], ['it', 'C', 2]] | Passed |
| control 1 | [['pool', 'C', 7], ['it', 'D', 4], ['hr', 'D', 1], ['lab', 'D', 1], ['ops', 'D', 1]] | [['pool', 'C', 7], ['it', 'D', 4], ['hr', 'D', 1], ['lab', 'D', 1], ['ops', 'D', 1]] | Passed |
| control 2 | [['pool', 'C', 7], ['fin', 'D', 7]] | [['pool', 'C', 7], ['fin', 'D', 7]] | Passed |
| control 3 | [['pool', 'C', 99999], ['hr', 'D', 99999]] | [['pool', 'C', 99999], ['hr', 'D', 99999]] | Passed |
| control 4 | [['pool', 'C', 0]] | [['pool', 'C', 0]] | Passed |
| control 5 | [['pool', 'C', 100], ['ops', 'D', 50], ['it', 'D', 50]] | [['pool', 'C', 100], ['ops', 'D', 50], ['it', 'D', 50]] | Passed |
| control 6 | [['pool', 'C', 0]] | [['pool', 'C', 0]] | Passed |
SHA-256 / 39f72a2d250baa388759abd899e30bec002445da1fc2017be57a30a399bfc575
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:24.028371+00:00.
Case digest / a518333fba3567707ede461664d9de8a984cfa17aee999901896623b948a4b20