# Kairos Design Partner Brief — 2026-08-27

*Generated 2026-08-27T23:38:53Z — every number below is measured, carries its source and as-of time, and can be re-derived from the live API. Windows are stated; nothing is interpolated or forecast.*

## The verdict

**What is scarce here.** Both halves of a utilisation ratio — capacity AND consumption — on 6 networks: AKT, FIL, FLUX, IO, SC, TFT. Node counts are public everywhere; the denominator is not. This is the entire reason the ledger below can exist, and it is why coverage, not commentary, is what we sell.

**The sharpest thing the data says this week.** AKT gpus: utilisation 31.64% → 51.47%, with demand growing 63.73pp faster than capacity over the window.

Demand is outrunning capacity: the constraint is onboarding, not adoption, and utilisation headroom is the thing to underwrite.

**Also this week:** 6 live dashboard(s) serving a number that stopped moving; 148 of 219 token supplies confirmed by our own chain reads rather than taken on trust.

**Our last brief, re-measured:** 5 held, 1 reversed, 3 still frozen, 1 still withheld (section 7 — generated from the prior brief's JSON, so a reversal cannot be dropped).

*Every figure ships source, as-of and a verify URL; the utilisation halves are at GET /v1/supply?network=<sym> and this brief is machine-readable at GET /v1/brief. If you can refute a number here, we would rather publish the correction than the number.*

---

## 1. The Allocator's Ledger — capacity vs demand

> Is this network adding capacity faster than demand absorbs it?

| Network | Resource | Utilisation | Supply Δ | Demand Δ | Divergence | Read |
|---|---|---|---|---|---|---|
| IO | devices | 57.28% → 45.19% | 20.95% | -4.57% | 25.52pp | **overcapacity building** |
| AKT | storage_bytes | 7.98% → 7.14% | 15.32% | 3.27% | 12.05pp | **overcapacity building** |
| SC | storage_bytes | 25.85% → 27.64% | -1.33% | 5.51% | -6.84pp | demand outpacing supply |
| AKT | memory_bytes | 14.92% → 19.57% | -2.38% | 28.08% | -30.46pp | demand outpacing supply |
| AKT | compute_cores | 20.55% → 30.86% | -3.64% | 44.72% | -48.36pp | demand outpacing supply |
| AKT | gpus | 31.64% → 51.47% | 1.69% | 65.42% | -63.73pp | demand outpacing supply |

*Positive divergence = capacity onboarding faster than demand absorbs it — utilisation falls even while the headline node count rises. The exact number a growth chart hides.*

- Window starts 2026-08-06 00:37:10Z — about 11 days. One window, not a trend.
- Descriptive only. Nothing here is a forecast or a trading signal.
- Pairs come from the canonical ontology; units corrected via native_scale.
- Reported only when both halves have >=8 obs over >=3.0d.

**Withheld from the table above (and why):**

- **GLM providers** — base moved 907% in 21.0d — beyond 100%, which in a window this short indicates a coverage/collector change rather than a network change. Withheld until the series has a stable baseline; the raw halves remain queryable via the API.

**Pairs we investigated and decided NOT to publish:**

- **IO gpus** — io.net's GPU_TOTAL is NOT registered GPU supply — it equals DEVICES_ACTIVE exactly on every archived day (1,213/1,213 ... 1,199/1,199), and GPU_HIRED + GPU_IDLE == GPU_TOTAL exactly. So hired/total is a FILL RATE on the already-active pool, near-tautological, and it excludes every passive device. It reads 96.7% while true device utilisation (active/registered) is 46.2% and FALLING — registered devices grew 2,057 -> 2,594 (+26%) in 7 days while active stayed flat near 1,200. Publishing 96.7% beside Akash's 30.5% (utilisation of REGISTERED capacity) would invert the actual story: io.net is the network accumulating idle supply fastest, not the one running hottest.
- **NOS devices** — NOSANA HAS NO PUBLISHABLE DENOMINATOR (probed 2026-08-24, recorded so the next agent does not re-probe it). The numerator is free and clean — dashboard.k8s.prd.nos.ci/api/jobs?state=RUNNING reports totalJobs=947 running jobs and each Nosana job occupies exactly one node. The denominator is not: /api/nodes and /api/nodes/stats require an authorization header (401 with one, 422 without), and no unauthenticated sibling exposes a node count. Two tempting substitutes were REFUSED. (1) running + queued NODES from /api/markets: that per-market queue holds only IDLE nodes and is 0 across all 47 markets while 43 jobs sit QUEUED, so the denominator would equal the numerator by construction and publish a tautological 100%. (2) per-market access-SFT supply on Solana (231 for the nvidia-3070 market): a node joining three markets holds three SFTs and nothing burns them when it leaves, so the sum counts memberships and departed nodes, not live nodes. The numerator is collected anyway (collectors_clean/nosana_utilisation.py writes NOS JOBS_RUNNING/JOBS_QUEUED/MARKET_IDLE_NODES) so the pair can complete the day Nosana publishes a node count; no ratio until then.
- **SC devices** — SIACOIN'S DENOMINATOR IS CUMULATIVE, NOT LIVE (measured 2026-08-24). Both halves flow — SC_ACTIVE_HOSTS ~530, SC_TOTAL_HOSTS ~87,048 — so the pair LOOKS complete and would auto-publish a 0.6% utilisation figure. It is not a utilisation figure: TOTAL_HOSTS counts every host ever announced to the Sia network and is monotonically non-decreasing across all 19 archived days (87,032.7 → 87,048.0, never once falling), while ACTIVE_HOSTS moves both ways in the 514-556 band. A denominator that can only grow makes the ratio a function of the network's AGE, so it would fall forever regardless of how the network performs — the Storj denominator trap in a new costume. The numerator is honest and stays queryable; no ratio until Sia publishes a currently-announced host count.
- **STORJ storage_bytes** — STORJ PUBLISHES NO CAPACITY DENOMINATOR (measured 2026-08-24). Everything public is the numerator: stats.storjshare.io/data.json gives bytes stored by customers (53.4 PB) and the node-side footprint after erasure coding (92.2 PB, 1.73x), and the per-satellite node counts are memberships, not capacity — a node serving three satellites is counted three times, which is the same double-count that already inflated STORJ node totals. Nothing upstream states how many bytes the network could hold, so any utilisation ratio would need a denominator we invented. The numerator stays collected and is now correctly labelled storage_bytes_in_use rather than storage_bytes_total, which is what it had been resolving to.

**Entering this table as history accrues:** FIL (storage_bytes), FLUX (compute_cores), FLUX (memory_bytes), FLUX (storage_bytes), TFT (compute_cores), TFT (memory_bytes), TFT (storage_bytes). Both halves of each ratio are already flowing; the engine needs a few days of anchors before it will report a change, and we would rather show you the pipeline than a number computed from two samples.

## 2. Frozen feeds — the stale-dashboard detector

*2026-08-17: this is how we caught Akash's own API serving 30.5% GPU utilisation while the measured value was 55.8%.*

A first-party metric with exactly ONE distinct value across >=20 polls spanning >=5 days, while other metrics on the same network keep moving. The feed answers, but the number is stale at the source — invisible to uptime monitoring.

**267 frozen metrics** on networks whose other feeds are still moving.

**Should be moving daily — these are not:**

- **TFT `HRU_USED`** — unchanged at 0 for 10d across 215 polls, while 12 other metrics on TFT kept moving (source: threefold_gridproxy)
- **TFT `HRU_UTILISATION_PCT`** — unchanged at 0 for 10d across 215 polls, while 12 other metrics on TFT kept moving (source: threefold_gridproxy)
- **GRASS `daily_gb_collected`** — unchanged at 96950 for 9d across 239 polls, while 1 other metric on GRASS kept moving (source: first_party_api)
    - ✅ **Re-queried upstream live while writing this brief**: `https://api.getgrass.io/networkStats?input=%7B%22cluster%22%3A%22mainnet%22%7D` returned `96950` — upstream itself is serving the same static value — the freeze is at the source, not in our collector.
- **GRASS `daily_gb_multimodal`** — unchanged at 86474 for 6d across 149 polls, while 1 other metric on GRASS kept moving (source: first_party_api)
- **GRASS `daily_gb_text`** — unchanged at 1676 for 6d across 149 polls, while 1 other metric on GRASS kept moving (source: first_party_api)
- **GLM `gpus_online`** — unchanged at 0 for 5d across 128 polls, while 4 other metrics on GLM kept moving (source: first_party_api)

**Frozen but plausibly static (listed for completeness, not alarm):**

- FET `inflation` — 10d at 0.03
- NYM `bonded_tokens` — 10d at 25834600.005761
- DVPN `inflation` — 10d at 0.1
- KYVE `bonded_validators` — 10d at 24
- NYM `onchain_total_supply` — 10d at 1000000000
- DVPN `bonded_validators` — 10d at 52
- NYM `bonded_validators` — 10d at 16
- AKT `inflation` — 10d at 0.04

## 3. Supply verifiability — what we can confirm on-chain ourselves

Chain-read total supply divided by the aggregator's reported total supply, same day. Decimals are normalised by the collectors. A ratio below 1 usually means the token also lives on chains we do not read; a ratio above 1 means the aggregator is understating.

**148 of 219 networks reconcile to within 1% — those figures are independently confirmed, not taken on trust. The rest are listed with the exact contract we read so you can check in one click.**

*A low ratio is a statement about ONE deployment on ONE chain, not a claim that the aggregator is wrong. Multi-chain tokens (native chain + bridged ERC-20) legitimately show low ratios: e.g. POKT and BTT are native elsewhere and only their wrapped portion is readable on the chain we poll. Verified 2026-08-24 that our reads are faithful to the contract: RIZ reads 100,000 on 0x058d411a..., byte-identical to the explorer's own figure for that contract.*

| Network | Chain read | Aggregator says | Verifiable | Contract we read |
|---|---|---|---|---|
| RIZ | 100,000 (evm_blockscout) | 4,989,887,900 | 0.0% | [0x058d411a…](https://eth.blockscout.com/token/0x058d411ab9911f90c74f471bdc9d2bb4cf9b309c) |
| BDX | 4,468,726 (bsc_rpc) | 9,939,281,945 | 0.0% | [0x9d10a1ec…](https://bscscan.com/token/0x9d10a1ec41fe7878429bb457e31f9b050d38c633) |
| GENE | 261,413 (bsc_rpc) | 100,000,000 | 0.3% | [0x9df46546…](https://bscscan.com/token/0x9df465460938f9ebdf51c38cc87d72184471f8f0) |
| POKT | 15,694,093 (evm_blockscout) | 2,351,355,446 | 0.7% | [0x764a726d…](https://eth.blockscout.com/token/0x764a726d9ced0433a8d7643335919deb03a9a935) |
| DEUS | 8,693,741 (solana_rpc) | 1,000,000,000 | 0.9% | [7JoGUTeaXk…](https://solscan.io/token/7JoGUTeaXkjcMGa6xJP2idYNYiLreto1WnsACHnpw3Gd) |
| OORT | 20,000,000 (evm_blockscout) | 1,998,900,000 | 1.0% | [0x5651fa7a…](https://eth.blockscout.com/token/0x5651fa7a726b9ec0cad00ee140179912b6e73599) |
| EWT | 917,463 (evm_blockscout) | 81,071,825 | 1.1% | [0x178c820f…](https://eth.blockscout.com/token/0x178c820f862b14f316509ec36b13123da19a6054) |
| OCTA | 1,173,602 (evm_blockscout) | 44,907,921 | 2.6% | [0xfa704148…](https://eth.blockscout.com/token/0xfa704148d516b209d52c2d75f239274c8f8eaf1a) |
| NMT | 3,856,323 (evm_blockscout) | 143,520,004 | 2.7% | [0x03aa6298…](https://eth.blockscout.com/token/0x03aa6298f1370642642415edc0db8b957783e8d6) |
| BTT | 36,542,206,310,204 (evm_blockscout) | 990,000,000,000,000 | 3.7% | [0xc6699281…](https://eth.blockscout.com/token/0xc669928185dbce49d2230cc9b0979be6dc797957) |
| SDM | 37,781,538 (evm_blockscout) | 1,000,000,000 | 3.8% | [0x9cfe02eb…](https://base.blockscout.com/token/0x9cfe02eb040c6f5718126128dbba0c1d364d9c07) |
| NTMPI | 19,055,147 (evm_blockscout) | 399,963,020 | 4.8% | [0x53be7be0…](https://eth.blockscout.com/token/0x53be7be0ce7f92bcbd2138305735160fb799be4f) |
| LOOPIN | 3,235,636 (evm_blockscout) | 56,526,875 | 5.7% | [0x975da7b2…](https://eth.blockscout.com/token/0x975da7b2325f815f1de23c8b68f721fb483b8071) |
| SLC | 6,075,929,002 (evm_blockscout) | 98,797,933,055 | 6.2% | [0x6bd83abc…](https://base.blockscout.com/token/0x6bd83abc39391af1e24826e90237c4bd3468b5d2) |
| GNUS | 1,000,000 (evm_blockscout) | 15,193,848 | 6.6% | [0x61457703…](https://eth.blockscout.com/token/0x614577036f0a024dbc1c88ba616b394dd65d105a) |

## 4. Whale netflow extremes — exchange wallet flows

First difference of summed proof-of-reserve wallet balances across a FIXED exchange set (DefiLlama-tracked; Coinbase/Kraken publish no wallets and are absent). Flagged when the latest daily flow sits outside the middle 90% of its own ~90-day history.

- **STX** 2026-08-27: +26.915% of tracked balance (top 5% of 94d) — Coins arriving on tracked exchange wallets
- **DOT** 2026-08-27: -1.646% of tracked balance (bottom 5% of 90d) — Coins leaving tracked exchange wallets (cannot be market-sold from cold storage)
- **STETH** 2026-08-27: -0.863% of tracked balance (bottom 5% of 92d) — Coins leaving tracked exchange wallets (cannot be market-sold from cold storage)

## 5. Concentration watch — Solana holder concentration

*Token ACCOUNTS, not owners — pools, treasuries and exchange wallets count, so this is an upper-bound concentration proxy. Series began 2026-08-24; week-over-week deltas appear as the baseline accrues.*

- **STAR**: top-10 accounts hold 99.7% (top-1: 28.6%)
- **PULSE**: top-10 accounts hold 99.4% (top-1: 27.5%)
- **GGRID**: top-10 accounts hold 99.2% (top-1: 83.9%)
- **ROVR**: top-10 accounts hold 98.0% (top-1: 20.1%)
- **ACRON**: top-10 accounts hold 96.4% (top-1: 82.0%)
- **PHY**: top-10 accounts hold 95.7% (top-1: 42.4%)
- **CPU**: top-10 accounts hold 95.0% (top-1: 73.7%)
- **BLESS**: top-10 accounts hold 94.6% (top-1: 30.0%)
- **AIDD**: top-10 accounts hold 93.7% (top-1: 48.9%)
- **QUIVER**: top-10 accounts hold 93.6% (top-1: 66.0%)

## 6. Supply movers — first-party telemetry, 7 days

First-party supply telemetry only (tier=supply_telemetry). Latest value vs the value ~8-15 days ago; moves >15% shown. Single-window description, not a trend.

- **POKT NOT_BONDED_TOKENS**: +7745.5% (2.19489e+10 → 1.722e+12, as of 2026-08-26)
- **XCH DL_FEES_24H_USD**: +235.1% (1.51 → 5.06, as of 2026-08-26)
- **NODE DL_REV_7D_USD**: +231.4% (806 → 2671, as of 2026-08-26)
- **NODE DL_FEES_7D_USD**: +231.4% (806 → 2671, as of 2026-08-26)
- **ATH DL_REV_7D_USD**: +160.0% (267466 → 695532, as of 2026-08-26)
- **ATH DL_FEES_7D_USD**: +160.0% (1.33733e+06 → 3.47766e+06, as of 2026-08-26)
- **DATA BYTES_PER_SEC**: +155.2% (618511 → 1.57871e+06, as of 2026-08-26)
- **TFT DEDICATED_NODES_ONLINE**: +147.9% (71 → 176, as of 2026-08-26)
- **AUKI DL_FEES_30D_USD**: +126.8% (1286 → 2917, as of 2026-08-26)
- **AUKI DL_REV_30D_USD**: +126.8% (1286 → 2917, as of 2026-08-26)
- **MAWARI NETWORK_UTILIZATION_PCT**: +124.0% (1.9242e-08 → 4.30925e-08, as of 2026-08-26)
- **MAWARI AVG_BLOCK_TIME_MS**: +114.9% (10948 → 23526, as of 2026-08-26)
- **FIL BASE_FEE**: -100.0% (728951 → 100, as of 2026-08-26)
- **SN36 SUBNET_NEURONS**: -98.8% (256 → 3, as of 2026-08-26)
- **XCH DL_FEES_7D_USD**: -95.9% (847.59 → 35.07, as of 2026-08-26)
- **FLOCK DL_FEES_7D_USD**: -86.9% (476.8 → 62.47, as of 2026-08-26)
- **FLOCK DL_REV_7D_USD**: -86.9% (476.8 → 62.47, as of 2026-08-26)
- **STOS META_NODES**: -85.7% (7 → 1, as of 2026-08-26)
- **ATH DL_REV_30D_USD**: +85.3% (656184 → 1.21564e+06, as of 2026-08-26)
- **ATH DL_FEES_30D_USD**: +85.3% (3.28093e+06 → 6.07822e+06, as of 2026-08-26)

## 7. The track record — last week's brief, re-measured

Every claim in the previous brief, re-measured today by the same code that produced it. Generated mechanically from the prior brief's JSON: reversals cannot be dropped and wins cannot be added by hand.

*Grading the brief of 2026-08-24.* **5 HELD** · **1 REVERSED** · **3 STILL FROZEN** · **1 STILL WITHHELD**

| Claim we published | Outcome | Re-measured today |
|---|---|---|
| IO devices: overcapacity building (21.12pp, utilisation 46.87%) | **HELD** | now overcapacity building at 25.52pp, utilisation 45.19% (-1.68pp week-on-week) |
| AKT storage_bytes: overcapacity building (10.08pp, utilisation 7.22%) | **HELD** | now overcapacity building at 12.05pp, utilisation 7.14% (-0.08pp week-on-week) |
| SC storage_bytes: balanced (-4.25pp, utilisation 26.95%) | **REVERSED** | now demand outpacing supply at -6.84pp, utilisation 27.64% (+0.69pp week-on-week) |
| AKT compute_cores: demand outpacing supply (-19.93pp, utilisation 24.78%) | **HELD** | now demand outpacing supply at -48.36pp, utilisation 30.86% (+6.08pp week-on-week) |
| AKT memory_bytes: demand outpacing supply (-28.1pp, utilisation 19.32%) | **HELD** | now demand outpacing supply at -30.46pp, utilisation 19.57% (+0.25pp week-on-week) |
| AKT gpus: demand outpacing supply (-54.93pp, utilisation 48.7%) | **HELD** | now demand outpacing supply at -63.73pp, utilisation 51.47% (+2.77pp week-on-week) |
| TFT `HRU_USED` frozen 10d at 0 | **STILL FROZEN** | unchanged again this week at 0 |
| GRASS `daily_gb_collected` frozen 10d at 96950 | **STILL FROZEN** | unchanged again this week at 96950 |
| TFT `HRU_UTILISATION_PCT` frozen 10d at 0 | **STILL FROZEN** | unchanged again this week at 0 |
| GLM providers withheld as implausible | **STILL WITHHELD** | the implausible base is still inside the window |

## 8. The call sheet — the questions these numbers earn you

Each question is generated from a measured row in this brief and carries that row's number. No question appears here that the data above does not support.

**1. IO team / IO allocation**
> You added 20.95% more devices capacity while demand moved -4.57% — utilisation fell 12.09pp. What is the committed demand pipeline that absorbs the capacity already onboarded, and what does the emission schedule cost per idle unit until it does?

*Basis: devices utilisation 57.28% → 45.19%, capacity +20.95% vs demand -4.57%*

**2. AKT team / AKT allocation**
> You added 15.32% more storage_bytes capacity while demand moved 3.27% — utilisation fell 0.84pp. What is the committed demand pipeline that absorbs the capacity already onboarded, and what does the emission schedule cost per idle unit until it does?

*Basis: storage_bytes utilisation 7.98% → 7.14%, capacity +15.32% vs demand 3.27%*

**3. SC team / SC allocation**
> Demand for storage_bytes grew 5.51% against -1.33% capacity — utilisation is up to 27.64%. What is the onboarding constraint (hardware, staking cost, geography), and at what utilisation does pricing or QoS start to bind?

*Basis: storage_bytes utilisation 25.85% → 27.64%, demand +5.51% vs capacity -1.33%*

**4. AKT team / AKT allocation**
> Demand for memory_bytes grew 28.08% against -2.38% capacity — utilisation is up to 19.57%. What is the onboarding constraint (hardware, staking cost, geography), and at what utilisation does pricing or QoS start to bind?

*Basis: memory_bytes utilisation 14.92% → 19.57%, demand +28.08% vs capacity -2.38%*

**5. AKT team / AKT allocation**
> Demand for compute_cores grew 44.72% against -3.64% capacity — utilisation is up to 30.86%. What is the onboarding constraint (hardware, staking cost, geography), and at what utilisation does pricing or QoS start to bind?

*Basis: compute_cores utilisation 20.55% → 30.86%, demand +44.72% vs capacity -3.64%*

**6. AKT team / AKT allocation**
> Demand for gpus grew 65.42% against 1.69% capacity — utilisation is up to 51.47%. What is the onboarding constraint (hardware, staking cost, geography), and at what utilisation does pricing or QoS start to bind?

*Basis: gpus utilisation 31.64% → 51.47%, demand +65.42% vs capacity 1.69%*

**7. TFT team / their public dashboard**
> Your `HRU_USED` has served exactly one value, 0, for 10 days across 215 of our polls, while 12 other metrics on TFT kept moving. When did that figure last recompute, and is anything downstream of it — grant reporting, rewards, the investor deck — reading it as live?

*Basis: `HRU_USED` = 0 across 215 polls over 10d*

**8. TFT team / their public dashboard**
> Your `HRU_UTILISATION_PCT` has served exactly one value, 0, for 10 days across 215 of our polls, while 12 other metrics on TFT kept moving. When did that figure last recompute, and is anything downstream of it — grant reporting, rewards, the investor deck — reading it as live?

*Basis: `HRU_UTILISATION_PCT` = 0 across 215 polls over 10d*

**9. GRASS team / their public dashboard**
> Your `daily_gb_collected` has served exactly one value, 96950, for 9 days across 239 of our polls, while 1 other metric on GRASS kept moving. We re-queried https://api.getgrass.io/networkStats?input=%7B%22cluster%22%3A%22mainnet%22%7D while writing this and got the same value. When did that figure last recompute, and is anything downstream of it — grant reporting, rewards, the investor deck — reading it as live?

*Basis: `daily_gb_collected` = 96950 across 239 polls over 9d*

**10. GRASS team / their public dashboard**
> Your `daily_gb_multimodal` has served exactly one value, 86474, for 6 days across 149 of our polls, while 1 other metric on GRASS kept moving. When did that figure last recompute, and is anything downstream of it — grant reporting, rewards, the investor deck — reading it as live?

*Basis: `daily_gb_multimodal` = 86474 across 149 polls over 6d*

**11. RIZ team**
> We can independently confirm 0.0% of your reported total supply on 0x058d411ab9911f90c74f471bdc9d2bb4cf9b309c. Which contracts hold the remainder, so the full float is verifiable without taking an aggregator's word for it?

*This is a coverage question, not an allegation: a multi-chain token legitimately holds supply on chains we do not read. The point of asking is to make the full float verifiable rather than reported.*

*Basis: chain read 100,000 vs aggregator 4,989,887,900 (0.0% verifiable on eth)*

**12. BDX team**
> We can independently confirm 0.0% of your reported total supply on 0x9d10a1ec41fe7878429bb457e31f9b050d38c633. Which contracts hold the remainder, so the full float is verifiable without taking an aggregator's word for it?

*This is a coverage question, not an allegation: a multi-chain token legitimately holds supply on chains we do not read. The point of asking is to make the full float verifiable rather than reported.*

*Basis: chain read 4,468,726 vs aggregator 9,939,281,945 (0.0% verifiable on bsc)*


---
*Kairos Signal — provenance or silence. Verify any value: every API row ships source, as_of and a verify URL. https://kairossignal.com*