Most stakeholders have spent their careers with deterministic software: same input, same output, failures are bugs. A Claude system breaks that intuition. Expectation management is therefore not a launch-day slide; it is a continuous loop of setting a measurable expectation, measuring against it, reviewing the results with the people affected, and adjusting either the system or the expectation. Scenario questions in this area tend to hinge on whether an answer promises something the technology or its dependencies cannot guarantee, and on whether disagreement and change are converted into measurements and process instead of argument.
Setting realistic expectations for a probabilistic system
Four facts should shape every expectation you set.
- Correctness is a rate, not a guarantee. Anthropic's documentation says structured outputs give guaranteed schema conformance, but that guarantee concerns the shape of the output. It does not make the content true. Its guidance on hallucinations says the recommended techniques significantly reduce, but do not eliminate, them, and that critical information should always be validated.
- Consistency has to be measured. Anthropic's engineering guidance on evaluating agents distinguishes pass@k (at least one of k attempts succeeds) from pass^k (all k attempts succeed). They can diverge sharply as k grows, and the second is the one that matters for customer-facing reliability.
- Do not promise determinism through sampling settings. Anthropic's deprecations page notes that on some newer models, non-default temperature, top_p or top_k values return an error, so “set temperature to zero” is not a dependable consistency plan.
- Behaviour is tied to a configuration. Model weights are fixed per model ID, but Anthropic notes that surrounding serving infrastructure can change and occasionally cause minor differences, and a move to a new model ID can change behaviour more. Expectations therefore expire unless they are re-verified (lesson 5.5).
Express expectations as measured rates on a defined test set, with the review process that catches the residual errors, and say when they will be re-measured.
SLIs, SLOs and SLAs for a Claude system
The Google SRE book defines a service level indicator (SLI) as a carefully defined quantitative measure of some aspect of the service, a service level objective (SLO) as a target value or range for an SLI, and a service level agreement (SLA) as a contract with consequences for meeting or missing the SLOs it contains. If there is no explicit consequence, you are almost certainly looking at an SLO. The point for Claude systems is that “working” has more than one dimension, and each has a different owner and mechanism.
| Layer | Example SLIs | Mostly determined by |
|---|---|---|
| Service | Share of requests answered successfully within a timeout; end-to-end latency percentile; capacity headroom | Your retries, timeouts, queues and fallbacks, plus the dependency's availability and your rate limits |
| Quality | Task success rate on a labelled sample; schema-validity rate; human override or rejection rate; escalation rate; pass^k consistency | Prompt, model, retrieval, validation and review design |
| Cost | Cost per completed task; spend against the monthly budget or spend limit | Model choice, effort settings, caching, batching, traffic mix |
A system can be fully available and still wrong too often, so an availability-only SLA says nothing about what users care about.
Key concept
Commit externally only to what you can measure and control. Derive the service SLO from your dependency's documented behaviour plus your own resilience design; define the quality SLO as a rate on an agreed test set with a named review process; keep the internal SLO tighter than anything promised externally (the SRE book calls this a safety margin); and never sign an SLA stricter than the combination of your dependencies and fallbacks can support.
What your dependencies actually promise
Read the vendor's documentation before you write a number into a contract. Anthropic's service-tier documentation describes the standard tier as best-effort availability, and its rate-limit documentation describes limits as maximum allowed usage, not guaranteed minimums. The API documents transient errors you must design for: 429 for rate limits (with a retry-after header), 500 for internal errors, and 529 when the API is temporarily overloaded. The official SDKs retry transient failures with exponential backoff, twice by default. One 429 is different: reaching a monthly spend cap returns a 429 with no retry-after header and keeps failing until access resumes, so retrying does not help. A separate spend limit you set yourself returns a 400. Whether committed-capacity or uptime terms are available, and what they cover, changes over time; check the current service-tiers page and your contract.
The practical consequence is that your availability target is an engineering output: retries with backoff, timeouts, queues for asynchronous work, a defined degraded mode (for example, route to human handling or return a clearly labelled fallback), and capacity planning against your tier. Subscribe to the provider's status page.
Error budgets and agreeing the numbers
The SRE book is explicit that 100 percent is almost never the right target: the cost of each increment grows steeply and users rarely notice the difference. An error budget is the agreed room between perfect and the SLO. The SRE workbook adds the governance: product, development and operations must all agree that the SLO is worth meeting and what happens when the budget is spent (for example, prioritising reliability work or pausing risky changes), and the SLO should be reviewed often at first and less often once it proves appropriate. For a quality SLO the threshold is a business decision informed by the cost and reversibility of errors from discovery (lesson 5.1); you supply the measurement and the trade-offs.
Feedback loops that improve the system
A feedback channel is only useful if it has an owner, a cadence and a destination. Typical channels: in-product corrections, reviewer override logs, tagged support tickets, scheduled output sampling and a periodic stakeholder review. The destination for failures should be your eval set. Anthropic's guidance suggests starting small with tasks drawn from real failures and turning user-reported failures into test cases, so the suite reflects actual usage and effort goes where impact is highest. Every prompt or configuration change made in response to feedback then runs against the regression set, which prevents fixing one complaint by silently breaking three other cases. Close the loop by telling stakeholders what changed, and review at a cadence that matches maturity, for example weekly triage at launch and periodic SLO reviews afterwards.
Disagreement and scope change
Disagreement about quality (“this output is wrong” versus “it is fine”) should be turned into a measurement: add the contested examples to the labelled set, agree a rubric and grader, check how well reviewers agree with each other, and escalate to the decision owner named in discovery if the disagreement is really about risk appetite. Scope change (“can it also handle X?”) is a new requirement, not a tweak. Run a lightweight discovery, estimate the effect on quality, latency, cost and review load, extend the eval set, and decide explicitly whether the new capability gets its own objective or is labelled best-effort. Silently widening a prompt to absorb new work is how regressions and broken promises begin.
Common exam distractor
Be wary of answers that accept a stakeholder's demand for near-perfect accuracy or a fixed uptime figure as a contractual promise, that pass the vendor's availability through as your own SLA, or that define success as a single average metric. Also wrong: refusing to commit to anything because “AI is probabilistic”, and answering each complaint with an ad hoc prompt edit and no regression run. The best answer separates service, quality and cost objectives, bases them on measured evidence and documented dependency behaviour, agrees an error budget and policy, and routes feedback into the eval set.