Error shape
detail is always present. code and context appear for domain-specific
errors where a machine-readable discriminator matters (evaluator
resolution failures, workflow step errors) — a generic validation error
just uses FastAPI/Pydantic’s standard detail array shape.
Status codes
A
404 on a resource that belongs to a different tenant is
indistinguishable from a 404 on a resource that doesn’t exist at all —
this is deliberate. Row-Level Security means the query never sees the
other tenant’s row to begin with, so there’s no information to leak.