What the decision rests on today
An assertion, handed over.
Every one of these is believed because of who supplied it. None of them can be checked by the person who has to act on it.
A screenshot is an assertion with a timestamp you typed. It proves you had a screen.
A scraper's export has one clock and it is yours. Nobody can tell when the source said the number was true.
A market report is someone's summary of what they saw, weeks ago, for everyone at once.
What oddly puts on the record
The same thing, observed.
Two clocks on every row: when the source said it was true, and when we looked. A root a day. An anchor outside us. Nothing here is our word.
The storefronts across their markets, each read on its own cadence, each observation sealed with the one before it.
The changes on the record, each carrying the value before, the value after, both clocks and the receipt. A repeat is not a change and is not counted.
A benchmark cell is computed from the published prices of the stores in it, and every cell reaches the observations it was computed from.
The verbs
Observe. Seal. Publish. Anchor.
The same four on every surface. A product here is the record read for one decision, never a second machine.
Read the source as it is published, and write down both clocks.
Hash the row with its predecessor, so no receipt can move without every later one changing.
Fold the day's receipts into one root and put it where anyone can read it.
Submit the root to a chain we do not run. From then on, checking us does not involve us.
One receipt from this surface, read live
A benchmark cell, computed from published prices, and the observations behind it.
- observation
- [unread]
- subject
- [unread]
- attribute
- [unread]
- value
- [unread]
- source
- [unread]
- observed
- [unread]
- fetched
- [unread]
- receipt
- [unread]
- day root
- [today's root]
- anchored in block
- [pending]
- confirmed
- [pending]
Every slot above is read at load and stays bracketed until a real value fills it. A row reads [unread] when the newest observation on the ledger belongs to another class, and the anchor reads [pending] until a day has been confirmed in a block, because a pending batch has no block height and printing one as anchored would be the worst thing this surface could do.