Vote for your favorite SkillMD. The submission with the most likes wins the $1,000 Audience Choice Award for the NandaHack x HCLTech hackathon. Voting is open through September 25.Vote now →
mergedhumanPR #245Coordination

fix: bind Lab auction settlement to its task and payee

Current Lab auction settlement checks the payer and amount but not the payee or task. A real local run with the ledger transfer redirected to a losing bidder still reports passed, even though the auctioneer receives zero.

Author

JamesCarnley avatar

@JamesCarnley

github profile →
Status
Merged
Merged on
Sep 4
Branch
fix/lab-auction-settlement-evidence

Description

The pitch.

## Summary

Current Lab auction settlement checks the payer and amount but not the payee or task. A real local run with the ledger transfer redirected to a losing bidder still reports `passed`, even though the auctioneer receives zero.

This change binds the single-auction settlement evidence to the configured auctioneer/item, recorded task announcement and award, winner, integer amount, run and causal order. Duplicate/ambiguous records and known contradictions fail. Missing records remain `not_enough_evidence`; missing evidence cannot hide a known wrong payee.

## Source and scope

Retains the correct-recipient distinction raised by #136, by @KaranSinghBisht: conservation alone does not prove that the intended parties received the intended allocation. This is a selected-scope adaptation to the existing bilateral auction, not a port of the weighted fan-out implementation.

The weighted allocator/property corpus, independent payee-observed balances and broader split/refund workflow remain future profile candidates. These are correlated Lab records, not external settlement verification. No payment runtime, provider, default authority policy, amount-validation runtime, wire schema or new dependency changes. The separate award stage still evaluates the bidding result; this patch binds payment to the recorded award.

## Verification

- Clean baseline: 342 tests passed.
- Initial regression pass: 30 expected failures.
- Final focused auction/coverage checks: 60 passed.
- Full final suite: 385 passed, 8 existing warnings.
- Real healthy auction: passed; real wrong-recipient transfer: settlement failed while ledger conservation remained passed.
- Six in-memory omitted-check mutations were rejected by their corresponding regressions.
- Genuine pre-change bundle reports `lab-0.2.4` versus `lab-0.2.5` and explicitly declines replay equivalence.
- New healthy auction bundles verify and replay.

Review was local self-review. No contributor code or external payment service was executed. Source #136 will be closed only after this selected correction merges, with the unported scope recorded.

Try it

Open PR on GitHubView diff

Checkout locally

git fetch origin pull/245/head:pr-245
git checkout pr-245