WeatherXM (WXM) — the revision ledger

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.

What this page is. Data vendors restate history: a number they published for a date gets replaced later, silently, and everyone who stored the first answer either never notices or overwrites it. This estate keeps a machine detector over its daily snapshots for every cumulative-by-construction series, records the before-value beside the replacement, and serves the record at /v1/revisions. This page is the WeatherXM (WXM) view of that product: the live ledger for WXM, the estate-wide feed as proof the detector works, the archive the detection runs over, and the exact commands to verify any of it without an account. It does not forecast, rank investment merit, or advise. Where a fact has a caveat, the caveat ships with the fact.

Revision ledger — 0 backward revision(s) recorded for WXM

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.

What this zero means — and what it does not. Zero restatements is a measured property of the 2026-08-06 → 2026-09-01 archive, not a guarantee, and on this page it is not a bare claim: every detector-graded counter series we hold for WXM is listed below with its measured backward-move count (all zero), and the raw 5-minute stream was checked for same-stamp value changes (34 groups found — rendered in full below). The moment WeatherXM's endpoints republish a stale or rewritten value for an already-observed date on a counter series, the detector records the before-value, the after-value, both stamps, and the verify URL — and this page turns from a clean bill of health into the evidence log. Subscribe so the event finds you: 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"

What we monitor for WXM — live monotonicity of every held series

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.

