FA-12691 / Auction allocation rules / Open access
A reserve-qualified winner pays its own bid · case 01
A reserve-qualified winner pays its own bid.
ROOT CAUSE
The winning value replaces the runner-up opportunity cost.
THE FAILURE
The winning value replaces the runner-up opportunity cost.
Unsuccessful approach: Charging the runner-up alone can charge below reserve.
Case contract
For nonnegative integer bids and reserve, sell one unit if maximum bid >= reserve; return payment max(reserve, second-highest bid), using zero when no runner-up. No sale returns None.
Why this case matters
Deterministic teaching model for reviewing auction allocation software; not a representation of any venue or financial advice.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(bids, reserve):
return max(bids) if bids and max(bids)>=reserve else None
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('reserve binds', solve([20+N,2], 10), 10)
check('runner up binds', solve([20,15], 10), 15)
check('single bidder', solve([20], 10), 10)
check('empty', solve([], 10), None)
check('no qualifying bid', solve([9,8], 10), None)
check('equality qualifies', solve([10], 10), 10)
check('zero reserve', solve([7,3], 0), 3)
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 |
|---|---|---|---|
| reserve binds | 21 | 10 | Failed |
| runner up binds | 20 | 15 | Failed |
| single bidder | 20 | 10 | Failed |
| empty | None | None | Passed |
| no qualifying bid | None | None | Passed |
| equality qualifies | 10 | 10 | Passed |
| zero reserve | 7 | 3 | Failed |
SHA-256 / 00373979a50873759b388651d3a825e01e35d765d5725805f74cc07f054b3e83
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(bids, reserve):
return sorted(bids,reverse=True)[1] if len(bids)>1 and max(bids)>=reserve else (0 if bids and max(bids)>=reserve else None)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('reserve binds', solve([20+N,2], 10), 10)
check('runner up binds', solve([20,15], 10), 15)
check('single bidder', solve([20], 10), 10)
check('empty', solve([], 10), None)
check('no qualifying bid', solve([9,8], 10), None)
check('equality qualifies', solve([10], 10), 10)
check('zero reserve', solve([7,3], 0), 3)
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 |
|---|---|---|---|
| reserve binds | 2 | 10 | Failed |
| runner up binds | 15 | 15 | Passed |
| single bidder | 0 | 10 | Failed |
| empty | None | None | Passed |
| no qualifying bid | None | None | Passed |
| equality qualifies | 0 | 10 | Failed |
| zero reserve | 3 | 3 | Passed |
SHA-256 / d52c0fb3a56fa5cae12301d18cb1c559481b4e2917584b7ea661421685b0f84d
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 7 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗Verification & scope
Offline toy model with explicit integer inputs; no strategic behavior or real market execution. 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:38:59.266601+00:00.
Case digest / 78cbd7487bc4b7aaa2011a27fdb1bd9474e3e91683c69d3b16105e9eace4be4a