{
  "schema_id": "quad/public-data-provenance/v1",
  "chain_surface": "quad-core",
  "updated": "2026-06-02",
  "public_rule": "Every displayed public fact must name its source and evidence class. Testnet facts are not mainnet value, allocation, reward, endorsement, or production readiness.",
  "evidence_classes": [
    "static_config",
    "live_chain",
    "indexer_observed",
    "keeper_query_observed",
    "service_observed",
    "DA_attested"
  ],
  "facts": [
    {
      "fact_id": "chain_status",
      "display_surface": "home,status,network",
      "source_type": "rpc_proxy",
      "endpoint": "/status",
      "evidence_class": "live_chain",
      "stale_rule": "mark stale when fetch fails or node reports catching_up=true",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "block_height",
      "display_surface": "home,blocks,status",
      "source_type": "rpc_proxy",
      "endpoint": "/block",
      "evidence_class": "live_chain",
      "stale_rule": "mark unknown when latest block query fails",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "network_peers",
      "display_surface": "network,readiness",
      "source_type": "rpc_proxy",
      "endpoint": "/net_info",
      "evidence_class": "live_chain",
      "stale_rule": "mark single-node or unknown when net_info is unavailable",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "validator_set",
      "display_surface": "validators,readiness",
      "source_type": "rpc_proxy",
      "endpoint": "/validators",
      "evidence_class": "live_chain",
      "stale_rule": "mark unknown when validator query fails",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "chain_genesis",
      "display_surface": "genesis",
      "source_type": "rpc_proxy",
      "endpoint": "/genesis",
      "evidence_class": "live_chain",
      "stale_rule": "mark unavailable when genesis query fails",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "app_hash",
      "display_surface": "status,readiness",
      "source_type": "rpc_proxy",
      "endpoint": "/abci_info",
      "evidence_class": "live_chain",
      "stale_rule": "mark unknown when ABCI info fails",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "indexer_health",
      "display_surface": "home,status,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/health.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark stale when indexed height lags live height or update timestamp is old",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "public_data_freshness",
      "display_surface": "home,ledger,balances,receipts,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/freshness.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "use each fact row stale field; never infer freshness from timestamps alone",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "economic_summary",
      "display_surface": "home,ledger,balances",
      "source_type": "indexer_json",
      "endpoint": "/index/summary.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark stale when indexer health is stale",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "recent_blocks",
      "display_surface": "blocks",
      "source_type": "indexer_json",
      "endpoint": "/index/blocks.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark stale when block sample is older than indexer health",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "recent_transactions",
      "display_surface": "ledger,receipts",
      "source_type": "indexer_json",
      "endpoint": "/index/txs.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark empty or stale when tx indexer fails",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "route_receipt_flags",
      "display_surface": "ledger,receipts,balances",
      "source_type": "indexer_json",
      "endpoint": "/index/txs.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark pending when indexed txs contain no route flags for the current window",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "invoice_payable_status",
      "display_surface": "receipts,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/oracle-liabilities.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark pending when oracle liability admissions are empty; mark stale when the liability index is absent or older than indexer health",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "invoice_journey_status",
      "display_surface": "receipts,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/invoices.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "show each lifecycle state as observed, empty_current, pending_current, not_observed_current_window, or unavailable; never infer payment success from liability intake alone",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "reward_claim_preview",
      "display_surface": "receipts,balances,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/rewards.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark empty when no distributor reward basket rows exist; preserve each reward output denom and show receipt/refusal observations separately",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "governance_posture",
      "display_surface": "readiness,boundary",
      "source_type": "indexer_json",
      "endpoint": "/index/governance.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark pending when governance classes or maturity query is unavailable; never present governance visibility as discretionary control",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "validator_health",
      "display_surface": "validators,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/validator-health.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark empty when no validators are returned; missed-signing feedback is bounded to the indexed CometBFT commit window",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "relayer_gas_float",
      "display_surface": "readiness,boundary",
      "source_type": "indexer_json",
      "endpoint": "/index/relayer-gas-float.json",
      "evidence_class": "static_config",
      "stale_rule": "mark launch-blocked until each relayer domain has real wallet address, starting balance, gas denom, packet or tx receipt, and reimbursement receipt evidence",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "relayer_gas_float_ledger",
      "display_surface": "readiness,boundary",
      "source_type": "indexer_json",
      "endpoint": "/index/relayer-gas-ledger.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "show wallet, balance, packet or transaction, and reimbursement evidence rows when present; remain awaiting funding when rows are empty or incomplete",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "relayer_backlog",
      "display_surface": "readiness,network",
      "source_type": "indexer_json",
      "endpoint": "/index/relayer-backlog.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "show pending, acked, failed, timeout, and expired-pending packet counts from x/bridge provider packet state; mark harness lanes as harness evidence, not production readiness",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "provider_journey",
      "display_surface": "readiness,receipts",
      "source_type": "indexer_json",
      "endpoint": "/index/provider-journey.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "show provider registration, packet, yield admission, and distributor visibility separately; harness providers must remain marked as harness and must not be promoted to production readiness",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "bridgechain_delivery_receipts",
      "display_surface": "receipts,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/bridgechain-deliveries.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "show Bridgechain delivery receipts as quarantine-first evidence; never infer Treasury admission, Alloc routing, Mint admission, or final value acceptance from delivery alone",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "vault_failure_telemetry",
      "display_surface": "home,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/vault-failures.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "derive only from public refused transaction logs and public error classes; mark empty_current when no vault, settlement, reserve, or owner-vault failure is indexed in the current transaction window",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "reward_output_manifest",
      "display_surface": "readiness,receipts,balances",
      "source_type": "indexer_json",
      "endpoint": "/index/reward-output-manifest.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "preserve provider/source denom and reward output denom separately; show Distributor basket separately and never collapse user yield into one denom",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "alloc_pending_routes",
      "display_surface": "readiness,balances",
      "source_type": "indexer_json",
      "endpoint": "/index/alloc-pending-routes.json",
      "evidence_class": "keeper_query_observed",
      "stale_rule": "show Alloc-held flagged routes separately from Treasury NAV and user balances; a pending route may be a correct sleep state when worthiness, dust, receiver state, or cadence refuses execution",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "foundation_can_pay",
      "display_surface": "readiness,receipts,balances",
      "source_type": "indexer_json",
      "endpoint": "/index/foundation-can-pay.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "show Foundation-held settlement balance, pending External Affairs instructions, cap gates, and keeper-enforced activation posture; never count Treasury NAV as spendable payment budget",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "public_financial_posture",
      "display_surface": "readiness,status,boundary",
      "source_type": "indexer_json",
      "endpoint": "/index/public-financial-posture.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "label public figures as testnet observations only; refuse to treat NAV, receivables, expected yield, native issuance, future Foundation share, unpaid provider credit, or shared website hosting as spendable closed value or general subsidy",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "public_admitted_asset_manifest",
      "display_surface": "treasury-admission,token-model,supply-policy",
      "source_type": "indexer_json",
      "endpoint": "/index/admitted-assets.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "publish denom, class, sector, oracle basis, current public value read, cap pressure, and evidence class without exposing internal haircut language or implying Treasury spend authority",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "emergency_degrade_path",
      "display_surface": "readiness,status",
      "source_type": "indexer_json",
      "endpoint": "/index/degrade.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "show each public degrade surface with state, reason, recovery owner, public update owner, and safe recovery action; never expose private mitigations or bypass authority",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "tracked_balances",
      "display_surface": "balances",
      "source_type": "indexer_json",
      "endpoint": "/index/accounts.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark stale when account snapshot timestamp is old",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "quarantine_resolution_status",
      "display_surface": "balances,receipts,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/quarantine.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark empty when lot count is zero; mark stale when quarantine index is absent or older than indexer health",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "module_metrics",
      "display_surface": "balances,ledger,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/metrics.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "mark unavailable when metrics packet is absent",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "coreexport_status",
      "display_surface": "ledger,readiness",
      "source_type": "indexer_json",
      "endpoint": "/index/coreexport.json",
      "evidence_class": "DA_attested",
      "stale_rule": "mark pending until export packet and receipt are present",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "public_claim_posture",
      "display_surface": "readiness,boundary",
      "source_type": "indexer_json",
      "endpoint": "/index/claims.json",
      "evidence_class": "indexer_observed",
      "stale_rule": "downgrade public claims when adjacent-chain, relayer, provider, receipt, or Core evidence is missing, stale, harness-only, or not locally admitted",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "faucet_health",
      "display_surface": "faucet",
      "source_type": "service_observed",
      "endpoint": "/faucet/health",
      "evidence_class": "service_observed",
      "stale_rule": "disable request UI when health fetch fails",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "faucet_request",
      "display_surface": "faucet",
      "source_type": "service_observed",
      "endpoint": "/faucet/request",
      "evidence_class": "service_observed",
      "stale_rule": "show refusal reason or tx hash returned by service",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    },
    {
      "fact_id": "static_chain_metadata",
      "display_surface": "rpc,wallet",
      "source_type": "static_file",
      "endpoint": "/chain.json",
      "evidence_class": "static_config",
      "stale_rule": "recheck before public wallet submission or chain-id reset",
      "fixture_allowed": false,
      "may_claim_mainnet_value": false,
      "public_safe": true
    }
  ]
}