MetricSnapshotsFirstLatestMax valueMonotonicityClassProvenance
base_rewards242026-08-092026-09-019,970,712monotonicgauge — excluded by design
boost_rewards242026-08-092026-09-013,109,345monotonicgauge — excluded by design
customers272026-08-062026-09-0119,883monotonicgauge — excluded by design
customers_total242026-08-092026-09-0119,882monotonicgauge — excluded by designfirst_party_api · origin ↗
customers_with_wallet272026-08-062026-09-015,53514 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
growth_last_30d272026-08-062026-09-01323 backward move(s)gauge — excluded by design
high_quality_stations272026-08-062026-09-014,47715 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
network_avg_qod272026-08-062026-09-01874 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
network_scale_up272026-08-062026-09-011monotonicgauge — excluded by design
network_size272026-08-062026-09-019,8222 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
network_uptime272026-08-062026-09-01611 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
price272026-08-062026-09-010.008939713 backward move(s)gauge — excluded by design
rewards_last_30d272026-08-062026-09-01226,2859 backward move(s)gauge — excluded by design
rewards_last_run272026-08-062026-09-017,84513 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
rewards_total272026-08-062026-09-0113,080,058monotonicdetector-graded counterfirst_party_api · origin ↗
stations_claimed242026-08-092026-09-019,8203 backward move(s)gauge — excluded by design
stations_onboarded242026-08-092026-09-0123,757monotonicdetector-graded counter
station_claim_rate_pct132026-08-202026-09-0141.33521 backward move(s)gauge — excluded by designweatherxm_network_stats · origin ↗
station_liveness_pct132026-08-202026-09-0160.86829 backward move(s)gauge — excluded by designweatherxm_network_stats · origin ↗
tokens_allocated_total242026-08-092026-09-0113,051,580monotonicdetector-graded counter
tokens_claimed242026-08-092026-09-017,746,793monotonicdetector-graded counter
tokens_unclaimed242026-08-092026-09-015,304,7871 backward move(s)gauge — excluded by design
token_circulating_supply242026-08-092026-09-0126,723,298monotonicgauge — excluded by designfirst_party_api · origin ↗
token_total_supply242026-08-092026-09-01100,000,000monotonicgauge — excluded by designfirst_party_api · origin ↗
velocity272026-08-062026-09-010.0064332215 backward move(s)gauge — excluded by design
active_stations242026-08-092026-09-015,98312 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
circulating_supply172026-08-092026-09-0126,729,398monotonicgauge — excluded by designCoinGecko /coins/markets · origin ↗
claimed_stations12026-08-092026-08-099,803monotonicgauge — excluded by designfirst_party_api · origin ↗
customers_total12026-08-092026-08-0919,796monotonicgauge — excluded by designfirst_party_api · origin ↗
customers_with_wallet12026-08-092026-08-095,501monotonicgauge — excluded by designfirst_party_api · origin ↗
fully_diluted_valuation_usd172026-08-092026-09-01893,7808 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
high_quality_stations12026-08-092026-08-094,429monotonicgauge — excluded by designfirst_party_api · origin ↗
market_cap_change_24h_pct112026-08-222026-09-0129.65293 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
market_cap_change_24h_usd112026-08-222026-09-0152,3653 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
market_cap_rank112026-08-222026-09-014,7373 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
market_cap_usd172026-08-092026-09-01237,9998 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
max_supply172026-08-092026-09-01100,000,000monotonicgauge — excluded by designCoinGecko /coins/markets · origin ↗
network_avg_qod242026-08-092026-09-01874 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
network_size242026-08-092026-09-019,8202 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
network_uptime242026-08-092026-09-01601 backward move(s)gauge — excluded by designfirst_party_api · origin ↗
onboarded_stations12026-08-092026-08-0923,753monotonicgauge — excluded by designfirst_party_api · origin ↗
price_ath_usd112026-08-222026-09-012.38monotonicgauge — excluded by designCoinGecko /coins/markets · origin ↗
price_atl_usd112026-08-222026-09-010.00446604monotonicgauge — excluded by designCoinGecko /coins/markets · origin ↗
price_change_14d_pct112026-08-222026-09-0145.44 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
price_change_1h_pct112026-08-222026-09-0123.25 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
price_change_1y_pct112026-08-222026-09-01-89.8monotonicgauge — excluded by designCoinGecko /coins/markets · origin ↗
price_change_200d_pct112026-08-222026-09-01-59.6monotonicgauge — excluded by designCoinGecko /coins/markets · origin ↗
price_change_24h_pct112026-08-222026-09-0129.49183 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
price_change_24h_usd112026-08-222026-09-010.001951173 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
price_change_30d_pct112026-08-222026-09-0126.66 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
price_change_7d_pct112026-08-222026-09-01355 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
price_from_ath_pct112026-08-222026-09-01-99.6242monotonicgauge — excluded by designCoinGecko /coins/markets · origin ↗
price_from_atl_pct112026-08-222026-09-01100.13035 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
price_high_24h_usd112026-08-222026-09-010.011322015 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
price_low_24h_usd112026-08-222026-09-010.008150356 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
price_usd172026-08-092026-09-010.008937918 backward move(s)gauge — excluded by designCoinGecko /coins/markets · origin ↗
reward_base_allocated12026-08-102026-08-109,792,590monotonicgauge — excluded by designfirst_party_api · origin ↗
reward_boost_allocated12026-08-102026-08-103,108,619monotonicgauge — excluded by designfirst_party_api · origin ↗
rewards_last_30days12026-08-092026-08-09224,925monotonicgauge — excluded by designfirst_party_api · origin ↗
rewards_last_run12026-08-092026-08-097,830monotonicgauge — excluded by designfirst_party_api · origin ↗
rewards_total12026-08-092026-08-0912,901,210monotonicgauge — excluded by designfirst_party_api · origin ↗
stations_added_30d12026-08-092026-08-0922monotonicgauge — excluded by designfirst_party_api · origin ↗
token_circulating_supply12026-08-102026-08-1025,951,030monotonicgauge — excluded by designfirst_party_api · origin ↗
token_total_supply12026-08-102026-08-10100,000,000monotonicgauge — excluded by designfirst_party_api · origin ↗
total_supply172026-08-092026-09-01100,000,000monotonicgauge — excluded by designCoinGecko /coins/markets · origin ↗
volume_24h_usd112026-08-222026-09-011,304.167 backward move(s)gauge — excluded by designCoinGecko /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.

