On a desk built out of a 15-minute above-or-below window, almost everything a reader instinctively reaches for is something we do not have. Each one below is answered with the measurement behind it and the date that measurement was taken, because a refusal without a number ages into folklore and somebody eventually “fixes” it.
“Show me the high and the low inside each window.”
no-intra-window-rangeThere is no high and no low ON THIS DESK, and the reason is a licence WET has not bought rather than a fact about the world. The 15-minute crypto windows settle on a CF Benchmarks real-time index — an order-book-derived value published about once a second, a stream rather than a bar — so an intra-window range would have to be constructed from data no free source permits us to store or display. Every FREE door is closed, and they are closed for different reasons. Several PAID doors are open and the gate below names their prices — but read it before reaching for a card: the ones with published prices license TRADE data, which is a different quantity from the basis these contracts settle on, and the two doors that would actually settle the question publish no fee at all. Until one is signed, what this desk draws is a BODY-ONLY BAR: open is the number to beat, close is the realized settlement value, and the colour is the sign of the difference. Every pixel of that is a published venue number. `components/indices/IndexPriceChart.tsx:16-22` is the standing precedent for why the missing pieces are not simply filled with the pieces we have: "Feeding o=h=l=c to a candle renderer would draw a row of doji, and a doji is a CLAIM." So is a wick.
Measured 2026-09-10: Twenty-five sources surveyed against their own published terms, 2026-09-10. NOTHING is available free: Coinbase forbids redistributing or DISPLAYING the data and separately forbids using it to create "indexes, fixings, or other benchmarks"; Binance.US forbids "public display" of anything obtained through its API; Gemini permits personal and internal use only and requires a Redistribution Agreement; Kraken licenses its content "only for your own benefit"; and CF Benchmarks — the actual settlement basis, and Kraken-owned — requires a licence to use or distribute at all and publishes no fee. Pyth is explicit at the tier level: its free plan grants "No display, non-display, or redistribution rights". Alpaca is the one free keyless crypto-bar endpoint and it fails twice over: its terms allow the data "exclusively for personal and noncommercial access", and the bars are drawn from Alpaca's own venue, which returned n=0 trades on every 1-minute bar sampled — moving OHLC over zero volume. No exchange REST endpoint surveyed serves sub-minute bars either, so a genuinely smooth candle needs websocket aggregation, which is a derived work and a harder licence rather than an easier one.
Retires when
A licence is signed AT THE SETTLEMENT BASIS. That is the real bar and it is stated first, because the cheap licences do not clear it: these contracts settle on the CF Benchmarks order-book mid, so a candle built from any exchange TRADE feed is a different quantity and would sometimes draw a body crossing the threshold on a window the venue settled the other way. Two things clear it — a CF Benchmarks licence, or a written data authorization from Kalshi, whose API already carries the BRTI value feed at 5Hz to entitled accounts. THE KALSHI PATH ALSO NEEDS A DOCTRINE CHANGE and not just a signature: that feed requires API-key signing, which `scripts/doctrine-verify.ts` bans in CI. A lesser bar retires only the DISPLAY question, and five surveyed sources grant that much — not one of them cleanly. CoinAPI publishes the plainest permission — its FAQ answers "Can I use the API to show graphs, charts or tables?" with "Yes, you can use our data to display graphs, charts, or tables", and it markets benchmark creation — from USD 79 a month, but its Customer Agreement licenses the service "for your internal business purposes only" and never once uses the word display, so that right has to be written into the order form before a chart ships on it. Bitstamp grants display AND "the right to create ratios, calculations, new original works, statistics" in published terms, at a quote-only fee. Kaiko sells a named display licence, and Amberdata grants display to a subscriber's own users plus dashboards and rankings — both quote-only, and both now one company. Tiingo is the trap: it publishes a display price (USD 250 startup, USD 500 enterprise) while its section 1.4(h) forbids "publishing or otherwise making available to the public any analysis" and forbids benchmarking, and its section 1.6(c) names CHARTS as a prohibited derived product. Any of those buys a LICENSED TRADE CANDLE, which is a real thing to draw and is not the thing this desk publishes. If one is ever drawn here it will be labelled with its own basis and shown BESIDE the settlement bar rather than instead of it. NONE OF THIS IS A PURCHASING PLAN. A gate names the threshold that would retire a refusal; it is not a statement that WET is buying anything, and a vendor appearing here is a measurement of that vendor's published terms rather than a recommendation.
“What is bitcoin trading at right now?”
no-live-underlying-priceThis desk adds no spot feed and never claims to be one. Every number on it is a published fact about a CONTRACT rather than about the asset: a term of the contract, a settled venue outcome, or the venue's own quote for the claim. That third one is the exception worth naming, because this entry used to deny it: the card headed "the window running now" prints the mid of the venue's bid and ask as a percentage, labelled a market-derived probability (WET-LOGIC §19). It is a price for the QUESTION, not a price for bitcoin, and it is not this desk's forecast. The nearest thing to "now" here is the OPEN window's threshold, read from the venue and printed under "To beat". That is a term of the contract that is running: fixed for the whole window, and NOT the asset's price — the asset moves continuously against it and this desk shows none of that movement. Rendering the threshold as a live price would be the same defect as a wick, one field further along. (Until 2026-09-10 this slot held the newest SETTLED window's threshold, up to fifteen minutes old. It now reads the open window directly and expires the number at the venue's own close instant.) `lib/scanners/refusals.ts` already publishes this refusal as `crypto-spot` for the alert builder. That entry remains true and is NOT superseded by anything on this desk.
Structural — nothing on a roadmap retires this.
“It has been yes four windows in a row — is the next one likely yes?”
run-not-predictiveNo, and this desk measured that rather than asserting it. The resolution history is honest AS HISTORY — those windows really did settle that way — and it carries no predictive information about the next one. The conditional rate after a yes is 1.2 points LOWER than the rate after a no, which is the opposite direction from the one a continuation story needs, and the mean run is very slightly SHORTER than a fair coin's. Those figures ship on the surface beside the run itself, with their n, which is why the run is shown at all: hiding it would be hiding a real record, and showing it without the measurement would be publishing a suggestion. This desk prints no direction, ranks nothing, and recommends nothing.
Measured 2026-09-09: 1,000 consecutive settled KXBTC15M windows (251.75 hours): P(yes | previous yes) 0.4804 against P(yes | previous no) 0.4922; mean run 1.98 against a fair coin's exactly 2.00; run histogram {1:245, 2:140, 3:57, 4:36, 5:14, 6:10, 7:2, 8:2}, longest run 8.
Structural — nothing on a roadmap retires this.
“Show me a year of these windows.”
history-depth-wallIt does not exist to fetch. The venue's archive of settled 15-minute windows is walled at roughly 60 days, and past the wall the API does not error — it returns HTTP 200 with an empty page, which is the failure mode a loader silently renders as "quiet market". Depth beyond the wall can only accrue from the day WET starts persisting windows, one day at a time, and until then an empty store publishes THIS SENTENCE rather than a blank chart or a "no history" label.
Measured 2026-09-09: max_close_ts 60 days back returns a full page; at 90 and at 150 days the same request returns 200 with ZERO rows. One request at limit=1000 covers 251.75 hours (10.5 days); limit=100 covers 24.75 hours, so an hourly capture has about 24x slack.
Retires when
the stored window history reaches the depth the question asks for. Two milestones, and only the second one answers "show me a year": at roughly 60 days from first capture the store is deeper than the venue itself, which is when this desk stops being limited by the archive; a year takes a year. Stated as two because retiring the refusal at the first milestone would answer a question nobody asked. This one retires by the calendar rather than by a build — one day per day, with nothing to build and nothing to buy.
“Is the tape unbroken?”
tape-not-gap-freeNo, and the breaks are drawn as breaks. Windows go missing at the venue, and a renderer that joined the rows either side of a hole would draw price action across a span nobody observed — the same fabrication as a wick, in a different direction. A missing window therefore emits an explicit null and the line breaks. `lib/indices/intraday.ts:30-36` is the estate's standing rule for this: renderers break the line, they do not bridge it. The statistics obey the same rule — a pair of outcomes either side of a hole is not a consecutive observation and is excluded from every conditional rate.
Measured 2026-09-09: a real 135-minute hole — eight missing consecutive windows — exists in a single 10.5-day span of the measured KXBTC15M sample.
Structural — nothing on a roadmap retires this.
“Add silver.”
silver-absentThe venue does not list it. `GET /series/KXSILVER` returns 404 — there is no silver series to read, at any cadence. The only silver exposure in the catalog is an annual gold-to-silver ratio market, and `annual` is not one of the cadences this desk reads (`cadence.ts`): a once-a-year threshold is not a short-dated window and one resolution is not a tape.
Measured 2026-09-09: GET /series/KXSILVER -> 404; the sole silver-bearing market in the catalog is an annual ratio market.
Retires when
Kalshi PRODUCES EVENTS on a silver series at one of the cadences this desk reads — fifteen-minute, hourly, daily or weekly — settling on a named continuous index. Events, not a listing, and the distinction is this register's own: `unnamed-settlement-source` below refuses two series that ARE listed and have produced zero events ever, calling them "catalog records rather than markets". A gate satisfied by a catalog record would retire on exactly the state another entry disqualifies. An annual gold-to-silver ratio market does not clear the bar however long it runs either: one resolution a year is not a tape, and this desk would have nothing to draw.
“Then add gold — Kalshi has gold.”
gold-dormantTwo independent reasons, and the second one outlives a fix to the first. (1) The series is dormant: zero open events, and the newest settled event is from October 2022. (2) Gold settles on the LBMA London auction fix, which prints TWICE A DAY — so at the two cadences this desk actually lists, fifteen-minute and hourly, there is no instant to be above or below and no tape to draw. SCOPED TO THOSE TWO CADENCES ON PURPOSE: `cadence.ts` also names daily and weekly, and a twice-daily fix genuinely could settle a daily window — so the broader version of this sentence, the one that would rule out a twice-daily basis at every cadence, is a categorical claim this desk's own vocabulary contradicts and is deliberately not written here in any form. What is true is narrower and still decisive for what exists today: nothing at any cadence is listed, and reviving the series at a sub-daily one is arithmetically impossible against a twice-daily basis. This is a settlement-basis refusal wearing an inventory refusal's clothes.
Measured 2026-09-09: Kalshi gold: 0 open events, newest settled event October 2022, settlement source the LBMA twice-daily London auction fix.
Retires when
Kalshi PRODUCES EVENTS on a gold series whose settlement basis and cadence are compatible — a continuous published index at any cadence, or the existing twice-daily auction fix at the daily or weekly cadence, where a fix genuinely can settle a window. Events rather than a listing, for the reason `silver-absent` gives. Reviving the dormant series AT A SUB-DAILY CADENCE is not enough and is deliberately not the bar: no amount of activity makes a twice-daily basis settle a fifteen-minute window.
“There are 15-minute S&P 500 and oil series in the catalog — list those.”
unnamed-settlement-sourceBoth are catalog records rather than markets, and both would fail the settlement test even if they were not. KXINX15M (S&P 500) and WTIH (WTI oil) have produced zero events, ever — the shape `cadence.ts` warns about, where a series returns a valid 200 and an empty array that a lazy loader ships as a permanently blank tile. And each declares its settlement source as the literal string "For example, Google Finance". An example is not a methodology. A window tape needs a named, published, auditable settling authority, which is the whole reason the crypto series qualify and these do not.
Measured 2026-09-09: KXINX15M and WTIH: 0 open events and 0 settled events ever; settlement source declared as the literal string "For example, Google Finance".
Structural — nothing on a roadmap retires this.