Grass (GRASS) — the revision ledger

Generated 2026-10-17T05:22:59Z from live ClickHouse queries against this estate's ledger. Point-in-time archive held for Grass: 32,437 observations · 35 distinct series · 3 upstream sources · first row 2026-08-09 17:15:20 · newest row 2026-10-17 04:51:55 · 32,437 of 32,437 rows carry a verify_url · 35 series refreshed in the last 24h (620 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 Grass (GRASS) view of that product: the live ledger for GRASS, 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 GRASS

Queried live at generation time: default.depin_revision_ledger holds zero rows for GRASS (raw detector output for this network: 0 rows). /v1/revisions?symbol=GRASS 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-10-16 archive, not a guarantee, and on this page it is not a bare claim: every counter-family series we hold for GRASS is listed below with its measured backward-move count (all zero), and the raw 5-minute stream was checked for same-stamp value rewrites (0 found). The moment Grass's endpoints republish a stale or rewritten value for an already-observed date, 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=GRASS and event=revision_restate. Proof query you can run yourself: curl -s "https://kairossignal.com/v1/revisions?symbol=GRASS"

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

The detector only judges series that are cumulative by construction: a counter that cannot legitimately decrease. A gauge (price, market cap, velocity, holder concentration) legitimately falls when the market moves — that is not a revision and is never recorded as one. For every daily-snapshot series we hold for GRASS (39 metrics, 2,189 rows, 72 snapshot dates), this is its measured state across the full archive, queried live at generation. The 8 counter-class series show 0 backward moves in total — that is the measured content of the zero above. The 31 gauge-class series move both ways by nature and are excluded from the detector by design.

MetricSnapshotsFirstLatestMax valueMonotonicityClassProvenance
daily_gb_collected512026-08-062026-09-2596,950monotoniccounter
daily_gb_multimodal512026-08-062026-09-2586,474monotoniccounter
daily_gb_text512026-08-062026-09-251,676monotoniccounter
frames_downloaded492026-08-082026-09-25161,819,278,800monotoniccounter
price722026-08-062026-10-160.839333 backward move(s)gauge
rows_of_data492026-08-082026-09-255,318,005,903monotoniccounter
tokens_collected492026-08-082026-09-25125,338,385,560monotoniccounter
total_ip_addresses512026-08-062026-09-25109,755,404monotoniccounter
tvl12026-08-062026-08-060monotonicgauge
urls_indexed492026-08-082026-09-255,318,005,903monotoniccounter
velocity722026-08-062026-10-160.195937 backward move(s)gauge
circulating_supply642026-08-092026-10-16699,492,325monotonicgaugeCoinGecko /coins/markets · origin ↗
fully_diluted_valuation_usd642026-08-092026-10-16839,515,56027 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
market_cap_change_24h_pct582026-08-222026-10-1625.161122 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
market_cap_change_24h_usd582026-08-222026-10-16118,051,50822 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
market_cap_rank582026-08-222026-10-1616926 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
market_cap_usd642026-08-092026-10-16587,234,69126 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
max_supply642026-08-092026-10-161,000,000,000monotonicgaugeCoinGecko /coins/markets · origin ↗
onchain_top10_holder_pct312026-08-242026-10-1653.88318 backward move(s)gaugesolana_rpc · origin ↗
onchain_top1_holder_pct312026-08-242026-10-1626.13413 backward move(s)gaugesolana_rpc · origin ↗
onchain_top20_holder_pct312026-08-242026-10-1664.711720 backward move(s)gaugesolana_rpc · origin ↗
onchain_total_supply722026-08-092026-10-16999,993,124.293866 backward move(s)gaugesolana_rpc · origin ↗
price_ath_usd582026-08-222026-10-163.89monotonicgaugeCoinGecko /coins/markets · origin ↗
price_atl_usd582026-08-222026-10-160.1668monotonicgaugeCoinGecko /coins/markets · origin ↗
price_change_14d_pct582026-08-222026-10-16113.006522 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_change_1h_pct582026-08-222026-10-16321 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_change_1y_pct582026-08-222026-10-1658.34483 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_change_200d_pct582026-08-222026-10-16143.046121 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_change_24h_pct582026-08-222026-10-1624.545624 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_change_24h_usd582026-08-222026-10-160.170122 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_change_30d_pct582026-08-222026-10-16149.204825 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_change_7d_pct582026-08-222026-10-1678.575417 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_from_ath_pct582026-08-222026-10-16-78.3958monotonicgaugeCoinGecko /coins/markets · origin ↗
price_from_atl_pct582026-08-222026-10-16404.174923 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_high_24h_usd582026-08-222026-10-160.885824 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_low_24h_usd582026-08-222026-10-160.734725 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
price_usd642026-08-092026-10-160.840926 backward move(s)gaugeCoinGecko /coins/markets · origin ↗
total_supply642026-08-092026-10-161,000,000,000monotonicgaugeCoinGecko /coins/markets · origin ↗
volume_24h_usd582026-08-222026-10-1675,397,76527 backward move(s)gaugeCoinGecko /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 rewrite check on the raw stream

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 — the same-timestamp rewrite pattern that hit Arweave's BLOCKS counter (1,988,930 → 1,702,206 between the 2026-08-27 and 2026-08-28 snapshots). For GRASS the live count at generation is 0: no same-stamp rewrite exists in the held archive.

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

