Varendo

Outcomes and diagnostics

Stable machine codes, bounded human messages, paths, retryability, and recovery behavior.

User-facing recovery follows receipt status first, then diagnostic code. Do not branch application logic on a human message.

Diagnostic shape

Type

TypeScript example
interface Diagnostic {
  code: string;
  message: string;
  path?: readonly (string | number)[];
  retryable: boolean;
  remedies?: readonly string[];
}

Recovery map

StatusUI behaviorAutomatic retry?
needs-inputShow the bounded choices or missing form field.No; wait for user input.
deniedRemove no-longer-authorized data and explain the access boundary.No.
cancelledUsually remain quiet when superseded; preserve current work.No.
unsupportedKeep the previous valid UI and show a supported alternative.No.
failedShow an actionable recovery near the affected Region.Only when retryable and host policy allow it.
Ambiguous actionShow uncertainty and a reconciliation control.Never retry blindly.

Privacy

Diagnostics and audit events use fixed codes and bounded metadata. Keep credentials, row payloads, prompts, URLs with secrets, free-form identity, and private reasoning out of logs and inspectors.