Skip to main content

HAAR_JEET wire prices stay provider-native

Status: Accepted; phased rollout. PR1 establishes the backend compatibility boundary. The market book/frontend wire semantics described below become effective only when PR2 lands with all consumers.

HAAR_JEET market books, frontend state, previews, and placement requests carry only the provider-native price, labelled by the market's declared Price Format. Hannibal converts that value to exact decimal Accounting Odds only at the backend financial-math boundary; the client never receives, stores, derives, or echoes the decimal value. This rejects the alternative of carrying both native and decimal fields, which allowed server-derived financial values to round-trip through the client and made inconsistent units structurally possible.

Consequences: PriceSize.price is unit-polymorphic and every consumer must attend on Price Format; market-ID prefixes and numeric bounds cannot infer the unit. Existing Order rows continue to store decimal Accounting Odds, while immutable ProviderPlacementIntent rows retain native price and Price Format as placement evidence for external provider legs. PR1 rejects provider-native mock and pure self-book/PT=0 placement because those paths have no provider intent; the PR2 wire flip is gated on adding an immutable non-intent order-price snapshot. A provider intent must never be fabricated for an order that was not submitted to a provider.