Sudont distinguishes freshness from cache warmth.Documentation Index
Fetch the complete documentation index at: https://docs.sudont.xyz/llms.txt
Use this file to discover all available pages before exploring further.
The freshness states described below reference Flashblocks/Base, which is
EVM-side roadmap material. The current SVM hot-path runs against
LiteSVM-replayed mainnet state; the Flashblocks-aware enforcement rules apply
to the planned EVM engine.
Freshness states
FLASHBLOCKS_PENDINGUse only when the local node view is backed by Flashblocks-aware pending data.PENDING_UNCONFIRMEDLocal pending state exists, but there is no Flashblocks confidence attached.SEALED_LATESTSimulation ran against the latest sealed block.DEGRADEDSimulation required fallback behavior or could not establish the intended state view cleanly.
Confidence states
HIGHPrehydration succeeded against the intended node-backed view with useful access discovery.MEDIUMPrehydration succeeded, but coverage is narrower than ideal.LOWFallback behavior was required or access discovery was weak.UNKNOWNSudont cannot describe the reliability of the state view.
Enforcement rules
- Send mode is pending-first.
- If policy requires pending state,
SEALED_LATESTandDEGRADEDmust be denied. - If policy requires Flashblocks, anything other than
FLASHBLOCKS_PENDINGmust be denied. - If policy is fail-closed,
LOWorUNKNOWNconfidence must be denied. - Diagnose mode may continue on
SEALED_LATESTorDEGRADED, but the freshness and confidence labels must be exposed in diagnostics.
Current implementation notes
- The runtime now classifies stale local heads as
DEGRADEDwhen the sealed head timestamp exceeds the configured lag budget. - The runtime can emit
FLASHBLOCKS_PENDINGonly when Flashblocks mode is enabled and a livenewFlashblocksverifier feed is recent enough to match the local pending view. - If Flashblocks mode is enabled but the verifier feed is missing, stale, or mismatched against local pending state, Sudont falls back to
PENDING_UNCONFIRMED. - Access-list generation is a helper, not the source of truth. Node-backed account, code, and storage reads still hydrate the final in-memory DB.
- Hydration is request-scoped in the current sidecar. A new block does not mutate an already-running simulation; the next RPC request hydrates against the current pending/latest view and logs the account and storage-slot working set.

