Auction settlement cron: wat er gebeurt wanneer de bel gaat
Hoe de einde-auction-cron de winnaar kiest, de deposit capturet, Core inventory overdraagt en de settlement row in bounded batches schrijft.
De auction timer expires. Het platform wacht niet tot iemand maandagmorgen inlogt om uit te zoeken wat er gebeurde. Een bounded cron-backed RPC draait om de paar minuten en doet de settlement deterministically in kleine, gelockte batches.
De steps
1. Determine the winner: hoogste bid boven reserve. Als reserve niet gehaald wordt, gaat het lot naar de no-sale flow (zie no-sale-relist article).
2. Capture the deposit: de deposit-on-file van de winning bidder wordt toegepast op de H2 escrow die de cron aanmaakt. De escrow opent meteen in held state als de deposit de volledige lot value dekt, of in pending_deposit als de buyer moet top up doen.
3. Transfer the inventory in Core: de onderliggende assets krijgen een status flip van "auction-listed" naar "sold-pending-shipment" en worden gelinkt aan de outbound order van de winner (auto-created).
4. Close the lot: lot.state = closed, end timestamp recorded, audit row written.
5. Write the settlement row: de seller payout, platform fee en side-fees worden berekend door de H6 fees engine en gesnapshot op een settlement row die aan de deal hangt.
6. Notify both parties: realtime + email digest, afhankelijk van preferences.
Wat als de deposit niet genoeg is?
De escrow opent pending_deposit en de buyer heeft 7 days om aan te vullen. Doet hij dat niet, dan vuurt de cancel_stale_pending_deposits cron, de escrow auto-cancelt, een strike wordt geregistreerd tegen de buyer (zie three-strikes article), en het lot wordt unpublished — waarna de F5 auction-no-sale flow het op de market kan relisten.
Waarom een cron, geen webhook
Auctions kunnen honderden bids hebben in hun final seconds. Een webhook-per-bid model is moeilijk atomic te maken; een cron-per-lot is eenvoudiger. De cron draait om de paar minuten, claimt een kleine gelockte batch lots waarvan de end time voorbij is (en die nog niet settled zijn), en draait de deterministic flow. Tegen maandagmorgen staat er een row in de database die exact zegt wat er gebeurde.