TLDR
Systems life cycle management is a general IT discipline - plan, develop, test, deploy, operate, maintain, retire - not an Anthropic invention; NIST's SDLC bulletin frames it as "the overall process of developing, implementing, and retiring information systems." NIST SDLC bulletin What this objective actually tests is mapping that generic skeleton onto concrete Claude-specific mechanics at three phases: test (evals as a first-class artifact), deploy (model IDs are pinned snapshots, not evergreen pointers, plus versioned agent rollback), and operate (usage/cost telemetry). Assuming a dateless model ID auto-upgrades, or assuming Anthropic authored a proprietary lifecycle framework, are both wrong.
What it is
This objective is a general software/IT-engineering discipline applied to Claude-based systems, not an Anthropic-specific API feature. NIST describes it as "the overall process of developing, implementing, and retiring information systems" through initiation, analysis/development, implementation, and operations/maintenance phases, ending in disposal; FFIEC and NIST SP 800-64 describe the same skeleton for regulated environments. Mapped onto a plan → develop → test → deploy → operate → maintain → retire sequence, three phases have concrete, citable Claude-specific mechanics worth knowing cold: test (evals), deploy (model/agent version pinning), and operate (usage telemetry). The other phases (plan, develop, maintain, retire) apply standard engineering practice with no Claude-specific twist worth memorizing beyond what already appears elsewhere on this site (see Study Next).
The exam-relevant insight is less about the phase names themselves and more about which concrete artifact backs each phase in a real Claude deployment: a labeled eval suite backs "test," a pinned model ID plus a pinned agent version backs "deploy," and the Admin Usage & Cost API plus SDK-level request logging backs "operate." An architect who can't name the artifact behind a phase hasn't actually operationalized the lifecycle - they've just recited its name.
How it works
Test - evals as a first-class artifact, not an afterthought. Define success criteria that are specific and measurable (task fidelity, consistency, tone, latency, price), then grade test cases via exact-match, cosine similarity, ROUGE-L, or LLM-based grading (Likert or binary). Anthropic's stated best practice: "use a different model to evaluate than the model used to generate the evaluated output" - grading with the same model that produced the answer risks self-preference bias contaminating the score. The Console also ships an interactive Evaluation tool for pre-ship testing. For grading methodology and dataset design in depth, see the evaluation concept page - see Study Next.
Deploy - model IDs are pinned snapshots, not evergreen pointers, from the 4.6 generation onward. Dateless IDs like claude-sonnet-5 or claude-opus-4-8 are each one fixed weight snapshot forever: "Anthropic does not update the weights or configuration of an existing model ID. When an updated version is available, it ships under a new model ID." This is the opposite behavior from pre-4.6 models, which used dated IDs (claude-sonnet-4-5-20250929) plus a *separate*, undated alias (claude-sonnet-4-5) that silently rolls to the latest dated snapshot for that minor version - pinning the alias instead of the dated ID is a real production risk on legacy models. Every model ID, dated or dateless, carries its own independent deprecation schedule, and serving infrastructure (routers, safety classifiers, sampling logic) can shift observable behavior slightly even when the weights underneath haven't changed.
Deploy - server-side prompt/agent versioning with rollback, on Managed Agents. agents.update() requires the agent's CURRENT version as an explicit argument, not just the fields you're changing: agent = client.beta.agents.update(AGENT_ID, version=agent.version, system=V2_SYSTEM). That current-version argument is an optimistic-concurrency check - passing a stale version (someone else updated the agent since you last read it) returns a 409 conflict_error instead of silently overwriting their change; the pattern is fetch-then-update, not update-blind. Each successful call produces a new immutable version automatically, numbered sequentially (v1, v2, v3...) on the same agent ID. Production sessions pin explicitly: session = client.beta.sessions.create(agent={"type": "agent", "id": AGENT_ID, "version": N}, environment_id=ENV_ID); passing a bare agent ID string instead resolves to whatever the latest version happens to be, which is not recommended for production. Rollback requires no redeploy - it's just re-pinning the version field to a prior number, since "versions live server-side." Anthropic's own cookbook example makes the stakes concrete: a v2 prompt change dropped billing-ticket routing accuracy from 4/5 to 2/5 (a broadened routing rule over-captured billing tickets that merely mentioned API usage costs); re-pinning production sessions back to v1 immediately restored 4/5 accuracy, with zero code deployed.
Operate / maintain - usage and cost telemetry, plus request-level logging. The Usage & Cost Admin API returns token usage bucketed by minute, hour, or day, filterable and groupable by API key, workspace, model, service tier, context window, or data residency - the concrete artifact that lets "maintain" decisions (which model to keep running, where cost is concentrated) be data-driven rather than anecdotal. (This is distinct from the separate Claude Enterprise Analytics API, which uses its own dimension set including "product" - don't conflate the two.) SDKs separately expose a middleware/interceptor hook that runs before a request is sent and after a response is received, for request-level logging independent of the Admin API's aggregate view.
Worked full-cycle example. A support-ticket router on Claude: plan (routing-accuracy target, latency budget) → develop (system prompt) → test (a labeled-ticket eval set, exact-match or LLM-graded, per the develop-tests methodology above) → deploy (pin the model ID, e.g. claude-sonnet-5; ship the prompt as an immutable agent version pinned by production sessions) → operate (per-model token/cost visibility via the Admin API; request logging via SDK middleware) → maintain (a PM edits routing rules to v2; v2 is evaluated against the same labeled set before any session is re-pinned to it) → if v2 regresses in production the way the cookbook's own billing example did, rollback is just re-pinning sessions to v1, no redeploy required.

Where you'll see it
Support-ticket router, full lifecycle
plan (accuracy/latency targets) → develop (system prompt) → test (labeled eval set, LLM-graded by a different model) → deploy (pinned model ID + pinned agent version) → operate (Admin API cost telemetry + SDK middleware logging) → maintain (v2 prompt evaluated before re-pinning) → rollback (re-pin to v1 if v2 regresses).
Managed Agents billing-routing regression
A v2 prompt change dropped billing-ticket accuracy from 4/5 to 2/5 in production; re-pinning sessions to the immutable v1 agent version restored accuracy instantly, with no redeploy - the concrete shape of a change-controlled "deploy" artifact paying off during "maintain."
Side-by-side
| Lifecycle phase | Generic SDLC concern | Concrete Claude mechanic | Artifact / API |
|---|---|---|---|
| Test | Verify the system meets requirements before shipping | Evals graded by a different model than the one that generated the output | Labeled eval suite; Console Evaluation tool |
| Deploy | Release a specific, known-good version to production | Dateless model IDs (4.6+) are immutable snapshots; Managed Agents versions are immutable and pinned explicitly | model field; agent={"id":..., "version": N} |
| Operate | Monitor the running system | Token usage bucketed by minute/hour/day, by API key/workspace/model/service tier/context window/data residency | Usage & Cost Admin API |
| Maintain | Change the system safely, with a way back if it regresses | Re-pinning a prior agent version number reverts instantly, server-side, no redeploy | agents.update() + version pin/rollback |
Decision tree
Are you deciding whether an output is good enough to ship?
Are you deciding which specific model version or agent version goes live?
version number rather than a bare agent ID.Are you trying to understand cost or usage patterns of a live system?
Did a prompt or agent-version change regress a metric in production?
version number - rollback is server-side and requires no redeploy, unlike rolling back a raw code release.Does the exam question require Anthropic-specific SDLC terminology to answer correctly?
Question patterns

6 V2 questions wired to this concept. Tap an answer to check it instantly - you'll see whether it's right and why - then expand the full breakdown for the mental model and all four rationales.
claude-sonnet-5. Six months later they want to know whether Anthropic silently improved that model's behavior underneath them. What is true about model IDs from Claude 4.6 onward?Tap your answer to check it.
Tap your answer to check it.
agents.update(). Testing later reveals version 2 dropped billing-ticket accuracy. What is the correct rollback mechanism?Tap your answer to check it.
Tap your answer to check it.
Tap your answer to check it.
Tap your answer to check it.
Frequently asked
Did Anthropic invent the systems-life-cycle framework this objective refers to?
Do Claude model IDs automatically update to the newest, best-performing version over time?
Work this with your AI
Work this concept hands-on with Claude Code, Codex, or claude.ai. Copy a prompt, paste it into your assistant, and practise in tandem. Each one keeps you active (explain it back, get drilled, or build) rather than just reading.
- Drill it like the exam (scenario MCQs)Practice in the exam's scenario-MCQ format with trap awareness.
- Explain it back (Feynman)Build durable, transferable understanding of a concept you can half-state.
- Test me, adapting the difficultyActive recall practice on a concept you think you know.
- Check my prerequisites firstBefore studying a concept that keeps not sticking.
- Find the high-leverage 20%When a domain feels too big and you are short on time.
