Automatic retry contract
The shared CLI client automatically retries authenticatedGET requests on HTTP 429, 503, and 504 responses, honoring Retry-After when present. It attempts token refresh once after a 401 response.
POST, PUT, PATCH, and DELETE requests are sent once. The CLI does not retry transient mutation responses because the server may have applied the change before the connection failed.
Agent workflow
- Read current state and capture UUIDs, canonical names, versions, or status.
- Send one mutation.
- If the command succeeds, inspect the returned state and perform the smallest verification read when needed.
- If validation, permission, or conflict is returned, correct that state rather than retrying unchanged.
- If timeout, connection failure, 503, or 504 occurs after a mutation was sent, treat the result as unknown. Read current state before deciding whether to retry.
Mutation families
Conflict behavior
A conflict is deterministic information, not a transient failure. Common decisions include:- Use
qualified_namewhen a bare name is ambiguous. - Use update only when the user requested an in-place change.
- Use release or version publish when the user requested a new version.
- Treat an already-created bulk component as skipped after verifying its identity.
- Do not bypass edit locks or ownership conflicts.
observal api escape hatch follows the same retry rules because it uses the shared authenticated client.
