OrderDenied
The OrderDenied event: what it carries, which side emits it, and whether it ends an order's life.
OrderDenied 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 OrderDenied. On the wire the frame is tagged OrderDenied, the variant name.
Who emits it
Rust, before the wire. The risk gate refused the order, so nothing was sent. A denial is terminal and local: no venue ever saw it.
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.