ROAM (ROAM) — the network, measured

Generated 2026-09-02T16:28:35Z from live ClickHouse queries against this estate's ledger. Held inventory: 8,093 observations · 33 distinct series · 2 upstream sources · first row 2026-08-09 17:15:20 · newest row 2026-09-02 15:49:30 · 8,093/8,093 rows carry a verify_url. 26 series refreshed in the last 24h (744 fresh rows). Nothing on this page is cached, estimated, or remembered.

What this page is. One network — ROAM (catalog name ROAM Token, category wireless, chains binance-smart-chain,solana, website roam.xyz), the WiFi-roaming DePIN network (Metablox miners) — packaged as a read-only product page. The catalog lists a public stats API for this network (has_public_stats_api = 1) and the estate reads it as its first-party source: ROAM's own explorer stats endpoint on api.weroam.xyz, not a third-party aggregator. Two of its fields flow daily (WiFi hotspots, members); seven wider counters from the same endpoint are held as a single 2026-08-09 deep snapshot — both facts are labelled per row below. The estate holds NO on-chain token telemetry for ROAM (no BSC or Solana RPC rows), so there is no chain supply read, no holder concentration, and no host-chain context on this page — the supply references are the CoinGecko coin-page reference alone, published as held. There are no DefiLlama and no GitHub rows either, so those sections are absent — absence, not zero, and the queries rerun at every regeneration so a section would appear the day rows exist. This page reports what the held endpoints answered and when. It does not forecast, rank investment merit, or advise. Where a metric has a measurement caveat, the caveat ships with the metric. All source families hold verify_urls on 100% of their rows; there are no unattributed figures on this page.

Provenance — where every number comes from

2 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.

SourceRows heldSeriesRows w/ verify_url Window (UTC)Sample origin
CoinGecko /coins/markets6,954246,9542026-08-09 17:15:20 → 2026-09-02 15:49:30sample origin ↗
first_party_api1,13991,1392026-08-09 23:28:06 → 2026-09-02 15:34:01sample origin ↗

30-day history — headline series (daily last-value, live)

One row per series: latest value, a 30-day sparkline of daily last-known values (scaled to the series' own min→max), day count, and window change. Series absent from the 30-day window are omitted from this table, not zero-filled.

SeriesLatest30-day shapeDays held 30d changeWindow & provenance
price_usd0.01220619 usd▁▅▄▄▇█▇█▇▇▆▆▆▆▅▆▆▆18+38.2%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
market_cap_usd4,415,460 usd▁▅▄▄▇█▇█▇▇▆▆▆▆▅▆▆▆18+39.3%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
volume_24h_usd1,054,086 usd█▇▁▁▂▇█▆▆▆▇▆12-12.1%2026-08-22 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
circulating_supply361,739,436.4734 tokens▁▃▄▄▄▅▅▅▅▆▆▆▇▇▇███18+0.8%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
total_supply995,632,070.0692 tokens█▆▆▆▄▄▄▃▃▃▃▃▃▂▂▂▂▁18-0.0%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
max_supply1,000,000,000 tokens▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁18+0.0%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
fully_diluted_valuation_usd12,152,872 usd▁▅▄▄▇█▇█▇▇▆▆▆▆▅▆▆▆18+38.2%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
market_cap_rank1,693 rank▂▁▃▃▅█▇▇▇▇▆▆12+3.5%2026-08-22 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
price_ath_usd0.4099 usd▁▁▁▁▁▁▁▁▁▁▁▁12+0.0%2026-08-22 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
price_from_ath_pct-97.0223 percent▇█▆▅▄▃▃▂▁▃▃▂12-0.3%2026-08-22 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
price_high_24h_usd0.01254543 usd█▇▆▅▄▃▂▁▁▁▂▂12-11.7%2026-08-22 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
price_low_24h_usd0.01203329 usd██▆▄▅▂▂▃▂▁▂▂12-10.2%2026-08-22 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
total_wifi6,414,908 wifi▁▁▂▂▂▂▃▃▃▄▄▄▄▅▅▅▅▆▆▇▇▇███25+0.0%2026-08-09 → 2026-09-02 via first_party_api · origin ↗
total_members3,284,670 members▁▁▁▁▂▂▂▃▃▃▄▄▄▅▅▆▆▆▇▇▇▇███25+0.1%2026-08-09 → 2026-09-02 via first_party_api · origin ↗

Network telemetry — ROAM's own explorer stats API, as held

Read from the network's own public stats endpoint (api.weroam.xyz/v1/explorer/stat/total/num — the catalog's stats_api_url, has_public_stats_api = 1): WiFi hotspots, members, and the wider miner/check/points/sticker counters. TWO series flow daily — the two fields the daily collector archives (totalWiFiNumtotal_wifi, totalMemberNumtotal_members). SEVEN wider counters were captured once in a deep snapshot of the SAME endpoint on 2026-08-09 and are held as exactly one row each — published as the snapshot they are, as of their stamp, never presented as flowing, never back-filled from today's probe. The endpoint answers more fields than the archive keeps; the archive is the product.

