The simulation that said no
simulateTransaction → response
"value": {
"err": "BlockhashNotFound",
"logs": [],
"unitsConsumed": 0
}Zero compute units and an empty log: none of the instructions ran. The RPC call itself succeeded, so the failure only shows up in value.err. Anything that asks a user to sign should check that field first, not the response status.