Skip to content
Praxis is in alpha. The supported API is praxis.io/alpha, and the contract can change while Praxis is in alpha.About the alpha contract

Errors and conditions

Praxis separates provider failures by whether retrying can make progress.

Throttling, transport interruptions, and provider availability failures are returned to Restate from inside the journaled callback. Restate retries them durably with its configured policy.

Validation, authorization, conflict, and confirmed not-found outcomes are wrapped as terminal errors inside the same callback. They stop retrying and preserve a user-actionable failure.

StatusMeaning
400Invalid request or provider validation
401Missing or expired credentials
403Access denied
404Requested resource not found
409Conflict, ambiguity, immutable change, or lifecycle policy
500Terminal internal failure

A status such as Ready describes the current lifecycle phase. Conditions add durable context about why that status is true.

Typical condition concepts include:

  • Readiness and latest successful observation
  • Detected drift and field differences
  • Whether correction was attempted
  • External deletion
  • Latest provider or lifecycle failure

A visibility-only resource may be Ready while a Drifted condition remains present. That is intentional: the resource is meeting the configured no-write policy while still exposing the difference from its stored declaration.