ADR-0037 — H2H odds strings are not displayable
- Status: Accepted
- Date: 2026-08-27
- Related: ADR-0025 (price format travels with every price), ADR-0033,
docs/architecture/data-plane-integration.md§9
Context
We hold no football ODDS DATA subscription and no basketball ODDS DATA subscription.
All three football odds endpoints and all three basketball odds endpoints correctly return
URL is not authorized to access.
Yet odds-shaped values arrive anyway, embedded inside an entitled BASIC DATA endpoint.
football/match/analysis (H2H) returns, per match tuple, an undecoded block:
["0.97,0.25,0.82,0", "2.1,4.2,2.5,0", "1,4,0.8,0", ""]
handicap over/under 1x2
The provider's own football documentation page does not decode this block. The offsets above are inferred from shape, not proven from a spec.
basketball/match/analysis does the same and is worse: its info array carries what the
basketball lane decoded as BET365 opening lines — "asian handicap: home,line,away,closed",
"moneyline: win,draw,lose,closed", "totals: over,line,under,closed" — and the lane recorded
it as "the only odds data our tier receives", populated on 12 of 12 sampled matches.
Displaying a price we did not buy is our legal exposure, not the provider's. Displaying a price whose tuple layout we inferred is also a correctness risk of exactly the class ADR-0025 exists to prevent: a number on a money surface whose format is not proven.
Decision
No product surface may display, derive from, price against, or serialize to a client any
odds value originating from match/analysis, on any sport, until TheSports confirms in
writing that the data is licensed for our account and documents the tuple layout.
This holds regardless of how the value is framed — a headline price, a "closing line" annotation, a market-movement indicator, an AI-chat answer, a Telegram message, or an internal derived signal that reaches a user.
Permitted use is diagnostic only: readable in logs or an admin debug view, behind a flag that is off by default, and never present in a payload sent to a browser.
The two conditions that would lift this, and both are required:
- Written confirmation from TheSports that H2H-embedded odds are licensed for display on our account, on the sports concerned; and
- a documented tuple layout from the provider, so no offset is inferred.
Odds we are entitled to — cricket odds/live / odds/history and tennis odds/live /
odds/history / odds/update — are not covered by this ADR. They are separately excluded
from product surfaces on coverage grounds for cricket (27% of matches, one book,
moneyline only — ADR-0034), and remain available for tennis.
Consequences
- The football and basketball H2H surfaces ship with head-to-head records, recent form and future fixtures, and without the odds block, which is stripped before the payload leaves the backend rather than filtered in the client.
- The written-confirmation request is on the standing list for the provider and is the one item in that list that carries legal rather than product risk.
- If confirmation arrives, lifting this is a deliberate ADR supersession with the decoded layout attached — not a quiet feature flag.