use a custom exception instead of `assert` in case reconciliation