Generated 2026-09-02T20:11:30Z from live ClickHouse queries against this estate's ledger. Point-in-time archive held for DIMO: 7,840 observations · 42 distinct series · 4 upstream sources · first row 2026-08-09 17:15:20 · newest row 2026-09-02 19:49:20 · every one of the 7,840 rows carries a verify_url · 37 series refreshed in the last 24h (708 fresh rows). Nothing on this page is cached, estimated, or remembered.
4 source families feed this network's ledger. Every row they wrote carries its own source, as_of and verify_url; this table is the live rollup of that. DIMO (the catalog name here is DIMO, category mobility, chains ethereum, iotex and polygon-pos) publishes its own identity GraphQL API and this estate polls it directly (first_party_api — the aftermarket-device and vehicle counts); the rest of the network-side series come from this estate's own daily first-party rollup (depin_first_party), Ethereum Blockscout chain reads against the DIMO token contract (evm_blockscout), and the estate's github collector (DIMO-Network/data-sdk repository activity), with CoinGecko's market series alongside.
| Source | Rows held | Series | Rows w/ verify_url | Window (UTC) | Sample origin |
|---|---|---|---|---|---|
| CoinGecko /coins/markets | 7,050 | 24 | 7,050 | 2026-08-09 17:15:20 → 2026-09-02 19:49:20 | sample origin ↗ |
| first_party_api | 574 | 6 | 574 | 2026-08-09 23:53:15 → 2026-09-02 19:34:01 | sample origin ↗ |
| github | 120 | 6 | 120 | 2026-08-09 23:47:26 → 2026-09-02 18:29:01 | sample origin ↗ |
| evm_blockscout | 96 | 6 | 96 | 2026-08-09 23:27:47 → 2026-09-02 12:37:02 | sample origin ↗ |
The ledger query ran during generation and returned 0 rows for DIMO. Zero here is the live query result, not a gap — the ledger itself is at /v1/revisions?symbol=DIMO (the same query this page ran, served live), and a restatement would appear on this page the day the detector records one. /v1/revisions cross-check: the estate API's free-tier daily quota answered HTTP 429 at generation time (resets 00:00 UTC); the ledger count on this page is the live ClickHouse result, and the served endpoint was probed and found quota-gated, not missing.
Why zero is the interesting answer. The detector does not skip DIMO — below, the live intersection shows the 3 cumulative-by-construction series the archive holds for this network, each fully diffed across its whole snapshot window (where it has more than one observation), and each rendered here end to end so the monotone runs are visible raw. Nothing moved backward. That is the structural zero: the detector was watching, the counters were fully exposed to it, and upstream did not rewrite history for this network in the window this estate holds. Publishing an empty ledger as a live query result — instead of padding it with gauge noise — is the same retention discipline the ledger exists to sell.
The detector diffs every daily snapshot of every cumulative-by-construction series. Below is the live intersection of the estate detector's cumulative watchlist — imported directly from propintel/revision_ledger.py (75 declared names, so this page can never drift from the detector) — with what the daily archive holds for DIMO. All three watched series here are Blockscout contract counters for the DIMO token address on Ethereum mainnet.
| Watchlist series held | Rows | Days | Source |
|---|---|---|---|
contract_gas_used_total | 10 | 10 | evm_blockscout |
contract_transactions_total | 10 | 10 | evm_blockscout |
token_transfers_total | 11 | 11 | evm_blockscout |
These are the actual counter trails the detector diffed for DIMO, rendered live from the archive. Each is a series that cannot decrease unless upstream rewrote history — and each is monotonic across its entire held window, which is exactly why the ledger above is empty. The raw runs are the evidence; the reader does not have to trust the summary.
contract_gas_used_total — total gas used by calls to the DIMO token contract, captured by the estate's Blockscout collector across all 10 snapshot days:
| Snapshot date | Contract gas used (total) | Source |
|---|---|---|
| 2026-08-23 | 1,216,788,055 | evm_blockscout |
| 2026-08-24 | 1,217,474,611 | evm_blockscout |
| 2026-08-25 | 1,217,734,074 | evm_blockscout |
| 2026-08-26 | 1,218,349,486 | evm_blockscout |
| 2026-08-27 | 1,218,545,846 | evm_blockscout |
| 2026-08-28 | 1,219,048,421 | evm_blockscout |
| 2026-08-29 | 1,220,042,241 | evm_blockscout |
| 2026-08-30 | 1,220,187,798 | evm_blockscout |
| 2026-08-31 | 1,220,620,135 | evm_blockscout |
| 2026-09-01 | 1,220,962,465 | evm_blockscout |
contract_transactions_total — the count of transactions against the DIMO token contract, same Blockscout origin — 10 snapshot days:
| Snapshot date | Contract transactions (total) | Source |
|---|---|---|
| 2026-08-23 | 24,088 | evm_blockscout |
| 2026-08-24 | 24,102 | evm_blockscout |
| 2026-08-25 | 24,107 | evm_blockscout |
| 2026-08-26 | 24,119 | evm_blockscout |
| 2026-08-27 | 24,123 | evm_blockscout |
| 2026-08-28 | 24,133 | evm_blockscout |
| 2026-08-29 | 24,153 | evm_blockscout |
| 2026-08-30 | 24,156 | evm_blockscout |
| 2026-08-31 | 24,164 | evm_blockscout |
| 2026-09-01 | 24,171 | evm_blockscout |
token_transfers_total — the token transfer counter for the DIMO contract — 11 snapshot days:
| Snapshot date | Token transfers (total) | Source |
|---|---|---|
| 2026-08-22 | 67,765 | evm_blockscout |
| 2026-08-23 | 67,797 | evm_blockscout |
| 2026-08-24 | 67,810 | evm_blockscout |
| 2026-08-25 | 67,831 | evm_blockscout |
| 2026-08-26 | 67,896 | evm_blockscout |
| 2026-08-27 | 67,926 | evm_blockscout |
| 2026-08-28 | 67,958 | evm_blockscout |
| 2026-08-29 | 67,978 | evm_blockscout |
| 2026-08-30 | 68,017 | evm_blockscout |
| 2026-08-31 | 68,047 | evm_blockscout |
| 2026-09-01 | 68,085 | evm_blockscout |
DIMO's holder count is captured from two independent directions: this estate's first-party daily rollup (HOLDERS, sourced from the network's own identity API) and the Blockscout chain read (holders_count, counted on Ethereum from the token contract). On the 23 snapshot days both hold a value, they are checked live. These are population gauges — holders come and go — so agreement means exact equality or a delta within 0.2% (same-day asynchrony: the two collectors snapshot at different hours and the fleet drifts between them). Every delta is shown, nothing hidden: 23 agreeing days, 0 divergent.
| Snapshot date | First-party value | Blockscout value | Δ | Verdict |
|---|---|---|---|---|
| 2026-08-09 | 8,537 | 8,537 | 0 | agree |
| 2026-08-10 | 8,542 | 8,541 | 1 | agree |
| 2026-08-12 | 8,546 | 8,541 | 5 | agree |
| 2026-08-13 | 8,546 | 8,545 | 1 | agree |
| 2026-08-14 | 8,547 | 8,546 | 1 | agree |
| 2026-08-15 | 8,549 | 8,549 | 0 | agree |
| 2026-08-16 | 8,548 | 8,549 | 1 | agree |
| 2026-08-17 | 8,549 | 8,546 | 3 | agree |
| 2026-08-18 | 8,550 | 8,550 | 0 | agree |
| 2026-08-19 | 8,549 | 8,550 | 1 | agree |
| 2026-08-20 | 8,551 | 8,550 | 1 | agree |
| 2026-08-21 | 8,556 | 8,552 | 4 | agree |
| 2026-08-22 | 8,560 | 8,558 | 2 | agree |
| 2026-08-23 | 8,565 | 8,564 | 1 | agree |
| 2026-08-24 | 8,566 | 8,566 | 0 | agree |
| 2026-08-25 | 8,564 | 8,564 | 0 | agree |
| 2026-08-26 | 8,570 | 8,570 | 0 | agree |
| 2026-08-27 | 8,570 | 8,570 | 0 | agree |
| 2026-08-28 | 8,570 | 8,571 | 1 | agree |
| 2026-08-29 | 8,571 | 8,571 | 0 | agree |
| 2026-08-30 | 8,577 | 8,577 | 0 | agree |
| 2026-08-31 | 8,578 | 8,578 | 0 | agree |
| 2026-09-01 | 8,584 | 8,584 | 0 | agree |
These series fall outside the detector's cumulative-by-construction class (NOT_TRULY_CUMULATIVE and plain gauges in propintel/revision_ledger.py): a drop there is a real fleet or market change, not upstream rewriting history. For DIMO the vehicle and device populations themselves are in this table — VEHICLES fell 158,616 → 158,613 across the 2026-08-27 → 2026-08-28 snapshots, and SYNTHETIC_DEVICES oscillates around its trend — a vehicle can be de-registered or a synthetic device purged on a given day; that is fleet churn, not a rewrite. Publishing them as "revisions" would be exactly the fake-metric behaviour this product exists to eliminate.
| Series (gauge / population) | Backward moves observed | Snapshot rows held |
|---|---|---|
PRICE | 15 | 27 |
VELOCITY | 15 | 27 |
fully_diluted_valuation_usd | 9 | 17 |
market_cap_usd | 9 | 17 |
price_usd | 9 | 17 |
top_holder_balance | 7 | 10 |
price_change_7d_pct | 6 | 11 |
price_high_24h_usd | 6 | 11 |
SYNTHETIC_DEVICES | 5 | 24 |
market_cap_rank | 5 | 11 |
price_change_30d_pct | 5 | 11 |
price_from_atl_pct | 5 | 11 |
volume_24h_usd | 5 | 11 |
HOLDERS | 4 | 24 |
The task-level conflict check, run live: any (metric, timestamp) family where this estate recorded two or more different values. The query ran at generation and returned 0 groups in both depin_onchain and depin_daily — every (metric, timestamp) pair the estate holds for DIMO carries exactly one value. Zero here is the live query result, not a gap; the archive kept every write it made, and none of them disagree.
Deduped on revision identity exactly as /v1/revisions dedupes it. This is the same feed a subscriber polls; it is rendered live from ClickHouse at generation, not copied from a snapshot. Each row is an upstream source replacing the value of a (network, metric, date) it had already published — after this estate recorded the original. The superseded value is retained, never deleted; that retention is the only reason a rewrite is detectable, and it is the part every overwriting vendor discards.
| First detected | Network | Metric | Was | Became | Δ | Kind | Provenance |
|---|---|---|---|---|---|---|---|
| 2026-09-02 01:15:01 | GRT | dl_fees_alltime_usd | 1,424,316 | 1,423,345 | -0.068% | backward_revision | depin_first_party · origin ↗ |
| 2026-09-02 01:15:01 | GRT | fees_alltime_usd | 1,424,302 | 1,423,345 | -0.067% | backward_revision | DefiLlama /overview/fees · origin ↗ |
| 2026-09-02 01:15:01 | OVPP | token_transfers_total | 1,356,749 | 1,354,903 | -0.136% | backward_revision | evm_blockscout · origin ↗ |
| 2026-09-01 23:34:07 | AR | blocks | 1,986,220 | 1,702,204 | -14.299% | backward_revision | depin_first_party · origin ↗ |
| 2026-09-01 23:34:07 | AR | blocks | 1,980,116 | 1,702,204 | -14.035% | backward_revision | depin_first_party · origin ↗ |
| 2026-09-01 23:34:07 | AR | blocks | 1,988,930 | 1,702,206 | -14.416% | backward_revision | depin_first_party · origin ↗ |
| 2026-09-01 23:34:07 | AR | blocks | 1,982,176 | 1,702,204 | -14.124% | backward_revision | depin_first_party · origin ↗ |
| 2026-09-01 23:34:07 | AUKI | token_transfers_total | 1,230,167 | 1,228,860 | -0.106% | backward_revision | evm_blockscout · origin ↗ |
| 2026-09-01 23:34:07 | EIGEN | fees_alltime_usd | 161,955,683.53 | 161,932,203.53 | -0.014% | backward_revision | DefiLlama /overview/fees · origin ↗ |
| 2026-09-01 23:34:07 | GRT | fees_alltime_usd | 1,419,328 | 1,419,152 | -0.012% | backward_revision | DefiLlama /overview/fees · origin ↗ |
| 2026-09-01 23:34:07 | GRT | fees_alltime_usd | 1,419,558 | 1,419,328 | -0.016% | backward_revision | DefiLlama /overview/fees · origin ↗ |
| 2026-09-01 23:34:07 | R1 | token_transfers_total | 194,390 | 194,337 | -0.027% | backward_revision | evm_blockscout · origin ↗ |
| 2026-09-01 23:34:07 | SOGNI | token_transfers_total | 1,177,219 | 1,174,145 | -0.261% | backward_revision | evm_blockscout · origin ↗ |
| 2026-09-01 23:33:32 | GRT | dl_fees_alltime_usd | 1,419,322 | 1,419,152 | -0.012% | backward_revision | depin_first_party · origin ↗ |
| 2026-09-01 23:33:32 | GRT | dl_fees_alltime_usd | 1,415,054 | 1,414,119 | -0.066% | backward_revision | depin_first_party · origin ↗ |
| 2026-09-01 23:33:32 | GRT | dl_fees_alltime_usd | 1,419,566 | 1,419,322 | -0.017% | backward_revision | depin_first_party · origin ↗ |
| 2026-09-01 23:33:32 | STORJ | disqualified_nodes | 80,238 | 79,569 | -0.834% | backward_revision | depin_first_party · origin ↗ |
| 2026-08-13 15:35:15 | FLOCK | dl_fees_alltime_usd | 1,170,614.6 | 1,170,544.16 | -0.006% | sub_noise | defillama_fees · origin ↗ |
The detector (propintel/revision_ledger.py) diffs every daily snapshot this estate holds of every cumulative-by-construction series — counters that cannot decrease unless upstream rewrote them (block heights, transaction and transfer counters, lifetime fees). A row enters default.depin_revision_ledger iff two snapshots disagree for an already-observed date; zero human judgement. Resolution rule: latest observation wins for current-state reads, the superseded value is retained, never deleted. Population gauges (provider sets, node counts, prices, capacity, rolling windows) legitimately move both ways and are deliberately excluded — a drop there is a real change, not a rewrite; the gauge table on this page is the worked example. Honest boundary: this catches value-history rewrites ex-post; identical-schema semantic drift with plausible values is what the hash-pinned derivation_replay layer is for. The detector's full classification is inspectable at /v1/revisions and frozen daily at /revision-ledger/REVISIONS_20260902.json.
DIMO's slice of depin_daily: 589 rows over 27 snapshot days (2026-08-06 → 2026-09-01), from 5 source families. Each snapshot is a same-day capture of every series the collectors touched; the detector diffs consecutive snapshots of cumulative series across this window. This is the substrate the zero above is measured over — not an assumption, a measured archive.
No account, no key, no trust required. Commands 1–2 hit this estate's public API (the same rows this page queried — every row carries source / as_of / verify_url); commands 3–4 hit the Blockscout upstream family the watched counter rows came from; command 5 is DIMO's own identity API; command 6 is the GitHub repository feed; command 7 is the CoinGecko origin page; command 8 is the estate's graded network row; command 9 is the frozen daily snapshot of the ledger. One polite call per endpoint, no hammering.
# 1) The served revision feed for DIMO — the same rows this page queried, live:
curl -s "https://kairossignal.com/v1/revisions?symbol=DIMO" | python3 -m json.tool
# 2) The estate-wide feed (every network, both sides of every diff):
curl -s "https://kairossignal.com/v1/revisions" | python3 -m json.tool | head -80
# 3) Blockscout counters for the DIMO token contract (the watched-counter origin):
curl -s -H "User-Agent: kairos-check" "https://eth.blockscout.com/api/v2/addresses/0x5fab9761d60419c9eeebe3915a8fa1ed7e8d2e1b/counters" | python3 -m json.tool | head -30
# 4) Blockscout token endpoint (the holders/supply origin):
curl -s -H "User-Agent: kairos-check" "https://eth.blockscout.com/api/v2/tokens/0x5fab9761d60419c9eeebe3915a8fa1ed7e8d2e1b" | python3 -m json.tool | head -30
# 5) DIMO's own identity API (the first_party_api origin):
curl -s -H "User-Agent: kairos-check" "https://identity-api.dimo.zone/query?query=%7BaftermarketDevices%28first%3A1%29%7BtotalCount%7D%7D" | python3 -m json.tool | head -20
# 6) GitHub repository activity for DIMO-Network/data-sdk (the dev-velocity source family):
curl -s -H "User-Agent: kairos-check" "https://api.github.com/repos/DIMO-Network/data-sdk" | python3 -m json.tool | head -20
# 7) CoinGecko DIMO page (the market-series origin; browser-verified, bot-walled to curl):
curl -s -o /dev/null -w "%{http_code}\n" "https://www.coingecko.com/en/coins/dimo"
# 8) This estate's public API row for DIMO (grades + provenance):
curl -s "https://kairossignal.com/v1/network/DIMO" | python3 -m json.tool | head -60
# 9) The public daily snapshot of the ledger (frozen copy):
curl -s -o /dev/null -w "%{http_code}\n" "https://kairossignal.com/revision-ledger/REVISIONS_20260902.json"
Method & honesty notes. All counts are queries against the live ledger at generation time, not restamped copy — this page is regenerated by gen_revision_page_dimo.py and the hourly claim_drift_check.py run grades its claims against the live API like every other published surface. The DIMO revision count is the live result of SELECT count() FROM default.depin_revision_ledger WHERE network='DIMO'; the page refuses to ship if the served /v1/revisions?symbol=DIMO is reachable and disagrees with it (at generation the estate API was answering its free-tier daily-quota 429, so the cross-check ran against ClickHouse as the authority and the endpoint was verified quota-gated, not missing). The 18 estate-wide events shown are deduped on revision identity (deterministic hash of network, metric, current_date, prior_date) exactly as the API dedupes them; detected_at is the first detection and never moves. Series absent from a section are absent, not zero. The same-stamp conflict check is the honest live answer: 0 groups in depin_onchain and 0 in depin_daily. Upstream probes ran serially by this generator immediately before rendering: CoinGecko DIMO page (browser-verified origin; 403 here is its bot wall) HTTP 403; Blockscout token endpoint for the DIMO contract (the evm_blockscout origin) HTTP 200; Blockscout address counters for the DIMO contract (the counter-trail origin) HTTP 200; GitHub API for DIMO-Network/data-sdk (the dev-activity source family) HTTP 200; DIMO identity API (the first_party_api origin) HTTP 200; estate /v1/revisions?symbol=DIMO HTTP 429; estate /v1/network/DIMO HTTP 429.
propintel/gen_revision_page_dimo.py · source of truth: default.depin_catalog, default.depin_onchain, default.depin_daily, default.depin_revision_ledger (ClickHouse, live at generation) · Kairos Signal — provenance or silence.