Same-stamp value changes the archive retained (34 groups)

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.

MetricShared as_of (UTC)Values held (retained → latest)Provenance
market_cap_change_24h_pct2026-08-24 06:41:30.000-20.0512-18.643-0.3888CoinGecko /coins/markets · origin ↗
market_cap_change_24h_usd2026-08-24 06:41:30.000-43,898.0283-40,108.658-683.1979CoinGecko /coins/markets · origin ↗
price_change_1y_pct2026-08-24 06:41:30.000-93.8-93.3CoinGecko /coins/markets · origin ↗
price_change_200d_pct2026-08-24 06:41:30.000-71.9-71.5CoinGecko /coins/markets · origin ↗
price_change_24h_pct2026-08-24 06:41:30.000-20.1463-0.5179-0.5151CoinGecko /coins/markets · origin ↗
price_change_24h_usd2026-08-24 06:41:30.000-0.00167059-0.00152672-0.00003407CoinGecko /coins/markets · origin ↗
price_change_30d_pct2026-08-24 06:41:30.000-19.5-19.4CoinGecko /coins/markets · origin ↗
price_low_24h_usd2026-08-24 06:41:30.0000.006621450.00662151CoinGecko /coins/markets · origin ↗
market_cap_change_24h_pct2026-08-25 04:28:30.0004.40584.58766.68187.682234.488734.492734.4939CoinGecko /coins/markets · origin ↗
market_cap_change_24h_usd2026-08-25 04:28:30.0009,933.5910,325.314,743.6316,793.5560,36660,37160,373CoinGecko /coins/markets · origin ↗
price_change_14d_pct2026-08-25 04:28:30.00023.224.9CoinGecko /coins/markets · origin ↗
price_change_1h_pct2026-08-25 04:28:30.000-0.10.3CoinGecko /coins/markets · origin ↗
price_change_1y_pct2026-08-25 04:28:30.000-91.7-90.5CoinGecko /coins/markets · origin ↗
price_change_200d_pct2026-08-25 04:28:30.000-54.1-53.6CoinGecko /coins/markets · origin ↗
price_change_24h_pct2026-08-25 04:28:30.0004.33844.51646.568834.326334.327934.329334.3516CoinGecko /coins/markets · origin ↗
price_change_24h_usd2026-08-25 04:28:30.0000.000369850.000384370.000548640.000629640.002273120.002273190.00227429CoinGecko /coins/markets · origin ↗
price_change_30d_pct2026-08-25 04:28:30.00018.219.4CoinGecko /coins/markets · origin ↗
price_change_7d_pct2026-08-25 04:28:30.00032.233.2CoinGecko /coins/markets · origin ↗
price_high_24h_usd2026-08-25 04:28:30.0000.008898290.00890986CoinGecko /coins/markets · origin ↗
price_low_24h_usd2026-08-25 04:28:30.0000.006620360.00824291CoinGecko /coins/markets · origin ↗
price_change_14d_pct2026-08-26 06:17:20.00011.214.3CoinGecko /coins/markets · origin ↗
price_change_1h_pct2026-08-26 06:17:20.000-0.110.6CoinGecko /coins/markets · origin ↗
price_change_1y_pct2026-08-26 06:17:20.000-91.5-90.9CoinGecko /coins/markets · origin ↗
price_change_200d_pct2026-08-26 06:17:20.000-60.2-56.1CoinGecko /coins/markets · origin ↗
price_change_30d_pct2026-08-26 06:17:20.000-3.36.9CoinGecko /coins/markets · origin ↗
price_change_7d_pct2026-08-26 06:17:20.000-37.3CoinGecko /coins/markets · origin ↗
price_high_24h_usd2026-08-26 06:17:20.0000.008649120.00892555CoinGecko /coins/markets · origin ↗
price_change_14d_pct2026-08-27 06:22:30.000-3.637.9CoinGecko /coins/markets · origin ↗
price_change_1h_pct2026-08-27 06:22:30.0000.112.6CoinGecko /coins/markets · origin ↗
price_change_1y_pct2026-08-27 06:22:30.000-91.6-90.5CoinGecko /coins/markets · origin ↗
price_change_200d_pct2026-08-27 06:22:30.000-59.2-54.3CoinGecko /coins/markets · origin ↗
price_change_30d_pct2026-08-27 06:22:30.00014.127.4CoinGecko /coins/markets · origin ↗
price_change_7d_pct2026-08-27 06:22:30.000-4.26.9CoinGecko /coins/markets · origin ↗
price_high_24h_usd2026-08-27 06:22:30.0000.008994320.00913525CoinGecko /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.

