Jump to a problem, path or page
Jump to a problem, path or page
Updates as you edit. Run the review to record it; passing every check completes the problem.
Not yet passed: Bidder responsibility
Add Bidder and define its responsibility.
Not yet passed: Auction API responsibility
Add Auction API and define its responsibility.
Not yet passed: Auction store responsibility
Add Auction store and define its responsibility.
Not yet passed: Close worker responsibility
Add Close worker and define its responsibility.
Not yet passed: Event outbox responsibility
Add Event outbox and define its responsibility.
Not yet passed: Read projection responsibility
Add Read projection and define its responsibility.
Not yet passed: Bidder → Auction API
A directed path must connect Bidder to Auction API. Arrows represent requests, dependencies, or event flow.
Not yet passed: Auction API → Auction store
A directed path must connect Auction API to Auction store. Arrows represent requests, dependencies, or event flow.
Not yet passed: Close worker → Auction store
A directed path must connect Close worker to Auction store. Arrows represent requests, dependencies, or event flow.
Not yet passed: Auction store → Event outbox
A directed path must connect Auction store to Event outbox. Arrows represent requests, dependencies, or event flow.
Not yet passed: Event outbox → Read projection
A directed path must connect Event outbox to Read projection. Arrows represent requests, dependencies, or event flow.
Not yet passed: Auction API → Read projection
A directed path must connect Auction API to Read projection. Arrows represent requests, dependencies, or event flow.
Not yet passed: Which time determines bid eligibility?
Not yet passed: What if the close worker is late?
Not yet passed: How are tied prices handled here?
Not yet passed: API and data model notes
Write at least 80 characters describing concrete operations, inputs, outputs, state and errors. This check measures completeness, not semantic correctness.
Not yet passed: Trade-offs and failure cases
Write at least 80 characters about alternatives, failure handling and edge cases. Review the reasoning yourself using the reference discussion.
Rule-based educational feedback. Notes are checked by length only; topology checks confirm directed reachability. These checks do not validate semantics, latency, reliability or every valid design.
Give each auction one serialized write authority. Check its deadline and increment policy under the same lock as bid insertion, then finalize exactly one outcome with an outbox event independently of projection or notification delays. Define fixed end time, exact unit bounds, increment, bidder eligibility and the admission-time ordering contract. Route writes to one fenced authority per auction. Scope idempotency by bidder and auction and compare immutable payloads. Check an existing result first; then lock the auction, read authority time and reject after the deadline or when the required increment is not met. Append the accepted bid and update the highest bid atomically. Return the committed sequence so the caller can distinguish acceptance from a delayed read projection. The close worker locks the auction after the deadline, snapshots the committed highest eligible bid and stores CLOSED plus a winner/no-bids event in one transaction. Retries return the same outcome; payment execution is a separate workflow.
There is no single correct diagram. Explain where yours differs and which requirement justifies it.