FA-56621 / Auction allocation rules / Open access
Clock demand: deferred exit trigger · case 01
A queued withdrawal fires before its accepted trigger price.
ROOT CAUSE
A queued withdrawal fires before its accepted trigger price.
VERIFIED REPAIR
Apply deferred quantities when the posted price reaches the withdrawal trigger.
Unsuccessful approach: The attempted repair uses [d if p>w else o for d,p,w,o in zip(x["deferred"],x["prices"],x["withdrawal_prices"],x["old"])]; the explicit regression cases demonstrate that this still violates the stipulated auction rule.
Case contract
One bounded clock-auction round maintains per-lot demand at posted prices. Demand reductions become binding only at accepted clock prices; exits cannot be undone; deferred reductions are reconsidered against the new price. Arrays are aligned by lot and values are nonnegative integers. Named decision deferred-exit-trigger: Apply deferred quantities when the posted price reaches the withdrawal trigger.
Why this case matters
Offline administrative auction model for software failure analysis.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
v0 = [min(o,r) if a else o for o,r,a in zip(x["old"],x["requested"],x["accepted"])]
v1 = [0 if e else q for e,q in zip(x["exited"],x["requested"])]
v2 = [p if a else old for p,old,a in zip(x["prices"],x["previous_prices"],x["accepted"])]
v3 = [min(q,c) for q,c in zip(x["requested"],x["caps"])]
v4 = [max(0,q-s) for q,s in zip(x["old"],x["supply"])]
v5 = [i for i,(q,s) in enumerate(zip(x["old"],x["supply"])) if q>s]
v6 = x["deferred"]
v7 = all(q<=s for q,s in zip(x["old"],x["supply"]))
v8 = [a and p!=o for a,p,o in zip(x["accepted"],x["prices"],x["previous_prices"])]
v9 = x["old"] if x["round"]<=x["last_round"] else x["requested"]
return {'accepted-reduction':v0,'irreversible-exit':v1,'posted-price-lock':v2,'demand-cap':v3,'excess-demand':v4,'clock-step-selection':v5,'deferred-exit-trigger':v6,'round-clearing-quiescence':v7,'price-change-ack':v8,'round-demand-replay':v9}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [('normal contract', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('unequal demand caps', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [1, 5], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('exit at trigger', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [9, 25], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]), ('unequal demand caps / exit at trigger', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [9, 25], 'previous_prices': [8, 20], 'caps': [1, 5], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]), ('balanced lots', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [5, 3], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('cross lot surplus', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 9], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('all accepted', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, True], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('none accepted', {'old': [5, 3], 'requested': [2, 4], 'accepted': [False, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('no exited lots', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, False], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('auction reopened', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': True, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]])]
def vary(value):
if type(value) is int: return value*N
if isinstance(value,list): return [vary(v) for v in value]
if isinstance(value,dict): return {k:(v if k in ['count', 'delivery_index', 'disputed', 'maximum_set', 'minimum_set', 'stage', 'threshold', 'waived'] else vary(v)) for k,v in value.items()}
return value
for label, request, expected in fixtures:
check(label, solve(vary(request))['deferred-exit-trigger'], expected[N-1])
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 |
|---|---|---|---|
| normal contract | [1, 2] | [1, 3] | Failed |
| unequal demand caps | [1, 2] | [1, 3] | Failed |
| exit at trigger | [1, 2] | [1, 2] | Passed |
| unequal demand caps / exit at trigger | [1, 2] | [1, 2] | Passed |
| balanced lots | [1, 2] | [1, 3] | Failed |
| cross lot surplus | [1, 2] | [1, 3] | Failed |
| all accepted | [1, 2] | [1, 3] | Failed |
| none accepted | [1, 2] | [1, 3] | Failed |
| no exited lots | [1, 2] | [1, 3] | Failed |
| auction reopened | [1, 2] | [1, 3] | Failed |
SHA-256 / c86cad9c27f5521082832bf24464261673531e1aa34a512857a67a96c74482b3
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
v0 = [min(o,r) if a else o for o,r,a in zip(x["old"],x["requested"],x["accepted"])]
v1 = [0 if e else q for e,q in zip(x["exited"],x["requested"])]
v2 = [p if a else old for p,old,a in zip(x["prices"],x["previous_prices"],x["accepted"])]
v3 = [min(q,c) for q,c in zip(x["requested"],x["caps"])]
v4 = [max(0,q-s) for q,s in zip(x["old"],x["supply"])]
v5 = [i for i,(q,s) in enumerate(zip(x["old"],x["supply"])) if q>s]
v6 = [d if p>w else o for d,p,w,o in zip(x["deferred"],x["prices"],x["withdrawal_prices"],x["old"])]
v7 = all(q<=s for q,s in zip(x["old"],x["supply"]))
v8 = [a and p!=o for a,p,o in zip(x["accepted"],x["prices"],x["previous_prices"])]
v9 = x["old"] if x["round"]<=x["last_round"] else x["requested"]
return {'accepted-reduction':v0,'irreversible-exit':v1,'posted-price-lock':v2,'demand-cap':v3,'excess-demand':v4,'clock-step-selection':v5,'deferred-exit-trigger':v6,'round-clearing-quiescence':v7,'price-change-ack':v8,'round-demand-replay':v9}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [('normal contract', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('unequal demand caps', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [1, 5], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('exit at trigger', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [9, 25], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]), ('unequal demand caps / exit at trigger', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [9, 25], 'previous_prices': [8, 20], 'caps': [1, 5], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]), ('balanced lots', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [5, 3], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('cross lot surplus', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 9], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('all accepted', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, True], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('none accepted', {'old': [5, 3], 'requested': [2, 4], 'accepted': [False, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('no exited lots', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, False], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('auction reopened', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': True, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]])]
def vary(value):
if type(value) is int: return value*N
if isinstance(value,list): return [vary(v) for v in value]
if isinstance(value,dict): return {k:(v if k in ['count', 'delivery_index', 'disputed', 'maximum_set', 'minimum_set', 'stage', 'threshold', 'waived'] else vary(v)) for k,v in value.items()}
return value
for label, request, expected in fixtures:
check(label, solve(vary(request))['deferred-exit-trigger'], expected[N-1])
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 |
|---|---|---|---|
| normal contract | [1, 3] | [1, 3] | Passed |
| unequal demand caps | [1, 3] | [1, 3] | Passed |
| exit at trigger | [5, 3] | [1, 2] | Failed |
| unequal demand caps / exit at trigger | [5, 3] | [1, 2] | Failed |
| balanced lots | [1, 3] | [1, 3] | Passed |
| cross lot surplus | [1, 3] | [1, 3] | Passed |
| all accepted | [1, 3] | [1, 3] | Passed |
| none accepted | [1, 3] | [1, 3] | Passed |
| no exited lots | [1, 3] | [1, 3] | Passed |
| auction reopened | [1, 3] | [1, 3] | Passed |
SHA-256 / d675bf6b82f2b133a7bd62d6f3306b23c16b67d90dfcaa0c590b0b827d7a03f4
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
v0 = [min(o,r) if a else o for o,r,a in zip(x["old"],x["requested"],x["accepted"])]
v1 = [0 if e else q for e,q in zip(x["exited"],x["requested"])]
v2 = [p if a else old for p,old,a in zip(x["prices"],x["previous_prices"],x["accepted"])]
v3 = [min(q,c) for q,c in zip(x["requested"],x["caps"])]
v4 = [max(0,q-s) for q,s in zip(x["old"],x["supply"])]
v5 = [i for i,(q,s) in enumerate(zip(x["old"],x["supply"])) if q>s]
v6 = [d if p>=w else o for d,p,w,o in zip(x["deferred"],x["prices"],x["withdrawal_prices"],x["old"])]
v7 = all(q<=s for q,s in zip(x["old"],x["supply"]))
v8 = [a and p!=o for a,p,o in zip(x["accepted"],x["prices"],x["previous_prices"])]
v9 = x["old"] if x["round"]<=x["last_round"] else x["requested"]
return {'accepted-reduction':v0,'irreversible-exit':v1,'posted-price-lock':v2,'demand-cap':v3,'excess-demand':v4,'clock-step-selection':v5,'deferred-exit-trigger':v6,'round-clearing-quiescence':v7,'price-change-ack':v8,'round-demand-replay':v9}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [('normal contract', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('unequal demand caps', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [1, 5], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('exit at trigger', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [9, 25], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]), ('unequal demand caps / exit at trigger', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [9, 25], 'previous_prices': [8, 20], 'caps': [1, 5], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]), ('balanced lots', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [5, 3], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('cross lot surplus', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 9], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('all accepted', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, True], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('none accepted', {'old': [5, 3], 'requested': [2, 4], 'accepted': [False, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('no exited lots', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, False], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': False, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]]), ('auction reopened', {'old': [5, 3], 'requested': [2, 4], 'accepted': [True, False], 'exited': [False, True], 'prices': [10, 20], 'previous_prices': [8, 20], 'caps': [3, 3], 'supply': [4, 2], 'deferred': [1, 2], 'withdrawal_prices': [9, 25], 'reopened': True, 'round': 2, 'last_round': 1}, [[1, 3], [2, 6], [3, 9], [4, 12], [5, 15]])]
def vary(value):
if type(value) is int: return value*N
if isinstance(value,list): return [vary(v) for v in value]
if isinstance(value,dict): return {k:(v if k in ['count', 'delivery_index', 'disputed', 'maximum_set', 'minimum_set', 'stage', 'threshold', 'waived'] else vary(v)) for k,v in value.items()}
return value
for label, request, expected in fixtures:
check(label, solve(vary(request))['deferred-exit-trigger'], expected[N-1])
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 |
|---|---|---|---|
| normal contract | [1, 3] | [1, 3] | Passed |
| unequal demand caps | [1, 3] | [1, 3] | Passed |
| exit at trigger | [1, 2] | [1, 2] | Passed |
| unequal demand caps / exit at trigger | [1, 2] | [1, 2] | Passed |
| balanced lots | [1, 3] | [1, 3] | Passed |
| cross lot surplus | [1, 3] | [1, 3] | Passed |
| all accepted | [1, 3] | [1, 3] | Passed |
| none accepted | [1, 3] | [1, 3] | Passed |
| no exited lots | [1, 3] | [1, 3] | Passed |
| auction reopened | [1, 3] | [1, 3] | Passed |
SHA-256 / bc273c984e5644f6f87ffad223f7c2479c1159bfe1d173e7f92ae2d3b7100f3a
Verification & scope
Stipulated toy auction rules, not a venue specification, financial advice, optimization claim, or live trading implementation. Nonnegative integer inputs and internally aligned list fields only. 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:08.909816+00:00.
Case digest / dc91fd043c9304633000385c408addee3f6a31b9686d061031e987907bf5e146