ReorgDetectedException
class ReorgDetectedException(val address: String, val localHighest: Int, val serverMax: Int) : RuntimeException
Raised from inside the subscription flow when the indexer reports a highestTransactionId lower than what we have locally. Means the server's view of the chain went backwards (reorg, indexer DB wiped, dev localnet reset from genesis). SubscriptionManager catches this, wipes local state via performFullResync, and lets kotlinx.coroutines.flow.retryWhen restart the subscription cleanly from the new server truth.