igneum/scene/feed-contract.json
igneum-labs 2c58912211 Live proving feed: the page says when its shard states are stale, and a chain block with an empty plan reads "no shards in this block" (8 October 2026, main's order: the project lead wants to watch proving and shards in real time; a stale snapshot must read as stale). Reading of the day: /api/live's proven and paid states come from the Devnet 3 observer's own node on igneum-build-1 (igneum-observer-node-dn3, EVM 26850), not from hub-1; that node stopped crediting payouts at 23:57Z on 7 October (paidShards frozen at 7,304 while blocks carried 8,457 proof records by 03:00Z and hub-1 counted 11,861 by 08:56Z), and the page kept showing the paid total as fresh. site/lib/proving-health.mjs (tests known-failed first: "Cannot find module", then 10 green on build-2): stale when the observer's last status read is over 60 s old (status_at, new in the observer's live_state.proving), when the node's tip trails the newest block by over 300 DAA, or when blocks carried proof records in the last 10 minutes and no shard moved to verified or paid for 10 minutes (the blind-to-records class); a quiet chain is not stale for lack of credits. /api/live carries stale, stale_reason, status_age_s, tip_lag_daa, records_10m and last_change_at on proving (two more indexed readings; scene/feed-contract.json lists the keys; the recorded fixture carries them). /live: the Proven tile's line reads "proving feed stale: ..." in ember, else "... last credit N s ago"; the inspector's count adds "feed stale". Scene 2.0.7: a chain block whose plan is known (block.number set, carried as plan on the normalised block) and empty reads "no shards in this block"; loading and late stay for an unread plan (shard-words test, known-failed on 2.0.6). Gate: the health test joins the site unit-test line.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 09:12:56 +00:00

150 lines
2.7 KiB
JSON

{
"version": 1,
"doc": "scene/feed-contract.md: the one JSON shape the chain scene reads, from the observer's /api/live and from the miner app's api/live alike 8 October 2026: proving carries its own health beside the counts (stale, stale_reason, status_age_s, tip_lag_daa, records_10m, last_change_at; site/lib/proving-health.mjs): the observer's node can stop crediting payouts while the DAG feed stays live, and the page says so instead of showing a frozen paid total as fresh.",
"top": [
"ok",
"now",
"state",
"blocks",
"miners",
"events",
"finality",
"proving"
],
"top_extensions": [
"partial"
],
"state": [
"stale",
"age_s",
"network",
"node_version",
"height",
"block_count",
"header_count",
"blue_score",
"difficulty",
"hashes_per_second_estimate",
"peers",
"mempool",
"blocks_60s",
"blocks_per_second_60s",
"blocks_per_minute",
"miners_10m",
"observer_started_at",
"observer_lag_s",
"queue_depth",
"updated_at"
],
"state_extensions": [
"source",
"you_blocks",
"node"
],
"block": [
"hash",
"number",
"blue_score",
"daa",
"ts",
"rx",
"parents",
"chain",
"miner",
"color",
"locked",
"final",
"shards",
"proven"
],
"miner": [
"id",
"blocks",
"share",
"last_seen",
"engine"
],
"event": [
"ts",
"kind",
"text"
],
"finality": [
"supported",
"active",
"next_index",
"latest_locked_index",
"latest_locked_hash",
"latest_locked_blue_score",
"params",
"weights",
"checkpoints"
],
"checkpoint": [
"index",
"hash",
"blue_score",
"daa",
"state",
"signed",
"active",
"total",
"fraction_active",
"fraction_total",
"votes",
"voters",
"locked_at",
"updated_at"
],
"shard": [
"i",
"n",
"state",
"prover",
"lag",
"payout",
"pgas"
],
"proving_unsupported": [
"supported",
"reason"
],
"proving_supported": [
"supported",
"active",
"activation_daa",
"tip_daa",
"verifier",
"pool",
"paid_shards_total",
"shard_budget_pgas",
"blocks_10m",
"blocks_fully_proven_10m",
"shards_proven_10m",
"shards_paid_10m",
"median_proof_lag_s",
"provers_10m",
"stale",
"stale_reason",
"status_age_s",
"tip_lag_daa",
"records_10m",
"last_change_at"
],
"color": [
"blue",
"red",
"pending"
],
"shard_state": [
"planned",
"proving",
"verified",
"paid"
],
"checkpoint_state": [
"pending",
"locked"
],
"miner_id": "^[0-9a-f]{8}$"
}