The ledger, live — every restatement recorded estate-wide (18 deduped events)

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 detectedNetworkMetricWasBecameΔKindProvenance
2026-09-02 01:15:01GRTdl_fees_alltime_usd1,424,3161,423,345-0.068%backward_revisiondepin_first_party · origin ↗
2026-09-02 01:15:01GRTfees_alltime_usd1,424,3021,423,345-0.067%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-02 01:15:01OVPPtoken_transfers_total1,356,7491,354,903-0.136%backward_revisionevm_blockscout · origin ↗
2026-09-01 23:34:07ARblocks1,986,2201,702,204-14.299%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:34:07ARblocks1,980,1161,702,204-14.035%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:34:07ARblocks1,988,9301,702,206-14.416%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:34:07ARblocks1,982,1761,702,204-14.124%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:34:07AUKItoken_transfers_total1,230,1671,228,860-0.106%backward_revisionevm_blockscout · origin ↗
2026-09-01 23:34:07EIGENfees_alltime_usd161,955,683.53161,932,203.53-0.014%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-01 23:34:07GRTfees_alltime_usd1,419,3281,419,152-0.012%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-01 23:34:07GRTfees_alltime_usd1,419,5581,419,328-0.016%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-01 23:34:07R1token_transfers_total194,390194,337-0.027%backward_revisionevm_blockscout · origin ↗
2026-09-01 23:34:07SOGNItoken_transfers_total1,177,2191,174,145-0.261%backward_revisionevm_blockscout · origin ↗
2026-09-01 23:33:32GRTdl_fees_alltime_usd1,419,3221,419,152-0.012%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:33:32GRTdl_fees_alltime_usd1,415,0541,414,119-0.066%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:33:32GRTdl_fees_alltime_usd1,419,5661,419,322-0.017%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:33:32STORJdisqualified_nodes80,23879,569-0.834%backward_revisiondepin_first_party · origin ↗
2026-08-13 15:35:15FLOCKdl_fees_alltime_usd1,170,614.61,170,544.16-0.006%sub_noisedefillama_fees · origin ↗

Provenance — where WXM's archive comes from

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.

SourceRows heldSeriesRows w/ verify_urlWindow (UTC)Sample origin
CoinGecko /coins/markets6,962246,9622026-08-09 17:15:20 → 2026-09-02 17:50:30sample origin ↗
first_party_api2,293172,2932026-08-09 23:28:06 → 2026-09-02 18:34:01sample origin ↗
weatherxm_network_stats62626262026-08-20 14:43:23 → 2026-09-02 18:47:01sample origin ↗
github12061202026-08-09 23:47:26 → 2026-09-02 18:29:01sample origin ↗

How detection works — and what it cannot see

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.

Verify any cell yourself — the exact commands

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"
Get this network as a data feed. Every number here is one API call away, with the same provenance fields — including the revision feed itself. Pricing · Self-register for free $5 API credits — no card, no human · API reference. Machine-readable row for this network: /v1/network/WXM.

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.

Machine-generated 2026-09-02T18:48:57Z by 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.