> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lumina-org.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Live data

> Which numbers on lumina-org.com are live on-chain, which are historical, and how to verify them yourself.

LUMINA's public surfaces show **only numbers you can verify on-chain**. This page
explains what is live, the refresh cadence, and what is intentionally not shown yet.

## Live (instant on-chain)

Served by the aggregator `GET /api/v1/live-stats` (cached \~30s server-side) and
rendered with ISR (\~60s) on the home Hero.

| Stat                   | Source (verifiable)                                      | Refresh  |
| ---------------------- | -------------------------------------------------------- | -------- |
| \$LUMINA price         | `BondVault.priceOracle().getLuminaPrice()`               | \~30–60s |
| Bond reserve           | `LUMINA.balanceOf(bondVault)`                            | \~30–60s |
| Capacity used          | `BondVault.totalCommittedUSD` / `availableCapacityUSD()` | \~30–60s |
| Total supply           | `LUMINA.totalSupply()` (fixed 100M)                      | \~30–60s |
| Chain / block          | RPC `eth_blockNumber` (`/health`)                        | \~30s    |
| Premiums (per product) | `GET /products/{id}/quote`                               | ISR 1h   |
| API / sequencer status | `GET /health`                                            | on view  |

Per-user data (your policies, bonds, marketplace listings) is fetched live
client-side in the `/app` (operate) section.

## Historical (not shown until the indexer is live)

Cumulative/aggregate figures require event indexing (the Ponder indexer, currently
parked). Until it is revived they are **omitted, not faked**:

* Total \$LUMINA burned (cumulative)
* Active ClaimBonds count / bonds outstanding
* Policy volume (24h)
* Burn rate (30d)

The endpoints exist (`/api/v1/stats/*`) but are disabled until the indexer runs.

## Verify it yourself (30 seconds)

```bash theme={null}
# Aggregated live stats (every field names its on-chain source)
curl https://lumina-api-production-ac85.up.railway.app/api/v1/live-stats

# Or read directly from the chain
cast call <bondVault> "priceOracle()(address)" --rpc-url https://mainnet.base.org
cast call <oracle>    "getLuminaPrice()(uint256)" --rpc-url https://mainnet.base.org   # 18-dec USD
cast call <lumina>    "balanceOf(address)(uint256)" <bondVault> --rpc-url https://mainnet.base.org
cast call <lumina>    "totalSupply()(uint256)" --rpc-url https://mainnet.base.org       # 100M * 1e18
```

Resolve `<bondVault>`, `<lumina>` from `GET /health` (`contracts` map) so you are
never reading a stale address.

## Degradation

If the API/RPC is unreachable, the aggregator serves the last good snapshot flagged
`stale: true`, and the Hero shows a grey "LAST KNOWN" indicator instead of the green
"LIVE" dot — never a fabricated value.
