Generated 2026-09-02T18:48:57Z from live ClickHouse queries against this estate's ledger. Point-in-time archive held for WeatherXM: 10,001 observations · 49 distinct series · 4 upstream sources · first row 2026-08-09 17:15:20 · newest row 2026-09-02 18:47:01 · 10,001 of 10,001 rows carry a verify_url · 36 series refreshed in the last 24h (822 fresh rows). Nothing on this page is cached, estimated, or remembered.
Queried live at generation time: default.depin_revision_ledger holds zero rows for WXM (raw detector output for this network: 0 rows). /v1/revisions?symbol=WXM cross-check passed: the served API reports 0 row(s), matching the deduped ledger count rendered on this page.
POST /v1/alerts/subscribe with symbol=WXM and event=revision_restate. Proof query you can run yourself: curl -s "https://kairossignal.com/v1/revisions?symbol=WXM"The detector only judges series that are cumulative by construction: a counter that cannot legitimately decrease. A gauge (active stations, price, market cap, velocity, quality scores) legitimately falls when stations churn or the market moves — that is not a revision and is never recorded as one. For every daily-snapshot series we hold for WXM (66 metrics, 1,053 rows, 27 snapshot dates), this is its measured state across the full archive, queried live at generation. The 4 detector-graded counter series show 0 backward moves in total — that is the measured content of the zero above. The 62 gauge-class series move both ways by nature and are excluded from the detector by design.
| Metric | Snapshots | First | Latest | Max value | Monotonicity | Class | Provenance |
|---|---|---|---|---|---|---|---|
base_rewards | 24 | 2026-08-09 | 2026-09-01 | 9,970,712 | monotonic | gauge — excluded by design | |
boost_rewards | 24 | 2026-08-09 | 2026-09-01 | 3,109,345 | monotonic | gauge — excluded by design | |
customers | 27 | 2026-08-06 | 2026-09-01 | 19,883 | monotonic | gauge — excluded by design | |
customers_total | 24 | 2026-08-09 | 2026-09-01 | 19,882 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
customers_with_wallet | 27 | 2026-08-06 | 2026-09-01 | 5,535 | 14 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
growth_last_30d | 27 | 2026-08-06 | 2026-09-01 | 32 | 3 backward move(s) | gauge — excluded by design | |
high_quality_stations | 27 | 2026-08-06 | 2026-09-01 | 4,477 | 15 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
network_avg_qod | 27 | 2026-08-06 | 2026-09-01 | 87 | 4 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
network_scale_up | 27 | 2026-08-06 | 2026-09-01 | 1 | monotonic | gauge — excluded by design | |
network_size | 27 | 2026-08-06 | 2026-09-01 | 9,822 | 2 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
network_uptime | 27 | 2026-08-06 | 2026-09-01 | 61 | 1 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
price | 27 | 2026-08-06 | 2026-09-01 | 0.0089397 | 13 backward move(s) | gauge — excluded by design | |
rewards_last_30d | 27 | 2026-08-06 | 2026-09-01 | 226,285 | 9 backward move(s) | gauge — excluded by design | |
rewards_last_run | 27 | 2026-08-06 | 2026-09-01 | 7,845 | 13 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
rewards_total | 27 | 2026-08-06 | 2026-09-01 | 13,080,058 | monotonic | detector-graded counter | first_party_api · origin ↗ |
stations_claimed | 24 | 2026-08-09 | 2026-09-01 | 9,820 | 3 backward move(s) | gauge — excluded by design | |
stations_onboarded | 24 | 2026-08-09 | 2026-09-01 | 23,757 | monotonic | detector-graded counter | |
station_claim_rate_pct | 13 | 2026-08-20 | 2026-09-01 | 41.3352 | 1 backward move(s) | gauge — excluded by design | weatherxm_network_stats · origin ↗ |
station_liveness_pct | 13 | 2026-08-20 | 2026-09-01 | 60.8682 | 9 backward move(s) | gauge — excluded by design | weatherxm_network_stats · origin ↗ |
tokens_allocated_total | 24 | 2026-08-09 | 2026-09-01 | 13,051,580 | monotonic | detector-graded counter | |
tokens_claimed | 24 | 2026-08-09 | 2026-09-01 | 7,746,793 | monotonic | detector-graded counter | |
tokens_unclaimed | 24 | 2026-08-09 | 2026-09-01 | 5,304,787 | 1 backward move(s) | gauge — excluded by design | |
token_circulating_supply | 24 | 2026-08-09 | 2026-09-01 | 26,723,298 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
token_total_supply | 24 | 2026-08-09 | 2026-09-01 | 100,000,000 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
velocity | 27 | 2026-08-06 | 2026-09-01 | 0.00643322 | 15 backward move(s) | gauge — excluded by design | |
active_stations | 24 | 2026-08-09 | 2026-09-01 | 5,983 | 12 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
circulating_supply | 17 | 2026-08-09 | 2026-09-01 | 26,729,398 | monotonic | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
claimed_stations | 1 | 2026-08-09 | 2026-08-09 | 9,803 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
customers_total | 1 | 2026-08-09 | 2026-08-09 | 19,796 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
customers_with_wallet | 1 | 2026-08-09 | 2026-08-09 | 5,501 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
fully_diluted_valuation_usd | 17 | 2026-08-09 | 2026-09-01 | 893,780 | 8 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
high_quality_stations | 1 | 2026-08-09 | 2026-08-09 | 4,429 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
market_cap_change_24h_pct | 11 | 2026-08-22 | 2026-09-01 | 29.6529 | 3 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
market_cap_change_24h_usd | 11 | 2026-08-22 | 2026-09-01 | 52,365 | 3 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
market_cap_rank | 11 | 2026-08-22 | 2026-09-01 | 4,737 | 3 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
market_cap_usd | 17 | 2026-08-09 | 2026-09-01 | 237,999 | 8 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
max_supply | 17 | 2026-08-09 | 2026-09-01 | 100,000,000 | monotonic | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
network_avg_qod | 24 | 2026-08-09 | 2026-09-01 | 87 | 4 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
network_size | 24 | 2026-08-09 | 2026-09-01 | 9,820 | 2 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
network_uptime | 24 | 2026-08-09 | 2026-09-01 | 60 | 1 backward move(s) | gauge — excluded by design | first_party_api · origin ↗ |
onboarded_stations | 1 | 2026-08-09 | 2026-08-09 | 23,753 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
price_ath_usd | 11 | 2026-08-22 | 2026-09-01 | 2.38 | monotonic | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_atl_usd | 11 | 2026-08-22 | 2026-09-01 | 0.00446604 | monotonic | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_change_14d_pct | 11 | 2026-08-22 | 2026-09-01 | 45.4 | 4 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_change_1h_pct | 11 | 2026-08-22 | 2026-09-01 | 23.2 | 5 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_change_1y_pct | 11 | 2026-08-22 | 2026-09-01 | -89.8 | monotonic | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_change_200d_pct | 11 | 2026-08-22 | 2026-09-01 | -59.6 | monotonic | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_change_24h_pct | 11 | 2026-08-22 | 2026-09-01 | 29.4918 | 3 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_change_24h_usd | 11 | 2026-08-22 | 2026-09-01 | 0.00195117 | 3 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_change_30d_pct | 11 | 2026-08-22 | 2026-09-01 | 26.6 | 6 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_change_7d_pct | 11 | 2026-08-22 | 2026-09-01 | 35 | 5 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_from_ath_pct | 11 | 2026-08-22 | 2026-09-01 | -99.6242 | monotonic | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_from_atl_pct | 11 | 2026-08-22 | 2026-09-01 | 100.1303 | 5 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_high_24h_usd | 11 | 2026-08-22 | 2026-09-01 | 0.01132201 | 5 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_low_24h_usd | 11 | 2026-08-22 | 2026-09-01 | 0.00815035 | 6 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
price_usd | 17 | 2026-08-09 | 2026-09-01 | 0.00893791 | 8 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
reward_base_allocated | 1 | 2026-08-10 | 2026-08-10 | 9,792,590 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
reward_boost_allocated | 1 | 2026-08-10 | 2026-08-10 | 3,108,619 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
rewards_last_30days | 1 | 2026-08-09 | 2026-08-09 | 224,925 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
rewards_last_run | 1 | 2026-08-09 | 2026-08-09 | 7,830 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
rewards_total | 1 | 2026-08-09 | 2026-08-09 | 12,901,210 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
stations_added_30d | 1 | 2026-08-09 | 2026-08-09 | 22 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
token_circulating_supply | 1 | 2026-08-10 | 2026-08-10 | 25,951,030 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
token_total_supply | 1 | 2026-08-10 | 2026-08-10 | 100,000,000 | monotonic | gauge — excluded by design | first_party_api · origin ↗ |
total_supply | 17 | 2026-08-09 | 2026-09-01 | 100,000,000 | monotonic | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
volume_24h_usd | 11 | 2026-08-22 | 2026-09-01 | 1,304.16 | 7 backward move(s) | gauge — excluded by design | CoinGecko /coins/markets · origin ↗ |
Resolution rule: latest observation wins for current-state reads; the superseded value is retained, never deleted — retaining the before-value is the only reason a restatement is detectable at all.
The daily-snapshot detector is not the only rewrite vector. The raw 5-minute stream (default.depin_onchain) was queried for duplicate (metric, as_of) rows carrying two different values. For WXM the live count at generation is 34 groups — all of them CoinGecko rolling-window market fields (price_change_*, price_high/low_24h_usd, market_cap_change_24h_*) republished under an unchanged upstream last_updated stamp: the window re-computed while the timestamp held still. These are gauges the detector excludes by design — a rolling window re-computing is not a counter rewrite — but the estate kept both values beside the same stamp, which is exactly what an overwriting vendor discards. This table is the point-in-time record of those changes; every value carries its live-queried provenance.
| Metric | Shared as_of (UTC) | Values held (retained → latest) | Provenance |
|---|---|---|---|
market_cap_change_24h_pct | 2026-08-24 06:41:30.000 | -20.0512 → -18.643 → -0.3888 | CoinGecko /coins/markets · origin ↗ |
market_cap_change_24h_usd | 2026-08-24 06:41:30.000 | -43,898.0283 → -40,108.658 → -683.1979 | CoinGecko /coins/markets · origin ↗ |
price_change_1y_pct | 2026-08-24 06:41:30.000 | -93.8 → -93.3 | CoinGecko /coins/markets · origin ↗ |
price_change_200d_pct | 2026-08-24 06:41:30.000 | -71.9 → -71.5 | CoinGecko /coins/markets · origin ↗ |
price_change_24h_pct | 2026-08-24 06:41:30.000 | -20.1463 → -0.5179 → -0.5151 | CoinGecko /coins/markets · origin ↗ |
price_change_24h_usd | 2026-08-24 06:41:30.000 | -0.00167059 → -0.00152672 → -0.00003407 | CoinGecko /coins/markets · origin ↗ |
price_change_30d_pct | 2026-08-24 06:41:30.000 | -19.5 → -19.4 | CoinGecko /coins/markets · origin ↗ |
price_low_24h_usd | 2026-08-24 06:41:30.000 | 0.00662145 → 0.00662151 | CoinGecko /coins/markets · origin ↗ |
market_cap_change_24h_pct | 2026-08-25 04:28:30.000 | 4.4058 → 4.5876 → 6.6818 → 7.6822 → 34.4887 → 34.4927 → 34.4939 | CoinGecko /coins/markets · origin ↗ |
market_cap_change_24h_usd | 2026-08-25 04:28:30.000 | 9,933.59 → 10,325.3 → 14,743.63 → 16,793.55 → 60,366 → 60,371 → 60,373 | CoinGecko /coins/markets · origin ↗ |
price_change_14d_pct | 2026-08-25 04:28:30.000 | 23.2 → 24.9 | CoinGecko /coins/markets · origin ↗ |
price_change_1h_pct | 2026-08-25 04:28:30.000 | -0.1 → 0.3 | CoinGecko /coins/markets · origin ↗ |
price_change_1y_pct | 2026-08-25 04:28:30.000 | -91.7 → -90.5 | CoinGecko /coins/markets · origin ↗ |
price_change_200d_pct | 2026-08-25 04:28:30.000 | -54.1 → -53.6 | CoinGecko /coins/markets · origin ↗ |
price_change_24h_pct | 2026-08-25 04:28:30.000 | 4.3384 → 4.5164 → 6.5688 → 34.3263 → 34.3279 → 34.3293 → 34.3516 | CoinGecko /coins/markets · origin ↗ |
price_change_24h_usd | 2026-08-25 04:28:30.000 | 0.00036985 → 0.00038437 → 0.00054864 → 0.00062964 → 0.00227312 → 0.00227319 → 0.00227429 | CoinGecko /coins/markets · origin ↗ |
price_change_30d_pct | 2026-08-25 04:28:30.000 | 18.2 → 19.4 | CoinGecko /coins/markets · origin ↗ |
price_change_7d_pct | 2026-08-25 04:28:30.000 | 32.2 → 33.2 | CoinGecko /coins/markets · origin ↗ |
price_high_24h_usd | 2026-08-25 04:28:30.000 | 0.00889829 → 0.00890986 | CoinGecko /coins/markets · origin ↗ |
price_low_24h_usd | 2026-08-25 04:28:30.000 | 0.00662036 → 0.00824291 | CoinGecko /coins/markets · origin ↗ |
price_change_14d_pct | 2026-08-26 06:17:20.000 | 11.2 → 14.3 | CoinGecko /coins/markets · origin ↗ |
price_change_1h_pct | 2026-08-26 06:17:20.000 | -0.1 → 10.6 | CoinGecko /coins/markets · origin ↗ |
price_change_1y_pct | 2026-08-26 06:17:20.000 | -91.5 → -90.9 | CoinGecko /coins/markets · origin ↗ |
price_change_200d_pct | 2026-08-26 06:17:20.000 | -60.2 → -56.1 | CoinGecko /coins/markets · origin ↗ |
price_change_30d_pct | 2026-08-26 06:17:20.000 | -3.3 → 6.9 | CoinGecko /coins/markets · origin ↗ |
price_change_7d_pct | 2026-08-26 06:17:20.000 | -3 → 7.3 | CoinGecko /coins/markets · origin ↗ |
price_high_24h_usd | 2026-08-26 06:17:20.000 | 0.00864912 → 0.00892555 | CoinGecko /coins/markets · origin ↗ |
price_change_14d_pct | 2026-08-27 06:22:30.000 | -3.6 → 37.9 | CoinGecko /coins/markets · origin ↗ |
price_change_1h_pct | 2026-08-27 06:22:30.000 | 0.1 → 12.6 | CoinGecko /coins/markets · origin ↗ |
price_change_1y_pct | 2026-08-27 06:22:30.000 | -91.6 → -90.5 | CoinGecko /coins/markets · origin ↗ |
price_change_200d_pct | 2026-08-27 06:22:30.000 | -59.2 → -54.3 | CoinGecko /coins/markets · origin ↗ |
price_change_30d_pct | 2026-08-27 06:22:30.000 | 14.1 → 27.4 | CoinGecko /coins/markets · origin ↗ |
price_change_7d_pct | 2026-08-27 06:22:30.000 | -4.2 → 6.9 | CoinGecko /coins/markets · origin ↗ |
price_high_24h_usd | 2026-08-27 06:22:30.000 | 0.00899432 → 0.00913525 | CoinGecko /coins/markets · origin ↗ |
Reading the table: for each group the archive holds more than one distinct value under the same (metric, as_of) key; all are shown, oldest retained first, the value current upstream last in teal. Nothing was overwritten to produce this table — every held value is still queryable in the point-in-time stream.
WXM is currently the clean case. These networks are not: upstream sources for AR, AUKI, EIGEN, FLOCK, GRT, OVPP, R1, SOGNI, STORJ replaced already-published values after this estate recorded the original. Deduped on revision identity exactly as /v1/revisions dedupes it; rendered live from ClickHouse at generation, not copied from a snapshot. 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 ↗ |
WeatherXM is a sensor network with a public first-party stats endpoint (api.weatherxm.com/api/v1/network/stats), which this estate collects directly, beside CoinGecko market rows and WeatherXM's public GitHub repositories. Every row they wrote carries its own source, as_of and verify_url; this table is the live rollup of that.
| Source | Rows held | Series | Rows w/ verify_url | Window (UTC) | Sample origin |
|---|---|---|---|---|---|
| CoinGecko /coins/markets | 6,962 | 24 | 6,962 | 2026-08-09 17:15:20 → 2026-09-02 17:50:30 | sample origin ↗ |
| first_party_api | 2,293 | 17 | 2,293 | 2026-08-09 23:28:06 → 2026-09-02 18:34:01 | sample origin ↗ |
| weatherxm_network_stats | 626 | 2 | 626 | 2026-08-20 14:43:23 → 2026-09-02 18:47:01 | sample origin ↗ |
| github | 120 | 6 | 120 | 2026-08-09 23:47:26 → 2026-09-02 18:29:01 | sample 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 (alltime fees, token transfers, block heights, reward and claim counters). 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 (station counts, prices, utilization) legitimately move both ways and are deliberately excluded — a drop there is a real population change, not a rewrite. 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); command 3 hits WeatherXM's own network stats endpoint, the first-party source of the counter family; command 4 is the estate's graded network row; command 5 is the frozen daily snapshot of the ledger. One polite call per endpoint, no hammering.
# 1) The served revision feed for WXM — the same rows this page queried, live:
curl -s "https://kairossignal.com/v1/revisions?symbol=WXM" | 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) WeatherXM's own network stats endpoint (the first-party source of the counter family):
curl -s -H "User-Agent: kairos-check" "https://api.weatherxm.com/api/v1/network/stats" | python3 -m json.tool | head -40
# 4) This estate's public API row for WXM (grades + provenance):
curl -s "https://kairossignal.com/v1/network/WXM" | python3 -m json.tool | head -60
# 5) 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_wxm.py and the hourly claim_drift_check.py run grades its claims against the live API like every other published surface. The WXM revision count is the deduped live result of SELECT ... FROM default.depin_revision_ledger WHERE network='WXM'; the page refuses to ship if the served /v1/revisions?symbol=WXM disagrees with it. The 18 estate-wide events shown are deduped on revision identity exactly as the API dedupes them; detected_at is the first detection and never moves. The zero-restatement claim is backed on this page by the per-series monotonicity table (queried live) and the same-stamp check. Series absent from a section are absent, not zero. Upstream probes ran serially by this generator immediately before rendering: api.weatherxm.com/api/v1/network/stats (first-party) HTTP 200; estate /v1/revisions?symbol=WXM HTTP 200; estate /v1/network/WXM HTTP 200.
propintel/gen_revision_page_wxm.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.