Generated 2026-10-17T05:35:43Z from live ClickHouse queries against this estate's ledger. Point-in-time archive held for Ocean Protocol: 38,852 observations · 49 distinct series · 7 upstream sources · first row 2026-08-09 17:15:20 · newest row 2026-10-17 04:51:55 · every one of the 38,852 rows carries a verify_url · 46 series refreshed in the last 24h (737 fresh rows). Nothing on this page is cached, estimated, or remembered.
7 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. Ocean Protocol does not expose a public first-party stats API, so OCEAN's archive is built from five independent families instead: CoinGecko's market series; direct Ethereum network telemetry via PublicNode JSON-RPC (source deep_stats_eth_rpc: block height, gas price, on-chain supply); on-chain token-contract counters read from the Ethereum explorer of the OCEAN token contract 0x967da4048cd07ab37855c090aaf366e4ce1b9f48 under two collector spellings (evm_blockscout contract counters and deep_stats_eth_blockscout holder/transfer reads); and GitHub dev velocity over the oceanprotocol organization (stars, forks, issues, repos, push recency).
| Source | Rows held | Series | Rows w/ verify_url | Window (UTC) | Sample origin |
|---|---|---|---|---|---|
| CoinGecko /coins/markets | 31,146 | 24 | 31,146 | 2026-08-09 17:15:20 → 2026-10-17 04:51:55 | sample origin ↗ |
| deep_stats_eth_rpc | 3,803 | 3 | 3,803 | 2026-08-25 14:41:01 → 2026-10-17 04:41:01 | sample origin ↗ |
| deep_stats_eth_blockscout | 2,536 | 2 | 2,536 | 2026-08-25 14:41:01 → 2026-10-17 04:41:01 | sample origin ↗ |
| geckoterminal_dex | 630 | 7 | 630 | 2026-09-25 00:54:40 → 2026-10-17 01:05:22 | sample origin ↗ |
| github | 386 | 9 | 386 | 2026-08-09 23:42:07 → 2026-10-17 00:29:02 | sample origin ↗ |
| evm_blockscout | 350 | 6 | 350 | 2026-08-09 23:27:47 → 2026-10-17 00:37:01 | sample origin ↗ |
| dexscreener_tokens | 1 | 1 | 1 | 2026-09-25 13:48:37 → 2026-09-25 13:48:37 | sample origin ↗ |
The ledger query ran during generation and returned 0 rows for OCEAN — and OCEAN's zero is a measured negative: the daily archive this estate holds for OCEAN — 1854 rows over 69 snapshots (2026-08-09 → 2026-10-16) — contains three cumulative-class series the detector watches, every snapshot pair of all three was diffed, and every pair is monotonic. Real counters were watched; none was rewritten. Where a sibling network (AR) shows a BLOCKS restatement (1,988,930 → 1,702,206, on the estate-wide ledger below), OCEAN's watched counters show nothing of the kind. The fee families the detector watches elsewhere (all-time protocol fees) are simply not part of OCEAN's daily archive — absence stated, not filled. Zero here is the live query result plus the measured trails below, not a gap — the ledger itself is at /v1/revisions?symbol=OCEAN (the same query this page ran, served live), and a restatement would appear on this page the day the detector records one. /v1/revisions?symbol=OCEAN cross-check passed: the served API reports 0 row(s), matching the ledger count rendered on this page.
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 (11 declared names, so this page can never drift from the detector) — with what the daily archive holds for OCEAN. Three watched series are held and were fully diffed; none produced a backward pair. That is the structural content of the zero above: watchable counters exist, and they are clean.
Live query result: 0 watchlist series held for OCEAN. The intersection query ran during generation and returned an empty set — none of the 11 cumulative-by-construction metric families the detector watches appear in OCEAN's daily archive. This is the structural zero behind the ledger count above, published as the query found it.
These are the actual counter trails the detector diffed for OCEAN, rendered live from the archive. Each is a series that cannot decrease unless upstream rewrote history — which is exactly what makes their smooth monotonicity the proof behind the zero, and the same trails where a GRT/OVPP/EIGEN-style restatement would appear if it ever happened. All three come from the OCEAN token contract on Ethereum via Blockscout (contract_transactions_total, contract_gas_used_total, token_transfers_total).
contract_transactions_total — lifetime transactions against the OCEAN token contract (Blockscout counters API, the series class that produced real restatements for SOGNI, AUKI and R1 elsewhere in the estate):
| Snapshot date | Contract transactions | Source |
|---|---|---|
| 2026-08-23 | 804,618 | evm_blockscout |
| 2026-08-24 | 806,436 | evm_blockscout |
| 2026-08-25 | 807,447 | evm_blockscout |
| 2026-08-26 | 808,307 | evm_blockscout |
| 2026-08-27 | 809,265 | evm_blockscout |
| 2026-08-28 | 810,509 | evm_blockscout |
| 2026-08-29 | 811,823 | evm_blockscout |
| 2026-08-30 | 812,522 | evm_blockscout |
| 2026-08-31 | 813,749 | evm_blockscout |
| 2026-09-01 | 814,665 | evm_blockscout |
| 2026-09-02 | 816,387 | evm_blockscout |
| 2026-09-03 | 817,319 | evm_blockscout |
| 2026-09-04 | 818,199 | evm_blockscout |
| 2026-09-05 | 819,183 | evm_blockscout |
| 2026-09-06 | 820,444 | evm_blockscout |
| 2026-09-07 | 821,651 | evm_blockscout |
| 2026-09-08 | 822,954 | evm_blockscout |
| 2026-09-09 | 824,166 | evm_blockscout |
| 2026-09-10 | 825,452 | evm_blockscout |
| 2026-09-11 | 827,645 | evm_blockscout |
| 2026-09-12 | 827,894 | evm_blockscout |
| 2026-09-13 | 829,268 | evm_blockscout |
| 2026-09-15 | 830,987 | evm_blockscout |
| 2026-09-16 | 831,816 | evm_blockscout |
| 2026-09-17 | 831,816 | evm_blockscout |
| 2026-09-20 | 801,344 | evm_blockscout |
| 2026-09-21 | 801,344 | evm_blockscout |
| 2026-09-22 | 802,387 | evm_blockscout |
| 2026-09-23 | 804,613 | evm_blockscout |
| 2026-09-24 | 804,817 | evm_blockscout |
| 2026-09-25 | 805,814 | evm_blockscout |
| 2026-09-26 | 806,537 | evm_blockscout |
| 2026-09-27 | 806,537 | evm_blockscout |
| 2026-09-28 | 807,078 | evm_blockscout |
| 2026-09-29 | 808,045 | evm_blockscout |
| 2026-09-30 | 808,045 | evm_blockscout |
| 2026-10-01 | 810,076 | evm_blockscout |
| 2026-10-02 | 810,148 | evm_blockscout |
| 2026-10-03 | 811,385 | evm_blockscout |
| 2026-10-04 | 812,418 | evm_blockscout |
| 2026-10-05 | 812,367 | evm_blockscout |
| 2026-10-06 | 812,418 | evm_blockscout |
| 2026-10-07 | 814,167 | evm_blockscout |
| 2026-10-08 | 814,152 | evm_blockscout |
| 2026-10-09 | 814,169 | evm_blockscout |
| 2026-10-11 | 814,169 | evm_blockscout |
| 2026-10-12 | 814,598 | evm_blockscout |
| 2026-10-13 | 814,598 | evm_blockscout |
| 2026-10-14 | 818,827 | evm_blockscout |
| 2026-10-15 | 818,840 | evm_blockscout |
| 2026-10-16 | 820,721 | evm_blockscout |
contract_gas_used_total — lifetime gas consumed by the OCEAN token contract:
| Snapshot date | Contract gas used | Source |
|---|---|---|
| 2026-08-23 | 49,190,605,750 | evm_blockscout |
| 2026-08-24 | 49,306,396,778 | evm_blockscout |
| 2026-08-25 | 49,370,822,517 | evm_blockscout |
| 2026-08-26 | 49,421,148,627 | evm_blockscout |
| 2026-08-27 | 49,480,628,640 | evm_blockscout |
| 2026-08-28 | 49,554,647,882 | evm_blockscout |
| 2026-08-29 | 49,631,328,936 | evm_blockscout |
| 2026-08-30 | 49,675,843,649 | evm_blockscout |
| 2026-08-31 | 49,752,153,006 | evm_blockscout |
| 2026-09-01 | 49,810,803,453 | evm_blockscout |
| 2026-09-02 | 49,921,275,976 | evm_blockscout |
| 2026-09-03 | 49,980,417,477 | evm_blockscout |
| 2026-09-04 | 50,031,179,272 | evm_blockscout |
| 2026-09-05 | 50,092,172,688 | evm_blockscout |
| 2026-09-06 | 50,170,695,990 | evm_blockscout |
| 2026-09-07 | 50,251,274,796 | evm_blockscout |
| 2026-09-08 | 50,338,425,478 | evm_blockscout |
| 2026-09-09 | 50,413,449,718 | evm_blockscout |
| 2026-09-10 | 50,498,703,964 | evm_blockscout |
| 2026-09-11 | 50,633,877,904 | evm_blockscout |
| 2026-09-12 | 50,649,099,471 | evm_blockscout |
| 2026-09-13 | 50,731,777,689 | evm_blockscout |
| 2026-09-15 | 50,834,405,193 | evm_blockscout |
| 2026-09-16 | 50,888,760,573 | evm_blockscout |
| 2026-09-17 | 50,888,760,573 | evm_blockscout |
| 2026-09-20 | 51,122,346,800 | evm_blockscout |
| 2026-09-21 | 51,122,346,800 | evm_blockscout |
| 2026-09-22 | 51,204,380,648 | evm_blockscout |
| 2026-09-23 | 51,380,130,080 | evm_blockscout |
| 2026-09-24 | 51,396,029,554 | evm_blockscout |
| 2026-09-25 | 51,474,479,568 | evm_blockscout |
| 2026-09-26 | 51,531,379,628 | evm_blockscout |
| 2026-09-27 | 51,531,379,628 | evm_blockscout |
| 2026-09-28 | 51,574,045,900 | evm_blockscout |
| 2026-09-29 | 51,651,184,172 | evm_blockscout |
| 2026-09-30 | 51,651,184,172 | evm_blockscout |
| 2026-10-01 | 51,810,728,701 | evm_blockscout |
| 2026-10-02 | 51,816,278,498 | evm_blockscout |
| 2026-10-03 | 51,912,984,579 | evm_blockscout |
| 2026-10-04 | 51,994,737,692 | evm_blockscout |
| 2026-10-05 | 51,992,454,572 | evm_blockscout |
| 2026-10-06 | 51,996,633,016 | evm_blockscout |
| 2026-10-07 | 52,135,140,935 | evm_blockscout |
| 2026-10-08 | 52,133,989,481 | evm_blockscout |
| 2026-10-09 | 52,136,940,959 | evm_blockscout |
| 2026-10-11 | 52,136,940,959 | evm_blockscout |
| 2026-10-12 | 52,170,673,717 | evm_blockscout |
| 2026-10-13 | 52,170,673,717 | evm_blockscout |
| 2026-10-14 | 52,505,038,313 | evm_blockscout |
| 2026-10-15 | 52,506,078,313 | evm_blockscout |
| 2026-10-16 | 52,654,808,884 | evm_blockscout |
token_transfers_total — lifetime transfers of the OCEAN token:
| Snapshot date | Token transfers | Source |
|---|---|---|
| 2026-08-22 | 1,070,424 | evm_blockscout |
| 2026-08-23 | 1,070,770 | evm_blockscout |
| 2026-08-24 | 1,071,098 | evm_blockscout |
| 2026-08-25 | 1,071,301 | evm_blockscout |
| 2026-08-26 | 1,071,581 | evm_blockscout |
| 2026-08-27 | 1,072,125 | evm_blockscout |
| 2026-08-28 | 1,073,580 | evm_blockscout |
| 2026-08-29 | 1,073,816 | evm_blockscout |
| 2026-08-30 | 1,074,076 | evm_blockscout |
| 2026-08-31 | 1,074,472 | evm_blockscout |
| 2026-09-01 | 1,074,954 | evm_blockscout |
| 2026-09-03 | 1,075,142 | evm_blockscout |
| 2026-09-04 | 1,075,434 | evm_blockscout |
| 2026-09-05 | 1,075,743 | evm_blockscout |
| 2026-09-06 | 1,076,057 | evm_blockscout |
| 2026-09-07 | 1,076,258 | evm_blockscout |
| 2026-09-08 | 1,076,530 | evm_blockscout |
| 2026-09-09 | 1,076,733 | evm_blockscout |
| 2026-09-10 | 1,077,018 | evm_blockscout |
| 2026-09-11 | 1,077,249 | evm_blockscout |
| 2026-09-12 | 1,077,540 | evm_blockscout |
| 2026-09-13 | 1,077,722 | evm_blockscout |
| 2026-09-14 | 1,078,007 | evm_blockscout |
| 2026-09-15 | 1,078,290 | evm_blockscout |
| 2026-09-16 | 1,078,451 | evm_blockscout |
| 2026-09-17 | 1,078,809 | evm_blockscout |
| 2026-09-18 | 1,079,117 | evm_blockscout |
| 2026-09-19 | 1,079,406 | evm_blockscout |
| 2026-09-20 | 1,079,464 | evm_blockscout |
| 2026-09-21 | 1,079,419 | evm_blockscout |
| 2026-09-22 | 1,080,084 | evm_blockscout |
| 2026-09-23 | 1,080,288 | evm_blockscout |
| 2026-09-24 | 1,080,503 | evm_blockscout |
| 2026-09-25 | 1,080,647 | evm_blockscout |
| 2026-09-26 | 1,080,782 | evm_blockscout |
| 2026-09-27 | 1,080,709 | evm_blockscout |
| 2026-09-28 | 1,080,847 | evm_blockscout |
| 2026-09-30 | 1,081,538 | evm_blockscout |
| 2026-10-01 | 1,081,678 | evm_blockscout |
| 2026-10-02 | 1,082,149 | evm_blockscout |
| 2026-10-03 | 1,082,575 | evm_blockscout |
| 2026-10-04 | 1,082,968 | evm_blockscout |
| 2026-10-05 | 1,083,339 | evm_blockscout |
| 2026-10-06 | 1,083,416 | evm_blockscout |
| 2026-10-07 | 1,083,437 | evm_blockscout |
| 2026-10-08 | 1,083,422 | evm_blockscout |
| 2026-10-09 | 1,081,989 | evm_blockscout |
| 2026-10-10 | 1,083,980 | evm_blockscout |
| 2026-10-11 | 1,084,209 | evm_blockscout |
| 2026-10-12 | 1,084,311 | evm_blockscout |
| 2026-10-13 | 1,084,553 | evm_blockscout |
| 2026-10-14 | 1,084,653 | evm_blockscout |
| 2026-10-15 | 1,085,082 | evm_blockscout |
| 2026-10-16 | 1,085,292 | evm_blockscout |
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 population or market change, not upstream rewriting history. Publishing them as "revisions" would be exactly the fake-metric behaviour this product exists to eliminate. OCEAN's worked example: holder populations are tracked under two collector spellings (HOLDERS from the estate's own first-party collector and holders_count from Blockscout) and both oscillate as holders move — plus market cap, rank, price and rolling-window change series revalued at every snapshot.
| Series (gauge / revaluation) | Backward moves observed | Snapshot rows held |
|---|---|---|
HOLDERS | 54 | 69 |
holders_count | 52 | 68 |
fully_diluted_valuation_usd | 29 | 64 |
market_cap_usd | 29 | 64 |
price_change_200d_pct | 29 | 58 |
price_usd | 29 | 64 |
price_from_atl_pct | 28 | 58 |
market_cap_rank | 27 | 58 |
volume_24h_usd | 27 | 58 |
price_high_24h_usd | 25 | 58 |
price_low_24h_usd | 24 | 58 |
price_change_30d_pct | 22 | 58 |
price_change_14d_pct | 20 | 58 |
price_change_24h_pct | 20 | 58 |
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 OCEAN 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 overwritten; 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-10-17 01:15:02 | AR | blocks | 1,986,220 | 1,702,204 | -14.299% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | AR | blocks | 1,988,930 | 1,702,206 | -14.416% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | AR | blocks | 1,980,116 | 1,702,204 | -14.035% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | AR | blocks | 1,982,176 | 1,702,204 | -14.124% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | GRT | dl_fees_alltime_usd | 1,415,054 | 1,414,119 | -0.066% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | GRT | dl_fees_alltime_usd | 1,419,322 | 1,419,152 | -0.012% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | GRT | dl_fees_alltime_usd | 1,419,566 | 1,419,322 | -0.017% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | GRT | dl_fees_alltime_usd | 1,443,521.44 | 1,442,910.44 | -0.042% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | NODE | dl_fees_alltime_usd | 811,126 | 810,992 | -0.017% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | NODE | dl_fees_alltime_usd | 811,347 | 810,962 | -0.047% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | OPEN | dl_fees_alltime_usd | 288,385 | 288,055 | -0.114% | backward_revision | depin_first_party |
| 2026-10-17 01:15:02 | STORJ | disqualified_nodes | 80,238 | 79,569 | -0.834% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | AR | blocks | 1,999,726 | 1,702,218 | -14.877% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | AR | blocks | 1,995,677 | 1,702,218 | -14.705% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | AR | blocks | 2,001,736 | 1,702,218 | -14.963% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | AR | blocks | 1,992,299 | 1,702,218 | -14.560% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | AR | blocks | 2,007,210 | 1,702,218 | -15.195% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | ATH | dl_fees_alltime_usd | 180,402,699.27 | 180,348,562.27 | -0.030% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | AUKI | dl_fees_alltime_usd | 253,682 | 251,527 | -0.849% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | AUKI | dl_fees_alltime_usd | 248,389 | 248,364 | -0.010% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | AUKI | dl_fees_alltime_usd | 249,318 | 249,293 | -0.010% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | GRT | dl_fees_alltime_usd | 1,433,230.44 | 1,433,068.44 | -0.011% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | GRT | dl_fees_alltime_usd | 1,441,313.44 | 1,440,661.44 | -0.045% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | GRT | dl_fees_alltime_usd | 1,431,295.44 | 1,428,351.44 | -0.206% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | GRT | dl_fees_alltime_usd | 1,424,316 | 1,423,345 | -0.068% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | NODE | dl_fees_alltime_usd | 804,574 | 804,388 | -0.023% | backward_revision | depin_first_party |
| 2026-10-16 01:15:02 | OPEN | dl_fees_alltime_usd | 272,079 | 271,588 | -0.180% | backward_revision | depin_first_party |
| 2026-09-05 01:15:02 | AUKI | token_transfers_total | 1,230,167 | 1,228,860 | -0.106% | backward_revision | evm_blockscout · origin ↗ |
| 2026-09-05 01:15:02 | EIGEN | fees_alltime_usd | 161,955,683.53 | 161,932,203.53 | -0.014% | backward_revision | DefiLlama /overview/fees · origin ↗ |
| 2026-09-05 01:15:02 | GRT | fees_alltime_usd | 1,419,328 | 1,419,152 | -0.012% | backward_revision | DefiLlama /overview/fees · origin ↗ |
| 2026-09-05 01:15:02 | GRT | fees_alltime_usd | 1,424,302 | 1,423,345 | -0.067% | backward_revision | DefiLlama /overview/fees · origin ↗ |
| 2026-09-05 01:15:02 | GRT | fees_alltime_usd | 1,419,558 | 1,419,328 | -0.016% | backward_revision | DefiLlama /overview/fees · origin ↗ |
| 2026-09-05 01:15:02 | NODE | fees_alltime_usd | 804,574 | 804,388 | -0.023% | backward_revision | DefiLlama /overview/fees · origin ↗ |
| 2026-09-05 01:15:02 | OBOT | token_transfers_total | 40,253 | 40,246 | -0.017% | backward_revision | evm_blockscout · origin ↗ |
| 2026-09-05 01:15:02 | OVPP | token_transfers_total | 1,356,749 | 1,354,903 | -0.136% | backward_revision | evm_blockscout · origin ↗ |
| 2026-09-05 01:15:02 | R1 | token_transfers_total | 194,390 | 194,337 | -0.027% | backward_revision | evm_blockscout · origin ↗ |
| 2026-09-05 01:15:02 | R1 | token_transfers_total | 194,634 | 194,527 | -0.055% | backward_revision | evm_blockscout · origin ↗ |
| 2026-09-05 01:15:02 | SOGNI | token_transfers_total | 1,177,219 | 1,174,145 | -0.261% | backward_revision | evm_blockscout · 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 overwritten. Population gauges (provider sets, node counts, prices, capacity) legitimately move both ways and are deliberately excluded — a drop there is a real population 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.
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–5 hit the upstream families the network-side rows came from; command 6 is the estate's graded network row; command 7 is the frozen daily snapshot of the ledger. One polite call per endpoint, no hammering.
# 1) The served revision feed for OCEAN — the same rows this page queried, live:
curl -s "https://kairossignal.com/v1/revisions?symbol=OCEAN" | 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 OCEAN token contract (transactions / transfers / gas / holders):
curl -s -H "User-Agent: kairos-check" "https://eth.blockscout.com/api/v2/addresses/0x967da4048cd07ab37855c090aaf366e4ce1b9f48/counters" | python3 -m json.tool
# 4) Blockscout token info for OCEAN (holders / total supply):
curl -s -H "User-Agent: kairos-check" "https://eth.blockscout.com/api/v2/tokens/0x967da4048cd07ab37855c090aaf366e4ce1b9f48" | python3 -m json.tool | head -40
# 5) The github dev-velocity upstream family (oceanprotocol repos):
curl -s -H "User-Agent: kairos-check" "https://api.github.com/repos/oceanprotocol/ocean.py" | python3 -m json.tool | head -30
# 6) This estate's public API row for OCEAN (grades + provenance):
curl -s "https://kairossignal.com/v1/network/OCEAN" | python3 -m json.tool | head -60
# 7) 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_ocean.py and the hourly claim_drift_check.py run grades its claims against the live API like every other published surface. The OCEAN revision count is the live result of SELECT count() FROM default.depin_revision_ledger WHERE network='OCEAN'; the page refuses to ship if the served /v1/revisions?symbol=OCEAN disagrees with it. The 39 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 daily-snapshot ledger for OCEAN is genuinely empty today — because every watched counter the archive holds proved monotonic under the detector's diff, a measured negative published as found, with the full trails rendered above — and this page says so instead of inventing restatements. The same-stamp conflict check is likewise the honest live answer: 0 groups in depin_onchain and 0 in depin_daily. Upstream probes ran serially by this generator immediately before rendering: eth.blockscout.com /api/v2/addresses/<OCEAN token>/counters (the evm_blockscout upstream: transactions_count / token_transfers_count / gas_usage for the OCEAN token contract) HTTP 200; eth.blockscout.com /api/v2/tokens/<OCEAN token> (the evm_blockscout / deep_stats_eth_blockscout token-info upstream: holders / total_supply) HTTP 200; ethereum-rpc.publicnode.com (the deep_stats_eth_rpc upstream: block height, gas price, on-chain supply via JSON-RPC) HTTP 301; CoinGecko OCEAN page (browser-verified origin; 403 here is its bot wall) HTTP 403; api.github.com /repos/oceanprotocol/ocean.py (the github dev-velocity upstream family) HTTP 200; estate /v1/revisions?symbol=OCEAN HTTP 200; estate /v1/network/OCEAN HTTP 200.
propintel/gen_revision_page_ocean.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.