Generated 2026-10-17T05:34:21Z from live ClickHouse queries against this estate's ledger. Point-in-time archive held for NKN: 37,069 observations · 44 distinct series · 5 upstream sources · first row 2026-08-09 17:15:20 · newest row 2026-10-17 04:51:55 · every one of the 37,069 rows carries a verify_url · 43 series refreshed in the last 24h (682 fresh rows). Nothing on this page is cached, estimated, or remembered.
5 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. NKN is one of the networks that DOES publish a first-party stats API — openapi.nkn.org/api/v1/statistics/counts (blockCount / txCount / addressCount for NKN mainnet) — and the estate collects it directly (source first_party_api, ~hourly) and re-snapshots it daily through the estate's own first-party collector. CoinGecko's market series and nknorg GitHub activity sit alongside. The token contract held for NKN is 0x5cf04716ba20127f1e2297addcf4b5035000c9eb.
| 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 ↗ |
| first_party_api | 4,914 | 3 | 4,914 | 2026-08-09 23:28:06 → 2026-10-17 04:34:01 | sample origin ↗ |
| geckoterminal_dex | 630 | 7 | 630 | 2026-09-25 00:52:48 → 2026-10-17 01:02:12 | sample origin ↗ |
| github | 378 | 9 | 378 | 2026-08-09 23:42:07 → 2026-10-16 18:29: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 NKN — and NKN's zero is a measured negative: the daily archive this estate holds for NKN — 1854 rows over 70 snapshots (2026-08-08 → 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), NKN's watched counters show nothing of the kind. Zero here is the live query result plus the measured trail below, not a gap — the ledger itself is at /v1/revisions?symbol=NKN (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=NKN 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 NKN. 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.
| Watchlist series held | Rows | Days | Source |
|---|---|---|---|
TX_COUNT | 70 | 70 | depin_first_party |
These are the actual counter trails the detector diffed for NKN, 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 come from NKN mainnet via the first-party collectors (depin_first_party snapshots and the first_party_api poller of openapi.nkn.org). A note on the tx counter's two spellings: TX_COUNT (depin_first_party) and tx_count (first_party_api) are snapshots of the same upstream counter taken hours apart each day — the table below renders the value of whichever wrote last for each snapshot date, and the two never disagree by more than a few hundred lifetime transactions.
BLOCK_COUNT — the NKN mainnet block-height counter (lifetime blocks mined):
| Snapshot date | Lifetime blocks | Source |
|---|---|---|
| 2026-08-08 | 9,632,452 | depin_first_party |
| 2026-08-09 | 9,636,076 | depin_first_party |
| 2026-08-10 | 9,639,783 | depin_first_party |
| 2026-08-11 | 9,643,438 | depin_first_party |
| 2026-08-12 | 9,647,125 | depin_first_party |
| 2026-08-13 | 9,650,806 | depin_first_party |
| 2026-08-14 | 9,654,524 | depin_first_party |
| 2026-08-15 | 9,658,255 | depin_first_party |
| 2026-08-16 | 9,662,036 | depin_first_party |
| 2026-08-17 | 9,665,787 | depin_first_party |
| 2026-08-18 | 9,669,514 | depin_first_party |
| 2026-08-19 | 9,673,257 | depin_first_party |
| 2026-08-20 | 9,677,005 | depin_first_party |
| 2026-08-21 | 9,680,709 | depin_first_party |
| 2026-08-22 | 9,684,439 | depin_first_party |
| 2026-08-23 | 9,688,170 | depin_first_party |
| 2026-08-24 | 9,691,892 | depin_first_party |
| 2026-08-25 | 9,695,591 | depin_first_party |
| 2026-08-26 | 9,699,335 | depin_first_party |
| 2026-08-27 | 9,703,065 | depin_first_party |
| 2026-08-28 | 9,706,811 | depin_first_party |
| 2026-08-29 | 9,710,559 | depin_first_party |
| 2026-08-30 | 9,714,315 | depin_first_party |
| 2026-08-31 | 9,718,017 | depin_first_party |
| 2026-09-01 | 9,721,785 | depin_first_party |
| 2026-09-02 | 9,725,529 | depin_first_party |
| 2026-09-03 | 9,729,247 | depin_first_party |
| 2026-09-04 | 9,732,974 | depin_first_party |
| 2026-09-05 | 9,736,697 | depin_first_party |
| 2026-09-06 | 9,740,452 | depin_first_party |
| 2026-09-07 | 9,744,196 | depin_first_party |
| 2026-09-08 | 9,747,905 | depin_first_party |
| 2026-09-09 | 9,751,665 | depin_first_party |
| 2026-09-10 | 9,755,394 | depin_first_party |
| 2026-09-11 | 9,759,151 | depin_first_party |
| 2026-09-12 | 9,762,907 | depin_first_party |
| 2026-09-13 | 9,766,666 | depin_first_party |
| 2026-09-14 | 9,770,440 | depin_first_party |
| 2026-09-15 | 9,774,210 | depin_first_party |
| 2026-09-16 | 9,777,978 | depin_first_party |
| 2026-09-17 | 9,781,741 | depin_first_party |
| 2026-09-18 | 9,785,532 | depin_first_party |
| 2026-09-19 | 9,789,294 | depin_first_party |
| 2026-09-20 | 9,793,023 | depin_first_party |
| 2026-09-21 | 9,796,760 | depin_first_party |
| 2026-09-22 | 9,800,550 | depin_first_party |
| 2026-09-23 | 9,804,351 | depin_first_party |
| 2026-09-24 | 9,808,096 | depin_first_party |
| 2026-09-25 | 9,811,935 | depin_first_party |
| 2026-09-26 | 9,815,710 | depin_first_party |
| 2026-09-27 | 9,819,488 | depin_first_party |
| 2026-09-28 | 9,823,291 | depin_first_party |
| 2026-09-29 | 9,827,066 | depin_first_party |
| 2026-09-30 | 9,830,832 | depin_first_party |
| 2026-10-01 | 9,834,589 | depin_first_party |
| 2026-10-02 | 9,838,320 | depin_first_party |
| 2026-10-03 | 9,842,081 | depin_first_party |
| 2026-10-04 | 9,845,847 | depin_first_party |
| 2026-10-05 | 9,849,601 | depin_first_party |
| 2026-10-06 | 9,853,348 | depin_first_party |
| 2026-10-07 | 9,857,150 | depin_first_party |
| 2026-10-08 | 9,860,926 | depin_first_party |
| 2026-10-09 | 9,864,719 | depin_first_party |
| 2026-10-10 | 9,868,515 | depin_first_party |
| 2026-10-11 | 9,872,297 | depin_first_party |
| 2026-10-12 | 9,875,978 | depin_first_party |
| 2026-10-13 | 9,879,611 | depin_first_party |
| 2026-10-14 | 9,883,130 | depin_first_party |
| 2026-10-15 | 9,886,914 | depin_first_party |
| 2026-10-16 | 9,890,713 | depin_first_party |
TX_COUNT / tx_count — the NKN mainnet lifetime transaction counter, the series class that produced real restatements for OVPP, AUKI, R1 and SOGNI elsewhere in the estate:
| Snapshot date | Lifetime transactions | Source |
|---|---|---|
| 2026-08-08 | 30,969,623 | depin_first_party |
| 2026-08-09 | 30,977,031 | depin_first_party |
| 2026-08-10 | 30,984,614 | depin_first_party |
| 2026-08-11 | 30,992,085 | depin_first_party |
| 2026-08-12 | 30,999,633 | depin_first_party |
| 2026-08-13 | 31,007,160 | depin_first_party |
| 2026-08-14 | 31,014,746 | depin_first_party |
| 2026-08-15 | 31,022,386 | depin_first_party |
| 2026-08-16 | 31,030,099 | depin_first_party |
| 2026-08-17 | 31,037,727 | depin_first_party |
| 2026-08-18 | 31,045,320 | depin_first_party |
| 2026-08-19 | 31,052,932 | depin_first_party |
| 2026-08-20 | 31,060,543 | depin_first_party |
| 2026-08-21 | 31,068,057 | depin_first_party |
| 2026-08-22 | 31,075,613 | depin_first_party |
| 2026-08-23 | 31,083,154 | depin_first_party |
| 2026-08-24 | 31,090,694 | depin_first_party |
| 2026-08-25 | 31,098,201 | depin_first_party |
| 2026-08-26 | 31,105,823 | depin_first_party |
| 2026-08-27 | 31,113,441 | depin_first_party |
| 2026-08-28 | 31,121,248 | depin_first_party |
| 2026-08-29 | 31,129,014 | depin_first_party |
| 2026-08-30 | 31,136,831 | depin_first_party |
| 2026-08-31 | 31,144,488 | depin_first_party |
| 2026-09-01 | 31,152,228 | depin_first_party |
| 2026-09-02 | 31,159,846 | depin_first_party |
| 2026-09-03 | 31,168,021 | depin_first_party |
| 2026-09-04 | 31,175,625 | depin_first_party |
| 2026-09-05 | 31,183,226 | depin_first_party |
| 2026-09-06 | 31,190,877 | depin_first_party |
| 2026-09-07 | 31,198,490 | depin_first_party |
| 2026-09-08 | 31,206,041 | depin_first_party |
| 2026-09-09 | 31,213,691 | depin_first_party |
| 2026-09-10 | 31,221,279 | depin_first_party |
| 2026-09-11 | 31,228,956 | depin_first_party |
| 2026-09-12 | 31,236,612 | depin_first_party |
| 2026-09-13 | 31,244,275 | depin_first_party |
| 2026-09-14 | 31,251,928 | depin_first_party |
| 2026-09-15 | 31,259,575 | depin_first_party |
| 2026-09-16 | 31,267,220 | depin_first_party |
| 2026-09-17 | 31,274,847 | depin_first_party |
| 2026-09-18 | 31,282,521 | depin_first_party |
| 2026-09-19 | 31,290,136 | depin_first_party |
| 2026-09-20 | 31,297,708 | depin_first_party |
| 2026-09-21 | 31,305,320 | depin_first_party |
| 2026-09-22 | 31,313,065 | depin_first_party |
| 2026-09-23 | 31,320,833 | depin_first_party |
| 2026-09-24 | 31,328,526 | depin_first_party |
| 2026-09-25 | 31,336,411 | depin_first_party |
| 2026-09-26 | 31,344,164 | depin_first_party |
| 2026-09-27 | 31,351,943 | depin_first_party |
| 2026-09-28 | 31,359,771 | depin_first_party |
| 2026-09-29 | 31,367,555 | depin_first_party |
| 2026-09-30 | 31,375,318 | depin_first_party |
| 2026-10-01 | 31,383,003 | depin_first_party |
| 2026-10-02 | 31,390,728 | depin_first_party |
| 2026-10-03 | 31,398,601 | depin_first_party |
| 2026-10-04 | 31,406,457 | depin_first_party |
| 2026-10-05 | 31,414,256 | depin_first_party |
| 2026-10-06 | 31,422,074 | depin_first_party |
| 2026-10-07 | 31,429,964 | depin_first_party |
| 2026-10-08 | 31,437,827 | depin_first_party |
| 2026-10-09 | 31,445,972 | depin_first_party |
| 2026-10-10 | 31,454,005 | depin_first_party |
| 2026-10-11 | 31,462,089 | depin_first_party |
| 2026-10-12 | 31,470,396 | depin_first_party |
| 2026-10-13 | 31,478,371 | depin_first_party |
| 2026-10-14 | 31,485,653 | depin_first_party |
| 2026-10-15 | 31,493,405 | depin_first_party |
| 2026-10-16 | 31,501,292 | depin_first_party |
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.
| Series (gauge / revaluation) | Backward moves observed | Snapshot rows held |
|---|---|---|
price_high_24h_usd | 35 | 58 |
fully_diluted_valuation_usd | 34 | 64 |
market_cap_usd | 34 | 64 |
price_usd | 34 | 64 |
price_from_atl_pct | 33 | 58 |
volume_24h_usd | 32 | 58 |
price_change_30d_pct | 23 | 58 |
price_change_14d_pct | 20 | 58 |
price_low_24h_usd | 20 | 58 |
market_cap_rank | 19 | 58 |
price_change_1h_pct | 18 | 58 |
market_cap_change_24h_pct | 17 | 58 |
market_cap_change_24h_usd | 17 | 58 |
price_change_24h_pct | 17 | 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 NKN 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,982,176 | 1,702,204 | -14.124% | 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 | 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,415,054 | 1,414,119 | -0.066% | 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,347 | 810,962 | -0.047% | 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 | 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,992,299 | 1,702,218 | -14.560% | 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,995,677 | 1,702,218 | -14.705% | 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 | 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,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,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,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,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,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,328 | 1,419,152 | -0.012% | 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–4 hit the upstream families the network-side rows came from; command 5 is the estate's graded network row; command 6 is the frozen daily snapshot of the ledger. One polite call per endpoint, no hammering.
# 1) The served revision feed for NKN — the same rows this page queried, live:
curl -s "https://kairossignal.com/v1/revisions?symbol=NKN" | 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) NKN's own first-party statistics API (the counters' origin — blockCount/txCount/addressCount):
curl -s -H "User-Agent: kairos-check" "https://openapi.nkn.org/api/v1/statistics/counts" | python3 -m json.tool
# 4) GitHub API for nknorg/nkn (the dev-velocity upstream family):
curl -s -H "User-Agent: kairos-check" "https://api.github.com/repos/nknorg/nkn" | python3 -m json.tool | head -30
# 5) This estate's public API row for NKN (grades + provenance):
curl -s "https://kairossignal.com/v1/network/NKN" | python3 -m json.tool | head -60
# 6) 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_nkn.py and the hourly claim_drift_check.py run grades its claims against the live API like every other published surface. The NKN revision count is the live result of SELECT count() FROM default.depin_revision_ledger WHERE network='NKN'; the page refuses to ship if the served /v1/revisions?symbol=NKN 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 NKN 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: openapi.nkn.org /api/v1/statistics/counts (the first_party_api upstream: blockCount / txCount / addressCount) HTTP 200; GitHub API nknorg/nkn (the github upstream family) HTTP 200; CoinGecko NKN page (browser-verified origin; 403 here is its bot wall) HTTP 403; estate /v1/revisions?symbol=NKN HTTP 200; estate /v1/network/NKN HTTP 200.
propintel/gen_revision_page_nkn.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.