MetricLatestAs of (UTC)Rows heldVerify
total_bound_miners
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalBindMinerNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
8,783 miners2026-08-09 23:53:151origin ↗
total_checks
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalCheckNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
765,981,147 checks2026-08-09 23:53:151origin ↗
total_issued_points
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalIssuedPointsNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
16,212,949,453 points2026-08-09 23:53:151origin ↗
total_members
⚠ first-party read of ROAM's own public explorer stats API (payload field totalMemberNum) — one of the two fields the daily collector archives; this series flows daily
3,284,670 members2026-09-02 15:34:01566origin ↗
total_metablox_miners
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalMetabloxMinerNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
11,427 miners2026-08-09 23:53:151origin ↗
total_online_miners
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalOnlineMinerNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
2,931 miners2026-08-09 23:53:151origin ↗
total_quality_user_checks
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalQualityUserCheckNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
140,059,373 checks2026-08-09 23:53:151origin ↗
total_stickers
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalStickerNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
449,929,680 stickers2026-08-09 23:53:151origin ↗
total_wifi
⚠ first-party read of ROAM's own public explorer stats API (payload field totalWiFiNum) — one of the two fields the daily collector archives; this series flows daily
6,414,908 wifi2026-09-02 15:34:01566origin ↗

Market reference — CoinGecko coin page, as held

Market-data reference rows: price, supply, capitalisation, diluted valuation, and the published change columns including ATH/ATL. These are the coin-page reference's own numbers — the estate does not model, smooth, or forward-fill them. The change columns / rank / ATH-ATL / high-low series start later in the archive than the price rows (each metric's caveat in the full inventory states its own first-held row) and are shown from their first held row. The circulating and total supply rows are different quantities (circulating vs total) and are never netted against each other; the estate holds no on-chain supply read for ROAM, so there is no chain row to merge — absence, not zero.

MetricLatestAs of (UTC)Verify
circulating_supply361,739,436.4734 tokens2026-09-02 15:49:30origin ↗
fully_diluted_valuation_usd12,152,8722026-09-02 15:49:30origin ↗
market_cap_change_24h_pct-0.292 percent2026-09-02 15:49:30origin ↗
market_cap_change_24h_usd-12,931.6552026-09-02 15:49:30origin ↗
market_cap_rank1,693 rank2026-09-02 15:49:30origin ↗
market_cap_usd4,415,4602026-09-02 15:49:30origin ↗
max_supply1,000,000,000 tokens2026-09-02 15:49:30origin ↗
price_ath_usd0.40992026-09-02 15:49:30origin ↗
price_atl_usd0.004684662026-09-02 15:49:30origin ↗
price_change_14d_pct9.7 percent2026-09-02 15:49:30origin ↗
price_change_1h_pct-1 percent2026-09-02 15:49:30origin ↗
price_change_1y_pct-90.7 percent2026-09-02 15:49:30origin ↗
price_change_200d_pct-76.2 percent2026-09-02 15:49:30origin ↗
price_change_24h_pct-0.4271 percent2026-09-02 15:49:30origin ↗
price_change_24h_usd-0.00003982026-09-02 15:49:30origin ↗
price_change_30d_pct48.7 percent2026-09-02 15:49:30origin ↗
price_change_7d_pct-3.9 percent2026-09-02 15:49:30origin ↗
price_from_ath_pct-97.0223 percent2026-09-02 15:49:30origin ↗
price_from_atl_pct160.5568 percent2026-09-02 15:49:30origin ↗
price_high_24h_usd0.012545432026-09-02 15:49:30origin ↗
price_low_24h_usd0.012033292026-09-02 15:49:30origin ↗
price_usd0.012206192026-09-02 15:49:30origin ↗
total_supply995,632,070.0692 tokens2026-09-02 15:49:30origin ↗
volume_24h_usd1,054,0862026-09-02 15:49:30origin ↗

Full metric inventory — 33 measured series, each with provenance

Every series held for ROAM with rows in the last 30 days: latest value, when it was observed, which source observed it, how many rows we hold, how many of the last 30 days it reported, its comparability grade, and the origin link. "days/30" counts distinct dates with at least one row in the window.

