Message strings are for humans and may change; codes are the contract.
Concepts
Errors
Stable machine codes — branch on code, never on message text.
Errors are JSON with a human message and, where it matters, a stable machine code:
Stable machine codes — branch on code, never on message text.