Case
BlockchainSync.Update.State.failed(_:)
Sync stopped due to an error. The associated String is a human-readable reason for UI / logs (e.g., "fetching block at height 523: … not found"). Terminal.
case failed(String)
Discussion
Errors caught from a BlockSource conformer are wrapped with the operation context before reaching this case; raw error values are not preserved here. Catch BlockSourceError at the source itself if you need typed handling.