Loan award: eligibility-first Vickrey (Closes #149) #152

Merged
robertismo merged 1 commit from 149-eligibility into master 2026-10-02 19:41:27 +00:00
Owner

The auction now happens only among bidders who can fund the loan. For each loan in shelf order, the bids are filtered to the ELIGIBLE set — bank alive AND live cash (after its earlier wins this walk) covering the amount — and only then is the Vickrey run: the lowest eligible bid wins, paying the second-lowest ELIGIBLE bid, or its own when it is the only one.

Fixes both bugs: a cash-short bidder can no longer undercut the second price (it is not in the set), and the runner-up inherits a loan the winner cannot fund. A loan dies unclaimed only when no eligible bidder exists. The human summary reports skipped bids instead of the old won-but-unfunded case.

Regression tests: runner-up inherits, unfundable bids cannot set the second price, drained banks drop out of later loans, no-eligible loans die unclaimed. (TestTinyBenchWritesIterationLog fails on clean master too — pre-existing gauntlet panic, filed as #151.)

The auction now happens only among bidders who can fund the loan. For each loan in shelf order, the bids are filtered to the ELIGIBLE set — bank alive AND live cash (after its earlier wins this walk) covering the amount — and only then is the Vickrey run: the lowest eligible bid wins, paying the second-lowest ELIGIBLE bid, or its own when it is the only one. Fixes both bugs: a cash-short bidder can no longer undercut the second price (it is not in the set), and the runner-up inherits a loan the winner cannot fund. A loan dies unclaimed only when no eligible bidder exists. The human summary reports skipped bids instead of the old won-but-unfunded case. Regression tests: runner-up inherits, unfundable bids cannot set the second price, drained banks drop out of later loans, no-eligible loans die unclaimed. (TestTinyBenchWritesIterationLog fails on clean master too — pre-existing gauntlet panic, filed as #151.)
loan award: eligibility-first Vickrey (Closes #149)
Some checks failed
build / build (push) Failing after 24s
cf575f7a76
The auction now happens only among bidders who can fund the loan. For
each loan in shelf order, the bids are filtered to the ELIGIBLE set —
bank alive AND live cash (after its earlier wins this walk) covering
the amount — and only then is the Vickrey run: the lowest eligible
bid wins, paying the second-lowest ELIGIBLE bid, or its own when it
is the only one.

This fixes both bugs: a cash-short bidder can no longer undercut the
second price (it is not in the set), and the runner-up inherits a
loan the winner cannot fund, because eligibility decides the winner
in the first place. A loan dies unclaimed only when no eligible
bidder exists. The human summary now reports skipped bids ("your
cash was already committed to earlier loans") instead of the old
won-but-unfunded case, which can no longer occur.

Regression tests: runner-up inherits, unfundable bids cannot set the
second price, drained banks drop out of later loans, no-eligible
loans die unclaimed. (Note: TestTinyBenchWritesIterationLog fails on
clean master too — a pre-existing gauntlet panic, filed as #151.)
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Winnie/bankwars!152
No description provided.