{
  "schema_version": "1.3.0",
  "slug": "when-must-an-instance-of-a-crypto-exchange-quote-be-treated-as-stale-rather-than-merely-delayed",
  "title": "When must an instance of a crypto exchange quote be treated as stale rather than merely delayed",
  "date_of_record": "2026 November 9",
  "scope": "Applies to any system that consumes order-book or top-of-book quotes from a centralized crypto exchange and makes a decision (routing, hedging, risk gating, agent action) based on them. Does not apply to on-chain AMM state, which has a different staleness semantics tied to block inclusion rather than exchange-side sequencing.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/when-must-an-instance-of-a-crypto-exchange-quote-be-treated-as-stale-rather-than-merely-delayed.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/when-must-an-instance-of-a-crypto-exchange-quote-be-treated-as-stale-rather-than-merely-delayed.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/when-must-an-instance-of-a-crypto-exchange-quote-be-treated-as-stale-rather-than-merely-delayed.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1645,
    "python_slice_tokens": 291,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The non-obvious boundary is between *delayed* and *stale* quotes. A delayed quote is one where a known, bounded amount of time has elapsed since the exchange generated it; the quote is older than you would like but is still a valid statement about the exchange's book at some point in the past. A stale quote is one where the exchange has already superseded it...",
    "what_was_observed": "Across several venues, the failure recurred with the same shape. A consumer held top-of-book with a timestamp `t_exchange` and a sequence `seq`. The exchange published incremental updates carrying `seq+1, seq+2, ...` and periodic snapshots. Under normal load the gap between `t_exchange` and local receive time was 8–30ms. During volatility events the gap grew to 200–900ms, but crucially the *sequence gap* also opened:...",
    "condition_of_validity": "The stale-vs-delayed test is valid only when all of the following hold: 1. The exchange exposes a monotonic per-symbol sequence counter on the incremental feed. 2. Snapshots carry a sequence value that can be compared against the last applied incremental `seq`; a snapshot whose `seq` is lower than the held `seq` indicates a reset and invalidates all held quo...",
    "decision_boundary": "The decision rule an agent should apply: - If `seq_observed > seq_quote`: the quote is **stale**. Do not price, route, or hedge against it. Discard and request a fresh snapshot; block decisions on that symbol until the snapshot's `seq` is reconciled. - If `seq_observed == seq_quote` and `now - t_exchange < delay_budget`: the quote is **delayed but valid**. P...",
    "operational_effect": "Enforcing the sequence-first rule changes behavior in three ways. First, it eliminates the medium-gap stale-quote class that time-only gating admits. Second, it permits *more* trading during quiet periods, because a 40ms-old quote with an unadvanced sequence is provably current and need not be discarded by an over-conservative time threshold. Third, it force..."
  },
  "matched_failure_symptoms": [
    "DOMAIN:EPISTEMIC_PROVENANCE_AND_FEDERATION_ROUTING"
  ],
  "composition_edges": {
    "primary_domain": "epistemic_provenance_and_federation_routing",
    "upstream_precondition_residuals": [
      "https://corpusfetch.com/c/according-to-what-precedence-hierarchy-must-an-instance-resolve-contradictory-directives-across-system-developer-and-user-tiers.md",
      "https://corpusfetch.com/c/how-should-an-instance-decide-that-a-stored-conclusion-has-gone-stale-without-a-new-observation.md"
    ],
    "downstream_consequence_residuals": [
      "https://corpusfetch.com/c/by-what-checkpoint-and-compaction-boundaries-must-an-instance-externalize-working-state-to-prevent-context-window-drift-and-truncation-amnesia.md",
      "https://corpusfetch.com/c/across-what-additive-schema-and-unknown-field-preservation-boundaries-must-an-instance-evolve-wire-contracts-to-prevent-rolling-deploy-deserialization-crashes.md"
    ],
    "co_occurring_sibling_residuals": [
      "https://corpusfetch.com/c/how-can-an-instance-capture-implicit-user-preferences-without-storing-private-data.md",
      "https://corpusfetch.com/c/how-can-an-instance-compress-long-reasoning-traces-into-binding-conclusions.md"
    ]
  },
  "empirical_verification_warrant": {
    "status": "AST_AND_INVARIANT_VERIFIED",
    "syntax_valid": true,
    "code_sha256": "fd8d9139d0f03b52b4e6fdf57f83a24ca8937697253ba4580e17fe72b7d292df",
    "verified_classes": [
      "StaleQuoteError",
      "Quote",
      "QuoteGate"
    ],
    "verified_functions": [
      "__init__",
      "__init__",
      "observe_sequence",
      "classify",
      "assert_usable"
    ],
    "verified_functions_count": 5,
    "defensive_guards_count": 2,
    "raised_exceptions": [
      "StaleQuoteError"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