MetricLatestAs of (UTC)Source RowsDays/30ComparabilityVerify
circulating_supply
⚠ CoinGecko coin-page reference — a market-data figure of a DIFFERENT quantity than total supply (circulating vs total); never netted against it or against any chain read (none held)
361,739,436.4734 tokens2026-09-02 15:49:30CoinGecko /coins/markets36118/30roam-native (unmapped)origin ↗
fully_diluted_valuation_usd
⚠ CoinGecko coin-page reference — a market-data figure
12,152,872 usd2026-09-02 15:49:30CoinGecko /coins/markets36118/30roam-native (unmapped)origin ↗
market_cap_change_24h_pct
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
-0.292 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
market_cap_change_24h_usd
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
-12,931.655 usd2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
market_cap_rank
⚠ CoinGecko coin-page reference — a market-data figure; starts 2026-08-22 in our archive — shown from first held row, never back-filled
1,693 rank2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
market_cap_usd
⚠ CoinGecko coin-page reference — a market-data figure
4,415,460 usd2026-09-02 15:49:30CoinGecko /coins/markets36118/30roam-native (unmapped)origin ↗
max_supply
⚠ CoinGecko coin-page reference — the protocol's own published cap (1,000,000,000 ROAM), not a chain-read value
1,000,000,000 tokens2026-09-02 15:49:30CoinGecko /coins/markets36118/30roam-native (unmapped)origin ↗
price_ath_usd
⚠ CoinGecko coin-page reference — a market-data figure; starts 2026-08-22 in our archive — shown from first held row, never back-filled
0.4099 usd2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_atl_usd
⚠ CoinGecko coin-page reference — a market-data figure; starts 2026-08-22 in our archive — shown from first held row, never back-filled
0.00468466 usd2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_change_14d_pct
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
9.7 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_change_1h_pct
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
-1 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_change_1y_pct
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
-90.7 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_change_200d_pct
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
-76.2 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_change_24h_pct
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
-0.4271 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_change_24h_usd
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
-0.0000398 usd2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_change_30d_pct
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
48.7 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_change_7d_pct
⚠ CoinGecko coin-page reference — the published change column as the endpoint reports it, never re-windowed; starts 2026-08-22 in our archive — shown from first held row, never back-filled
-3.9 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_from_ath_pct
⚠ CoinGecko coin-page reference — a market-data figure; starts 2026-08-22 in our archive — shown from first held row, never back-filled
-97.0223 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_from_atl_pct
⚠ CoinGecko coin-page reference — a market-data figure; starts 2026-08-22 in our archive — shown from first held row, never back-filled
160.5568 percent2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_high_24h_usd
⚠ CoinGecko coin-page reference — a market-data figure; starts 2026-08-22 in our archive — shown from first held row, never back-filled
0.01254543 usd2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_low_24h_usd
⚠ CoinGecko coin-page reference — a market-data figure; starts 2026-08-22 in our archive — shown from first held row, never back-filled
0.01203329 usd2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗
price_usd
⚠ CoinGecko coin-page reference — a market-data figure
0.01220619 usd2026-09-02 15:49:30CoinGecko /coins/markets36118/30roam-native (unmapped)origin ↗
total_bound_miners
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalBindMinerNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
8,783 miners2026-08-09 23:53:15first_party_api11/30roam-native (unmapped)origin ↗
total_checks
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalCheckNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
765,981,147 checks2026-08-09 23:53:15first_party_api11/30roam-native (unmapped)origin ↗
total_issued_points
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalIssuedPointsNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
16,212,949,453 points2026-08-09 23:53:15first_party_api11/30roam-native (unmapped)origin ↗
total_members
⚠ first-party read of ROAM's own public explorer stats API (payload field totalMemberNum) — one of the two fields the daily collector archives; this series flows daily
3,284,670 members2026-09-02 15:34:01first_party_api56625/30roam-native (unmapped)origin ↗
total_metablox_miners
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalMetabloxMinerNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
11,427 miners2026-08-09 23:53:15first_party_api11/30roam-native (unmapped)origin ↗
total_online_miners
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalOnlineMinerNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
2,931 miners2026-08-09 23:53:15first_party_api11/30roam-native (unmapped)origin ↗
total_quality_user_checks
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalQualityUserCheckNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
140,059,373 checks2026-08-09 23:53:15first_party_api11/30roam-native (unmapped)origin ↗
total_stickers
⚠ single-snapshot deep read of the same endpoint (2026-08-09, payload field totalStickerNum) — held exactly as of its stamp, NOT re-collected daily, never presented as flowing
449,929,680 stickers2026-08-09 23:53:15first_party_api11/30roam-native (unmapped)origin ↗
total_supply
⚠ CoinGecko coin-page reference (question-verified comparability as token_supply_total); the estate holds NO on-chain supply read for ROAM — this reference is the only total-supply row, never reconciled against a chain read (there is none)
995,632,070.0692 tokens2026-09-02 15:49:30CoinGecko /coins/markets36118/30question-verified
token_supply_total
origin ↗
total_wifi
⚠ first-party read of ROAM's own public explorer stats API (payload field totalWiFiNum) — one of the two fields the daily collector archives; this series flows daily
6,414,908 wifi2026-09-02 15:34:01first_party_api56625/30roam-native (unmapped)origin ↗
volume_24h_usd
⚠ CoinGecko coin-page reference — a market-data figure; starts 2026-08-22 in our archive — shown from first held row, never back-filled
1,054,086 usd2026-09-02 15:49:30CoinGecko /coins/markets26612/30roam-native (unmapped)origin ↗

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

