OrderRejected
The OrderRejected event: what it carries, which side emits it, and whether it ends an order's life.
OrderRejected is one of the 20 variants of the tagged union every part of Vike Trader
speaks: vike_model::Event. The core loop consumes it, the journal replays it, and fixtures pin
it — one vocabulary from a venue's socket to a strategy's callback.
The payload
It carries a OrderRejected. On the wire the frame is tagged OrderRejected, the variant name.
Who emits it
The venue side. Emitted by the venue side — a bridge adapter maps the venue's own message onto this canonical shape and pushes it through the ingest channel. Every venue produces it in its own words; the mapping is that bridge's event_mapper, and the conformance harness folds the result through the real order state machine.
Where it lands
Events reach the core through one ingest channel and are folded in arrival order. This one is terminal: it ends the order's life, and the contract every adapter is held to is exactly-one-terminal — an order may not reach two, and it may not silently reach none. A dead venue path has to synthesize a rejection rather than let the order vanish.
The order lifecycle walks the sequence a working order produces; the execution client seam is the contract every venue adapter implements to produce these; and the journal is what makes a session of them replayable.
Where this comes from
vike_model::Event — the variant, its payload type and its wire tag, exported as rosters.json
at every release. The wire tags are checked against the enum's own source at build time, so a
renamed variant or a changed tag reddens the product tree before it could reach this page.