GRASS is currently the clean case. These networks are not: upstream sources for AR, ATH, AUKI, EIGEN, FLOCK, GRT, NODE, OBOT, OPEN, 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 overwritten; that retention is the only reason a rewrite is detectable, and it is the part every overwriting vendor discards.

First detectedNetworkMetricWasBecameΔKindProvenance
2026-10-17 01:15:02ARblocks1,980,1161,702,204-14.035%backward_revisiondepin_first_party
2026-10-17 01:15:02ARblocks1,986,2201,702,204-14.299%backward_revisiondepin_first_party
2026-10-17 01:15:02ARblocks1,988,9301,702,206-14.416%backward_revisiondepin_first_party
2026-10-17 01:15:02ARblocks1,982,1761,702,204-14.124%backward_revisiondepin_first_party
2026-10-17 01:15:02GRTdl_fees_alltime_usd1,443,521.441,442,910.44-0.042%backward_revisiondepin_first_party
2026-10-17 01:15:02GRTdl_fees_alltime_usd1,415,0541,414,119-0.066%backward_revisiondepin_first_party
2026-10-17 01:15:02GRTdl_fees_alltime_usd1,419,3221,419,152-0.012%backward_revisiondepin_first_party
2026-10-17 01:15:02GRTdl_fees_alltime_usd1,419,5661,419,322-0.017%backward_revisiondepin_first_party
2026-10-17 01:15:02NODEdl_fees_alltime_usd811,126810,992-0.017%backward_revisiondepin_first_party
2026-10-17 01:15:02NODEdl_fees_alltime_usd811,347810,962-0.047%backward_revisiondepin_first_party
2026-10-17 01:15:02OPENdl_fees_alltime_usd288,385288,055-0.114%backward_revisiondepin_first_party
2026-10-17 01:15:02STORJdisqualified_nodes80,23879,569-0.834%backward_revisiondepin_first_party
2026-10-16 01:15:02ARblocks1,999,7261,702,218-14.877%backward_revisiondepin_first_party
2026-10-16 01:15:02ARblocks1,992,2991,702,218-14.560%backward_revisiondepin_first_party
2026-10-16 01:15:02ARblocks1,995,6771,702,218-14.705%backward_revisiondepin_first_party
2026-10-16 01:15:02ARblocks2,001,7361,702,218-14.963%backward_revisiondepin_first_party
2026-10-16 01:15:02ARblocks2,007,2101,702,218-15.195%backward_revisiondepin_first_party
2026-10-16 01:15:02ATHdl_fees_alltime_usd180,402,699.27180,348,562.27-0.030%backward_revisiondepin_first_party
2026-10-16 01:15:02AUKIdl_fees_alltime_usd253,682251,527-0.849%backward_revisiondepin_first_party
2026-10-16 01:15:02AUKIdl_fees_alltime_usd248,389248,364-0.010%backward_revisiondepin_first_party
2026-10-16 01:15:02AUKIdl_fees_alltime_usd249,318249,293-0.010%backward_revisiondepin_first_party
2026-10-16 01:15:02GRTdl_fees_alltime_usd1,433,230.441,433,068.44-0.011%backward_revisiondepin_first_party
2026-10-16 01:15:02GRTdl_fees_alltime_usd1,431,295.441,428,351.44-0.206%backward_revisiondepin_first_party
2026-10-16 01:15:02GRTdl_fees_alltime_usd1,441,313.441,440,661.44-0.045%backward_revisiondepin_first_party
2026-10-16 01:15:02GRTdl_fees_alltime_usd1,424,3161,423,345-0.068%backward_revisiondepin_first_party
2026-10-16 01:15:02NODEdl_fees_alltime_usd804,574804,388-0.023%backward_revisiondepin_first_party
2026-10-16 01:15:02OPENdl_fees_alltime_usd272,079271,588-0.180%backward_revisiondepin_first_party
2026-09-05 01:15:02AUKItoken_transfers_total1,230,1671,228,860-0.106%backward_revisionevm_blockscout · origin ↗
2026-09-05 01:15:02EIGENfees_alltime_usd161,955,683.53161,932,203.53-0.014%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-05 01:15:02GRTfees_alltime_usd1,419,3281,419,152-0.012%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-05 01:15:02GRTfees_alltime_usd1,419,5581,419,328-0.016%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-05 01:15:02GRTfees_alltime_usd1,424,3021,423,345-0.067%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-05 01:15:02NODEfees_alltime_usd804,574804,388-0.023%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-05 01:15:02OBOTtoken_transfers_total40,25340,246-0.017%backward_revisionevm_blockscout · origin ↗
2026-09-05 01:15:02OVPPtoken_transfers_total1,356,7491,354,903-0.136%backward_revisionevm_blockscout · origin ↗
2026-09-05 01:15:02R1token_transfers_total194,634194,527-0.055%backward_revisionevm_blockscout · origin ↗
2026-09-05 01:15:02R1token_transfers_total194,390194,337-0.027%backward_revisionevm_blockscout · origin ↗
2026-09-05 01:15:02SOGNItoken_transfers_total1,177,2191,174,145-0.261%backward_revisionevm_blockscout · origin ↗
2026-08-13 15:35:15FLOCKdl_fees_alltime_usd1,170,614.61,170,544.16-0.006%sub_noisedefillama_fees · 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, indexed rows, node disqualifications). 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 (node 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 Grass'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 GRASS — the same rows this page queried, live:
curl -s "https://kairossignal.com/v1/revisions?symbol=GRASS" | 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) Grass's own network stats endpoint (the first-party source of the counter family):
curl -s -H "User-Agent: kairos-check" "https://api.getgrass.io/networkStats?input=%7B%22cluster%22%3A%22mainnet%22%7D" | python3 -m json.tool | head -40
# 4) This estate's public API row for GRASS (grades + provenance):
curl -s "https://kairossignal.com/v1/network/GRASS" | 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/GRASS.

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_grass.py and the hourly claim_drift_check.py run grades its claims against the live API like every other published surface. The GRASS revision count is the deduped live result of SELECT ... FROM default.depin_revision_ledger WHERE network='GRASS'; the page refuses to ship if the served /v1/revisions?symbol=GRASS disagrees with it. The 39 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 rewrite check. Series absent from a section are absent, not zero. Upstream probes ran serially by this generator immediately before rendering: api.getgrass.io/networkStats (first-party) HTTP 200; estate /v1/revisions?symbol=GRASS HTTP 200; estate /v1/network/GRASS HTTP 200.

Machine-generated 2026-10-17T05:22:59Z by propintel/gen_revision_page_grass.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.