Backward revisions are values upstream later replaced for a date we had already archived. The before-value is retained — that retention is the only reason a rewrite is detectable, and it is the part every overwriting vendor discards.

The ledger query ran during generation and returned 0 rows for ROAM. Zero here is the live query result, not a gap — the ledger itself is at /v1/revisions.

Estate grades for ROAM (graded 2026-08-20 13:54:15.000)

Served by /v1/network/ROAM — the same grades a paying agent receives. Scores are the engines' own 0–100 outputs, not ours to smooth. The overall grade is D and it is published as computed — node quality F, revenue F, coverage C alongside dilution LOW and dev velocity A — the unflattering parts included, exactly as the engines emitted them. The estate ledger holds no github series for this network, so the dev-velocity grade is the engines' own output as served, not derived from any series on this page.

EngineGradeScore
Node qualityF0.08928835
Dilution riskLOW72.3499
Bot riskC85
Dev velocityA100
RevenueF0
Data coverageC45
OverallD43.9834

Verify any cell yourself — the exact commands

No account, no key, no trust required. Commands 1–2 hit the same upstream endpoints our collectors do (the coingecko.com browser coin page 403s plain curl, so the programmatic markets endpoint is given, id roam-token); command 3 hits this estate's public API, where every row carries the same source / as_of / verify_url fields. Command 1 is the network's own infrastructure — one polite call, no hammering.

# 1) ROAM's own explorer stats API (first-party origin) — as of 2026-09-02T16:28:35Z:
# ROAM's own public explorer stats endpoint — the exact URL the
# first_party_api rows carry as their verify_url (one polite call,
# this is the network's own infrastructure):
curl -s -H "User-Agent: kairos-check" "https://api.weroam.xyz/v1/explorer/stat/total/num" | python3 -m json.tool
# 2) Market reference (CoinGecko public API, id roam-token):
# CoinGecko public markets API (the endpoint family our collector
# reads for the price/supply/cap rows) — the coingecko.com browser
# coin page 403s plain curl, so the programmatic endpoint is given
# (note the id: roam-token; the bare "roam" id returns an empty list):
curl -s "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=roam-token" | python3 -m json.tool
# 2b) Human-view check of the verify_url target (the browser coin page 403s plain curl — that is the documented 403, the programmatic command above is the verification path):
curl -s -o /dev/null -w "%{http_code}\n" "https://www.coingecko.com/en/coins/roam-token"
# 3) This estate's public API row for ROAM:
curl -s "https://kairossignal.com/v1/network/ROAM" | python3 -m json.tool | head -60
Get this network as a data feed. Every number here is one API call away, with the same provenance fields. Pricing · Self-register for free $5 API credits — no card, no human · API reference. Machine-readable row for this network: /v1/network/ROAM.

Method & honesty notes. All counts are queries against the live ledger at generation time, not restamped copy — this page is regenerated by gen_deep_dive_roam.py and the hourly claim_drift_check.py run grades its claims against the live API like every other published surface. Comparability grades come from the served canonical-metric system via its own resolver: total_supply maps to token_supply_total (question-verified). The remaining series are ROAM-native market/telemetry metrics with no cross-network concept; grading them would be fabrication, so they are labelled "roam-native (unmapped)". The first-party split is declared, not smoothed: two series flow daily from ROAM's own explorer stats API, seven are a one-off 2026-08-09 deep snapshot of the same endpoint held as one row each with their payload-field mappings stated — never presented as flowing, never back-filled from probes. The CoinGecko circulating and total supply rows are different quantities (circulating vs total) and are never netted; the estate holds no on-chain supply read for ROAM, so no chain-vs-reference reconciliation exists or is implied — absence, not zero. The estate holds no DefiLlama and no GitHub rows — those sections are absent rather than zero-filled, and the queries rerun at every regeneration. The estate grades are published exactly as the engines served them, unflattering parts included; the dev-velocity A is the engines' output, not derived from any series on this page. Where a section has no data, it is absent — we do not publish zeros for gaps. Upstream probes run serially by this generator immediately before rendering: ROAM explorer stats API (weroam.xyz) HTTP 200; CoinGecko markets API (roam-token) HTTP 200; estate /v1/network/ROAM HTTP 200.

Machine-generated 2026-09-02T16:28:35Z by propintel/gen_deep_dive_roam.py · source of truth: default.depin_catalog, default.depin_onchain, default.depin_revision_ledger (ClickHouse, live at generation) · Kairos Signal — provenance or silence.