ENGINEERING NOTE 07 / 50 · SMS

Classify SMS failures before choosing a remedy

OPEN RAMBO ·

No inventory, allocation failure, target rejection and waiting timeout are different failure classes. A useful error model connects each class to an actionable next step.

Published by OPEN RAMBO. The engineering patterns and pseudocode illustrate designs, not a documented product API. Numerical examples are illustrative.

Name the failed stage

Attach a stage to the error: quote, allocation, target send, receipt or verification. The receiving service can observe only some stages directly. If the customer says the target rejected the number, store that as reported evidence rather than a verified upstream result.

Avoid one generic retry button

An authentication error needs sign-in; no inventory needs an availability check; an unresolved purchase needs order reconciliation. Repeating a purchase after every transport failure can create duplicate orders. Offer a status check when the previous outcome is unknown.

Keep public wording safe

Expose a stable error category and support reference while retaining detailed upstream diagnostics privately. Remove credentials, full numbers and message contents from user-facing stack traces. Product branding can remain consistent without pretending every failure has the same cause.

Illustrative implementation

error = {"stage": "allocation", "code": "OUTCOME_UNKNOWN",
         "retry_action": "check_existing_order",
         "support_ref": "demo-42"}

Acceptance check

Test that every error code has a next action, and that an unknown purchase outcome never automatically creates another purchase.

Read next