Uncertainty is a result
Unknown, temporary, and provider-blocked outcomes need documented handling. Do not flatten them into invalid.
Model the outcome separately
Use one field for the verification category and another for your application decision. This allows policy changes without rewriting the original evidence.
Preserve unknown categories
When a result is unfamiliar, use a review state and record a sanitized diagnostic reference. Never use a catch-all default that accepts any non-invalid string.
Keep results time-specific
Store when the check happened. A past usable result does not prove present reachability, and an inconclusive result does not establish permanent invalidity.
Before you enable this workflow
| Confirm | Why it matters |
|---|---|
| Production contract | Use documented fields, limits, and supported operations. |
| Failure policy | Decide what the application does when a check cannot complete. |
| Data boundaries | Keep credentials and customer data out of unnecessary logs. |