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 Admin Usage & Cost API returns token usage bucketed by minute, hour, or day, sliceable by product, model, context window, or region - the concrete artifact that lets "maintain" decisions (which model to keep running, where cost is concentrated) be data-driven rather than anecdotal. 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 product/model/context window/region | Admin Usage & Cost 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

A team builds an eval suite, then uses the exact same model that generates production output to grade its own eval cases, and reports a high pass rate. What's the methodological problem, and what's the fix?
"the eval suite is too small, add more cases" may also be true in general but does not address the actual flaw described - grading with the generator model itself, regardless of suite size.A production app pins `claude-sonnet-5` (a 4.6-generation-and-later dateless ID) and an engineer argues no redeploy is needed to "pick up" a future model improvement, since the ID has no date in it. Is this correct?
"dateless IDs are evergreen pointers, like the old undated aliases" conflates the new pinned-ID scheme with the legacy pre-4.6 alias behavior (e.g. claude-sonnet-4-5), which genuinely does roll to the latest dated snapshot - that rolling behavior does not apply to 4.6-generation-and-later IDs.A Managed Agents production deployment pins sessions with `agent={"type": "agent", "id": AGENT_ID, "version": 2}`. After v2 ships, billing-ticket routing accuracy drops from 4/5 to 2/5 because a broadened routing rule over-captured billing tickets. What is the correct, lowest-risk fix, and does it require a redeploy?
version: 1. No redeploy is needed - agent versions are immutable and live server-side, so rollback is purely a config change to which version number sessions reference, and it restores the prior 4/5 accuracy immediately. The named distractor "revert the code and redeploy the previous prompt as a new commit" treats this like a code-release rollback, ignoring that the prior version already exists server-side and just needs to be re-pinned.A team wants to know which model is driving the majority of their monthly Claude spend, broken down by day and by product surface. Which mechanism answers this?
"parse SDK middleware request logs manually" is the wrong tool for this - middleware gives per-request logging detail, not the aggregated, bucketed cost/usage view the Admin API is purpose-built to answer.A candidate studying for this objective assumes Anthropic has published an official, branded "Claude SDLC" framework with its own named phases distinct from general industry practice, and expects exam questions to test that vocabulary. Is this a safe assumption?
"study Anthropic's official SDLC phase naming" targets vocabulary that doesn't exist as an Anthropic-specific artifact; the real content to master is the mechanics, not phase-name trivia.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.
