{
  "schema_version": "2026-06-02.reconciliation-rules.v1",
  "surface": "main_website",
  "owner": "main_website_release_desk",
  "purpose": "Machine-readable public reconciliation rules for incomplete, stale, conflicting, local-only, external, and owner-mismatched public data.",
  "updated": "2026-06-02",
  "reconciliation_rule": "When public data disagrees, the claim degrades to the strongest owner-published state that can be read.",
  "must_not_infer": [
    "current_chain_state",
    "current_block_height",
    "current_balance",
    "custody_proof",
    "admission_proof",
    "settlement_proof",
    "liquidity_proof",
    "sale_access",
    "reward_eligibility",
    "allocation",
    "production_value_movement",
    "economic_activation",
    "external_validation"
  ],
  "checks": [
    {
      "check_id": "owner_route_first",
      "trigger": "A main-domain summary, fallback JSON, crawler result, search result, or outside reference disagrees with an owning subdomain or chain-owned route.",
      "first_source": "owning_surface",
      "secondary_source": "main_domain_or_external_reference",
      "expected_public_state": "owner_route_controls_current_state",
      "downgrade_action": "Quote the owner-published state if readable; otherwise say current state cannot be verified.",
      "evidence_to_bring": [
        "owner route URL",
        "timestamp or freshness label",
        "conflicting route URL",
        "claim being downgraded"
      ],
      "must_not_infer": [
        "main_domain_authority_over_chain_state",
        "external_reference_authority_over_owner",
        "current_state_from_summary"
      ]
    },
    {
      "check_id": "static_fallback_vs_live_route",
      "trigger": "A static fallback value exists while the live or owner route is stale, unreachable, missing, or contradictory.",
      "first_source": "owner_route_or_hosted_feed",
      "secondary_source": "static_fallback",
      "expected_public_state": "fallback_or_cannot_verify",
      "downgrade_action": "Label the static value as fallback, cached, staged, or old; do not present it as live chain state.",
      "evidence_to_bring": [
        "fallback route",
        "owner route attempted",
        "updated field or missing freshness",
        "observed stale or unavailable state"
      ],
      "must_not_infer": [
        "live_height",
        "live_transactions",
        "current_balance",
        "market_activity",
        "economic_activation"
      ]
    },
    {
      "check_id": "release_package_vs_live_domain",
      "trigger": "A local release artifact, manifest, or source file differs from the live main-domain route.",
      "first_source": "live_domain_for_deployed_state",
      "secondary_source": "local_release_artifact",
      "expected_public_state": "deployed_state_and_package_state_are_separate",
      "downgrade_action": "Record the mismatch; quote local package proof only as local package proof until the live route matches.",
      "evidence_to_bring": [
        "local file hash",
        "live file hash or status",
        "release receipt",
        "route that differs"
      ],
      "must_not_infer": [
        "host_upload_completed",
        "dns_propagation_completed",
        "live_route_updated",
        "subdomain_deployed"
      ]
    },
    {
      "check_id": "schema_complete_enough",
      "trigger": "A public JSON file is missing required owner, evidence, freshness, stale behavior, or boundary fields.",
      "first_source": "data_catalog_and_release_checker",
      "secondary_source": "individual_json_file",
      "expected_public_state": "schema_incomplete_or_rejected",
      "downgrade_action": "Treat the dataset as incomplete for tooling; do not let consumers infer current state or stronger proof from partial fields.",
      "evidence_to_bring": [
        "dataset route",
        "missing field",
        "catalog row if present",
        "checker output if available"
      ],
      "must_not_infer": [
        "dataset_complete",
        "dataset_current",
        "chain_authority",
        "owner_acceptance"
      ]
    },
    {
      "check_id": "duplicate_or_conflicting_receipts",
      "trigger": "Two receipts, route records, or status rows claim different outcomes for the same public action.",
      "first_source": "owning_receipt_route",
      "secondary_source": "copied_summary_or_old_receipt",
      "expected_public_state": "conflicted_until_owner_closes",
      "downgrade_action": "Use disputed, duplicate, stale, or cannot verify until the owner publishes a terminal receipt or refusal.",
      "evidence_to_bring": [
        "receipt ids",
        "owner surface",
        "action id or route id",
        "timestamps",
        "terminal receipt or refusal if present"
      ],
      "must_not_infer": [
        "finality",
        "settlement",
        "custody",
        "destination_admission",
        "route_success"
      ]
    },
    {
      "check_id": "denom_or_metadata_mismatch",
      "trigger": "A wallet, registry, explorer, JSON file, or page shows a denom, chain id, address prefix, asset label, or test/main network label that disagrees with the owner route.",
      "first_source": "owner_chain_metadata",
      "secondary_source": "registry_wallet_explorer_or_page",
      "expected_public_state": "metadata_mismatch_until_owner_and_reference_align",
      "downgrade_action": "Do not treat the mismatched reference as safe current metadata; route readers to the owner metadata and say the reference needs correction.",
      "evidence_to_bring": [
        "owner metadata route",
        "reference route",
        "field that differs",
        "network label"
      ],
      "must_not_infer": [
        "accepted_listing",
        "wallet_safety",
        "mainnet_status_from_reference",
        "token_value",
        "spendability"
      ]
    },
    {
      "check_id": "outside_reference_scope",
      "trigger": "A repository, registry, indexer, wallet, article, post, or assistant answer references QUAD.",
      "first_source": "outside_owner_scope_plus_quad_owner_surface",
      "secondary_source": "copied_or_interpreted_summary",
      "expected_public_state": "outside_reference_is_scoped",
      "downgrade_action": "Quote the outside source only within its own published scope, then check QUAD owner surfaces for current state.",
      "evidence_to_bring": [
        "outside reference URL",
        "outside owner status or scope",
        "matching QUAD owner route",
        "claim being repeated"
      ],
      "must_not_infer": [
        "third_party_validation",
        "partnership",
        "audit_completion",
        "market_access",
        "economic_activation"
      ]
    },
    {
      "check_id": "lineage_break",
      "trigger": "A public data point lacks source route, owner, proof class, transformation rule, freshness, or refusal behavior.",
      "first_source": "source_map_and_data_catalog",
      "secondary_source": "unlabeled_public_value",
      "expected_public_state": "lineage_incomplete",
      "downgrade_action": "Do not rely on the value for action or current-state claims until owner, source, freshness, and boundary are restored.",
      "evidence_to_bring": [
        "unlabeled value",
        "missing lineage field",
        "candidate owner route",
        "claim being blocked"
      ],
      "must_not_infer": [
        "current_state",
        "balance_truth",
        "route_truth",
        "settlement_truth",
        "admission_truth"
      ]
    }
  ],
  "consumer_rules": [
    "Resolve owner route before fallback, crawler, or outside reference.",
    "Treat local package proof and live deployed proof as separate states.",
    "When freshness is missing, downgrade to stale or cannot verify.",
    "When sources conflict, preserve the weaker public claim until the owner publishes a terminal state.",
    "Never turn a mismatch into launch, custody, settlement, liquidity, reward, allocation, market, or external-validation claims."
  ]
}
