CCA·PRO — Independent Certification Prep · 2026

Claude Certified
Architect

Everything developers need to know to pass the Foundations exam — 5 domains, 40 slides, zero fluff.

Hamza Farooq · Traversaal.ai Scored 900 / 1000 · May 2026
Philosophy 02
What the exam actually tests

The exam doesn't test API syntax. It tests whether you'd make the right call in a production failure.

Four options per question. One is architecturally sound. Three are plausible-looking traps. 02 / 40
Exam Overview · Numbers 03

Know these numbers before you sit the exam

720
Pass score out of 1,000. Scaled scoring — hardest questions carry more weight.
Anthropic · CCA-F · 2026
5
Domains. Every question maps to one. Know which domain you're in before answering.
Architecture · Tools · Config · Prompts · Context
27%
Domain 1 weight — the single largest domain. Win here and you've cleared the hardest hurdle.
Agentic Architecture & Orchestration
03 / 40
Exam · Domain Breakdown 04

Allocate your study time by domain weight

D1 — Agentic Architecture & Orchestration 27%
D3 — Claude Code Configuration & Workflows 20%
D4 — Prompt Engineering & Structured Output 20%
D2 — Tool Design & MCP Integration 18%
D5 — Context Management & Reliability 15%
Total: 100% · Pass score: 720 / 1000
D5 is smallest but cascades into every other domain 04 / 40
Exam Strategy 05

Every question follows the same anatomy

01
Read the scenario
A production failure, a design choice, or a debugging situation. Identify the domain.
→
02
Spot the failure mode
What specifically broke? Missing topics? Wrong routing? Hanging CI? Lost citations?
→
03
Reject distractors
"Stronger system prompt," "larger model," "increase temperature" — almost always wrong.
→
04
Pick the root cause fix
Cheapest layer, right mechanism, addresses the actual failure — not the symptom.
Wrong answers feel correct. Right answers feel obvious — after you know the domain. 05 / 40
Domain 1 · 27% of exam

Agentic Architecture & Orchestration

The heaviest domain. Covers loops, multi-agent topology, hooks, decomposition patterns, and error handling. Win this and you're most of the way there.

Domain 1 · Global Rules 07
Three rules that decide most D1 questions

Memorise these before anything else in Domain 1

When unsure, apply the rule that matches the stakes and the failure type.

  • Deterministic beats probabilistic when stakes are real. Financial, security, compliance, safety → hooks or programmatic gates. Style and formatting → prompts.
  • Trace failures to their origin. Scope problems live upstream (decomposition, partitioning, context-passing). Don't blame the subagent that faithfully executed a bad brief.
  • Proportionate fixes. Single agent beats multi-agent when single suffices. Prompts beat hooks when stakes are low. Never over-engineer.
07 / 40
Domain 1 · TS 1.1 · Agentic Loops 08

stop_reason is the ONLY authoritative termination signal

01
Send message
Include full conversation history. API is stateless — every request rebuilds context from scratch.
→
02
Inspect stop_reason
tool_use → execute tools, append tool_result blocks as role: "user", loop back. end_turn → done.
→
03
Never parse text
Don't check for "I'm done" phrases. Don't use iteration cap as the primary stop. Caps are safety nets only.
→
04
Parallel tool calls
Multiple tool_uses in one response → one tool_result per id, all in one user turn. Sequential = triple latency.
Anti-pattern: checking content[0].type == "text" — tool_use responses can begin with a text block 08 / 40
Domain 1 · TS 1.2 · Multi-Agent Orchestration 09
The Only Valid Topology

Hub-and-spoke. Always.

Coordinator at centre. Subagents are spokes. ALL communication routes through the coordinator. Subagents never talk to each other — ever.

  • Enables observability and consistent error handling
  • Coordinator's 7 jobs: decompose → select → partition scope → pass context → aggregate → refine → route
  • Missing "Task" from allowedTools → coordinator physically cannot delegate
The Isolation Principle

Subagents start with nothing.

Subagents do NOT inherit coordinator history. Do NOT share memory across invocations. Every byte they need must be in their prompt.

  • Missing topics → decomposition too narrow
  • Duplicated work → scope partitioning sloppy
  • Shallow on every topic → subagent prompts or tool budgets
  • Missing source attribution → context-passing destroyed metadata
fork_session: independent branches from a shared expensive baseline — use for "explore N alternatives from the same analysis" 09 / 40
Domain 1 · TS 1.4–1.5 · Hooks 10

High-stakes enforcement requires hooks. Prompts are not enough.

PreToolUse — fires BEFORE tool executes

Gates, authorisation, prerequisite checks, financial limits, capturing prior state hash for audit. The only hook that can prevent an action from happening.

Keyword triggers: "prior state," "pre-condition," "before X happens," "must not proceed unless," "refund verification," "trade limits," "compliance check," "age gate."

The decision rule: if a single failure causes financial loss, security breach, regulatory violation, or safety harm → programmatic enforcement. If it causes only bad-but-recoverable UX → prompts.

PostToolUse — fires AFTER tool, before model sees result

Normalisation (timestamps, currencies, field names), redaction (PII), truncation, enrichment, result logging. The model never sees the raw tool output — only the post-processed version.

Keyword triggers: "heterogeneous formats," "normalise," "redact," "model confused by varying outputs," "strip PII before model sees it."

Hooks vs subagents: rule that must be enforced → hook. Capability that needs different reasoning/prompt/tools → subagent. Hooks don't rank tools — use prompts + tool descriptions for preference.

The four-distractor pattern: hook ← correct | stronger prompt | few-shot | specialised subagent 10 / 40
Domain 1 · TS 1.6 · Decomposition 11
Four decomposition patterns

Match the pattern to the task structure — not the task complexity

Pattern 2 vs Pattern 3 discriminator: typed roles → dynamic decomposition; uniform clones → orchestrator–worker.

  • Fixed Sequential Pipeline — stable structure, each step consumes prior output. Tell: "every email follows the same flow."
  • Dynamic Decomposition (typed subagents) — varying requests, role-typed subagents (search / doc / synth). Same types, scope varies per query.
  • Orchestrator–Worker — uniform workers differentiated only by prompt-supplied scope. N research workers each handling a different sub-topic.
  • Evaluator–Optimiser — explicit checkable quality criteria, first pass often inadequate. Iterate until coverage / citations / format pass. Fails when criteria aren't objectively checkable.
Over-engineering trap: if single-agent works, the exam prefers not refactoring to multi-agent 11 / 40
Domain 1 · TS 1.7 · Error Handling 12
Three Error Categories

Classify before acting — never blanket retry

  • Transient (429, 503, network blip) → retry with exponential backoff + jitter, capped
  • Permanent (400, 401, 403, 404, malformed input) → don't retry — feed back to model or escalate
  • Logical (tool returned empty/irrelevant) → feed back to model with context, model changes strategy

Silent error swallowing (returning empty string) = model produces confident wrong answers. Always surface errors.

Idempotency + Reliability

Double-charge protection and circuit breakers

  • Idempotency key: generate UUID / hash of {operation + customer + amount} on first attempt, pass on every retry. Without this, a transient retry can double-charge.
  • Paired-fix pattern: broken retry policy AND duplication? Need both error classification AND idempotency keys. Either alone is insufficient.
  • Circuit breaker: N failures in window → stop calling for cooldown
  • Per-tool timeouts: no tool blocks the loop indefinitely. Timeout + fallback, not prompt instruction.
Hanging agent → timeout + fallback. Never a prompt instruction telling the agent to "stop if it takes too long." 12 / 40
Domain 2 · 18% of exam

Tool Design & MCP Integration

Misrouting, structured errors, tool_choice, MCP credential safety, Grep vs Glob. The layer-awareness rule matters here more than anywhere else.

Domain 2 · TS 2.1 · Tool Interface Design 14
Root Cause

Misrouting is always a description problem first

Tool descriptions ARE the routing layer. The model has nothing else when choosing between similar tools.

  • 1st — Expand descriptions (correct): low effort, high leverage, fixes root cause
  • 2nd — Few-shot in system prompt: treats symptom, token overhead every call
  • 3rd — Merge tools: loses useful semantic distinction, high refactor cost
  • 4th — Train classifier: extra model call, latency, new failure point
5-Component Description

What a production-grade tool description contains

  • Primary purpose — one sentence
  • Input contract — formats, types, constraints
  • Example queries it handles well — concrete strings
  • Edge cases and limitations — what it won't do
  • Explicit boundaries vs similar tools — "Use this for X. For Y, use other_tool." ← the one most teams skip

Code smell: "or" / "depending on" in a description → split the tool into purpose-specific ones.

After fixing descriptions: audit system prompt for keyword conflicts that override descriptions 14 / 40
Domain 2 · TS 2.2 · Structured Error Responses 15

isError: true means the tool couldn't look. isError: false + empty means it looked and found nothing.

Four error categories — memorise the table

Transient (network timeout, 503, rate limit) — retryable with same input. Backoff + retry, then escalate.

Validation (wrong format, missing field) — retryable only after correcting input. Correct and retry.

Business (refund exceeds limit, account locked) — NOT retryable. Switch workflow; surface description to user.

Permission (401, 403, missing scope) — NOT retryable by this agent. Escalate or request elevated creds.

The most-tested 2.2 trap

Returning [] for both "no such customer" AND "database unreachable" is the canonical exam trap. The agent retries endlessly and escalates with a misleading description when the real answer was "this customer doesn't exist."

Access failure (tool can't reach source) → isError: true, decide whether to retry.
Valid empty result (tool queried successfully, found nothing) → isError: false, empty array/null. Tell user "no results."

In multi-agent systems: subagents handle local recovery. Only propagate what they cannot resolve. Coordinator evaluates partial results rather than aborting on one failure.

Retry budget: even retryable errors have limits. "Agent retried 50 times" = missing retry budget. 15 / 40
Domain 2 · TS 2.3 · Tool Distribution & tool_choice 16
tool_choice — three modes

Prompts request. tool_choice requires.

  • "auto" (default) — model may or may not call a tool
  • "any" — model MUST call some tool, of its choice
  • {"type":"tool","name":"X"} — model MUST call this specific tool

15% of messages skip a mandatory first step despite a system prompt instruction? Fix: tool_choice: {"type":"tool","name":"extract_intent"}. Miss rate → 0%.

Tool overload rule

4–5 tools per agent is the production sweet spot. Reliability degrades sharply past 7–10 — softmax over descriptions thins probability margins.

Scope tools to roles: synthesis agent should NOT have web_search. Web search agent should NOT have document analysis tools.

For high-frequency simple operations: give consuming agent a constrained version of the capability. Complex cases still escalate to the owner.

Named tool ≠ heterogeneous routing. Don't force {"name":"extract_invoice"} when document types vary. 16 / 40
Domain 2 · TS 2.4 · MCP Integration 17
MCP scoping hierarchy

Shared config, personal credentials — always

  • Project: .mcp.json (repo root) — version-controlled, committed, shared with team
  • User: ~/.claude.json — personal, experimental, across all projects
  • Credential leak fix: use ${JIRA_API_TOKEN} expansion, NOT the literal token in the file
  • Don't relocate to fix a leak — parameterise. A team integration belongs in .mcp.json. Also rotate the leaked token — git history is forever.

Build vs use decision: evaluate community MCP server first. Fork or post-process before building from scratch.

MCP resources vs tools

Tools = actions the agent can take.
Resources = content the agent can read (catalogues, schemas, summaries).

"Agent makes many exploratory tool calls at conversation start to discover available data" → expose resources that catalogue what's available. Agent reads catalogue once, then queries precisely.

MCP tool losing to built-ins → enhance the MCP tool's description with examples and explicit boundary clauses.

Too many configured MCP servers re-creates tool-overload at a different layer 17 / 40
Domain 2 · TS 2.5 · Built-in Tools 18
Grep vs Glob — most-tested D2 distinction

Grep searches content. Glob searches paths. Wrong choice = failed task.

Edit fallback ladder: expand anchor → Read+Write → replace_all. Never sed, never delete-and-recreate.

  • Grep — searches file contents, returns matching lines. Use for: function callers, error messages, import statements, identifier occurrences. "What does the code say?"
  • Glob — searches file paths, returns paths matching pattern. Use for: all test files (**/*.test.tsx), all configs. "What files exist?"
  • Grep → Glob sequence: content-seeded discovery (find usages → find their tests). Glob → Grep: path-seeded check (known files → check contents).
  • Anti-pattern: read everything upfront. Load entry points via Grep → Read selectively → Grep for next identifiers. Context budget killer otherwise.
"Find all React component files" → Glob **/*.tsx, NOT Grep "import React" | "Find all callers of formatDate" → Grep, NOT Glob 18 / 40
Domain 3 · 20% of exam

Claude Code Configuration & Workflows

CLAUDE.md hierarchy, path-specific rules, skills, plan mode, CI/CD. The core rule: path prefix is the whole answer. ~/.claude/ is personal. .claude/ is shared.

Domain 3 · TS 3.1 · CLAUDE.md Hierarchy 20

Two devs, same repo, divergent behaviour → user-level config that was never committed

~/.claude/
User level
Only you, on your machine. Never version-controlled. Personal CLAUDE.md, personal commands, personal skills. Never shared via git.
→
.claude/
Project level
Everyone on the repo. Version-controlled. Shared CLAUDE.md, shared commands, shared skills, path-rules, .mcp.json.
→
subdir/
Directory level
Only when working in that subdir. Scopes downward and local, NEVER upward. src/backend/CLAUDE.md does NOT affect work in src/.
→
/memory
Diagnosis, not fix
/memory lists which files are currently loaded. Confirms the diagnosis. Cannot conjure a file that doesn't exist on the machine.
Modular org: @import syntax inside CLAUDE.md, or .claude/rules/ directory with topic-specific files 20 / 40
Domain 3 · TS 3.2 · Skills vs CLAUDE.md 21
CLAUDE.md — Always Loaded

Universal standards. Ambient. Not opt-in.

Everything that needs to happen every interaction. British English in comments, testing frameworks, code style, security requirements.

  • Project: .claude/CLAUDE.md or root CLAUDE.md
  • Split into .claude/rules/ with paths: frontmatter when it gets large
  • Never put on-demand workflows here — bloats every interaction
Skills — On-Demand

Task-specific workflows. Invoked when needed.

Skill frontmatter options to memorise verbatim:

  • context: fork — verbose output stays in fork, only summary returns. Trigger: "clutters main conversation," "keep main context clean."
  • allowed-tools: [Read, Grep] — restricts destructive actions. Trigger: "analyse only, must not modify."
  • argument-hint: <feature-name> — prompts developer for required parameter when invoked without args.
  • Personal customisation: create ~/.claude/skills/review-strict/ — different name, personal location, no impact on team.
A slash command for a convention = wrong. Standards must be ambient. Path-rules or CLAUDE.md. 21 / 40
Domain 3 · TS 3.3 · Path-Specific Rules 22
Signature phrase to recognise

"Pattern of files spread across the codebase" → path-specific rules

  • Files in .claude/rules/ with YAML frontmatter declaring a glob pattern
  • Loads ONLY when Claude Code is about to work on a matching file
  • One rule file covers **/*.test.tsx everywhere — no N copies that drift
  • Token efficient: not loaded for non-matching files

Why beats directory CLAUDE.md: glob patterns match files scattered anywhere. Directory CLAUDE.md cannot — you'd need copies in every directory.

Decision table

Always relevant → Project CLAUDE.md
One specific subdir → Directory CLAUDE.md
Pattern across codebase → Path-specific rules
On-demand workflow → Skill or command
Personal only → Same but in ~/.claude/

Examples: **/*.test.*, **/migrations/**/*, **/*.tf, **/api/handlers/**/*.ts 22 / 40
Domain 3 · TS 3.4 · Plan Mode 23
Plan Mode — Decisions Still to Make

Use when approach is still open

  • Large-scale changes (library migration across 45+ files)
  • Multiple valid approaches exist — evaluate before committing
  • Architectural decisions required (service boundaries, abstractions)
  • Unfamiliar codebase needs exploration before design
  • Trap: "mechanical" migration when libraries have different APIs — scale + interface differences = plan mode regardless

Explore subagent: isolates verbose discovery output. Search results stay in subagent, returns summaries to main conversation.

Direct Execution — Known Thing to Do

Use when approach is already decided

  • Well-understood, narrow scope (single-file bug fix with clear stack trace)
  • Mechanical changes (add a validation conditional, rename a variable)
  • Correct approach already known

Valid hybrid: Plan mode → explore → produce concrete plan → exit plan mode → implement directly. Not a wrong answer — the exam tests this combination.

Dividing line: Are there decisions still to make, or just a known thing to do? 23 / 40
Domain 3 · TS 3.6 · CI/CD Integration 24

Five CI/CD failure patterns. The -p flag is the single most-tested detail.

Symptom → Fix mapping (memorise)

CI job hangs indefinitely → Claude Code waiting for interactive input → add -p flag. Never "increase timeout" or "redirect /dev/null."

PR comments need inline posting → output is narrative prose → --output-format json --json-schema together.

Duplicate comments on every new commit → no context about prior review → include prior findings + instruct "report only new or unaddressed issues."

Test generation + review isolation

CI generates duplicate tests → doesn't know what's already covered → provide existing test files in context alongside source file.

Low-quality CI tests → no test-value criteria → strengthen .claude/CLAUDE.md with testing standards and fixtures.

Session isolation: same Claude session that generated code is LESS effective at reviewing it — retains reasoning context, biased toward prior decisions. Use an independent review instance — fresh session, no prior context.

Two problems that look similar: low-quality tests (fix: CLAUDE.md) vs duplicate tests (fix: provide existing test files in context) 24 / 40
Domain 4 · 20% of exam

Prompt Engineering & Structured Output

Explicit criteria, few-shot, tool_use schemas, validation-retry, batch API, multi-instance review. The retry-vs-schema boundary is tested in almost every form.

Domain 4 · Global Rules 26
Three rules that decide most D4 questions

Match mechanism to failure mode. Don't cross layers.

Most wrong answers in D4 apply the right idea at the wrong layer.

  • Specific categorical criteria beat vague confidence adjectives. "Flag X, report Y, skip Z" beats "be conservative." Options containing "conservative," "careful," or "high-confidence" without categorical definition → almost always a distractor.
  • Match the mechanism to the failure mode. Few-shot for inconsistent judgement. Schema design for fabrication. Validation-retry for output errors. Multi-instance for self-review limitations. Wrong-tool answers are the dominant distractor shape.
  • Retry fixes output errors. Schema design fixes source gaps. Information genuinely absent from the source document is not recoverable through retry — only through nullable fields, "unclear" enums, or "other" categories.
26 / 40
Domain 4 · TS 4.1 · Explicit Criteria 27
Wrong — Vague

Adjectives without categories drift across runs

  • "Be conservative."
  • "Only report high-confidence findings."
  • "Use careful judgement."
  • "Lower the confidence threshold for the noisy category" → keeps noise flowing
  • "Add more instructions to the prompt for that category" → keeps noise flowing
  • "Lower the temperature" → deterministic bad criteria is still bad criteria

High false-positive rate in one category destroys trust in ALL categories — including accurate ones. The fix: disable that category entirely while improving its prompt.

Right — Categorical

Three categories: what to flag, report, skip

  • "Flag comments only when claimed behaviour contradicts actual code behaviour."
  • "Report bugs and security vulnerabilities. Skip minor style preferences."
  • Severity levels anchored with actual code examples per level — not prose descriptions that drift
  • Example: Critical = SQL injection from unvalidated input + code snippet showing it

Noisy category: disable entirely → restore trust in remaining categories → improve prompt for disabled category → re-enable. Don't tighten in place.

27 / 40
Domain 4 · TS 4.2 · Few-Shot Prompting 28

"Inconsistent output despite detailed instructions" → few-shot examples, not more instructions.

Three deployment triggers — memorise verbatim

1. Detailed instructions alone produce inconsistent formatting.

2. Model makes inconsistent judgement calls on ambiguous cases.

3. Extraction tasks produce empty/null fields for information that exists in the document.

Construction rules: 2–4 targeted examples for ambiguous scenarios (not 10, not 1). Each example shows the reasoning for why one action was chosen over plausible alternatives. Purpose: generalisation to novel patterns, not matching pre-specified cases.

Hallucination reduction — exam favourite

Documents vary in structure: inline citations vs bibliographies, narrative prose vs structured tables. Few-shot examples covering varied structures dramatically reduce hallucination because the model learns the shape of valid extractions across formats.

Wrong distractors: "Add more detailed instructions covering all edge cases" (instructions grow linearly, edge cases grow combinatorially). "Add 10 diverse examples" (wrong count — 2–4 targeted on ambiguous cases beats 10 on solved cases). "Lower temperature to 0" (determinism isn't a judgement problem).

28 / 40
Domain 4 · TS 4.3 · Structured Output 29

tool_use eliminates syntax errors. That's it. Not semantics. Not fabrication.

What tool_use does NOT prevent

Semantic errors — line items don't sum to stated total. Schema doesn't check arithmetic.

Field placement errors — right value, wrong field. Schema validates types, not meaning.

Fabrication — model invents values for required fields when source lacks information. All-required schemas are fabrication factories.

tool_choice reminder: "auto" for optional, "any" for must-call-something, named for must-call-this specific tool.

Anti-fabrication toolkit

Optional / nullable fields — source legitimately lacks info → prevents fabrication. "Add 'do not fabricate' while keeping field required" = prompt cannot override structural pressure.

"unclear" enum value — ambiguous cases → lets model express uncertainty within the schema.

"other" + freeform detail string — categories outside the enum → captures reality instead of forcing wrong-bucket.

Format normalisation rules — schemas validate types; prompts specify formats (ISO-8601 dates, currency format, etc.)

"Use tool_use with all fields required to guarantee complete extractions" → fabrication factory. Never choose this. 29 / 40
Domain 4 · TS 4.4 · Validation-Retry 30
Retry IS effective for

Output errors — things the model got wrong that it could get right

  • Format mismatches (date format wrong)
  • Structural output errors (object vs array)
  • Misplaced values (value in wrong field)

The mechanism: send back original document + failed extraction + specific validation error message. Model uses error to self-correct. Dramatically more effective than naive retry.

detected_pattern field turns a black-box bot into a measurable system — analyse dismissal patterns, improve based on evidence.

Retry IS NOT effective for

Source gaps — information absent from the document

  • 15% of documents lack a field → retry produces fabrications, not corrections
  • The correct fix: nullable field in schema
  • "Increase retry limit from 3 to 10" → more fabrications, not more accuracy

Self-correction patterns: extract calculated_total AND stated_total — disagreement flags OCR errors, fraud, or model arithmetic mistakes. Add conflict_detected boolean for internally inconsistent source data.

Retry fixes output errors. Schema design fixes source gaps. Memorise as a sentence. 30 / 40
Domain 4 · TS 4.5 · Batch Processing 31
Five facts about Batch API — memorise verbatim

Blocking → synchronous. Latency-tolerant → batch. Never "everything to batch."

  • 50% cost savings vs synchronous
  • Up to 24-hour processing window — no faster, no slower-bounded
  • No guaranteed latency SLA — could return in 10 min or 23 hours
  • Does NOT support multi-turn tool calling — single-shot completions only. Agentic loops must be synchronous.
  • Uses custom_id — correlating request/response pairs. Resubmit failures by custom_id, not the whole batch.

Blocking vs latency-tolerant

Blocking (→ synchronous): pre-merge CI checks, IDE inline suggestions, customer-facing chat

Latency-tolerant (→ batch): overnight test generation, weekly compliance audits, monthly competitive intelligence

Manager proposes "switch everything to batch": always the mixed strategy. Batch the latency-tolerant, keep blocking synchronous.

Iterate on prompts synchronously before batching. Don't iterate inside a 24h loop.

Multi-instance review: fresh session for review pass — same session reviewing its own work = motivated reasoning 31 / 40
Domain 5 · 15% of exam

Context Management & Reliability

Smallest domain by weight — but cascades into every other domain. Summarisation traps, escalation logic, error propagation, codebase exploration, provenance. These patterns appear everywhere.

Domain 5 · TS 5.1 · Context Preservation 33
The Trap — Summarisation

Summarisation compresses high-value tokens first

  • Numbers: "$247.83 refund" → "a refund"
  • Dates: "March 3rd" → "recently"
  • IDs: "#8891" → omitted entirely
  • Expectations: "by Friday" → vanished

Lost-in-the-middle: transformer attention biased toward beginning and end. Not fixable with a better model — structural. Put key findings summaries at the beginning, use explicit section headers.

The Fix — Persistent Case-Facts Block

Extract transactional facts, inject verbatim forever

  • Structured block with Customer ID, Order #, amounts, dates, expectations
  • Injected verbatim into every prompt — summarisation never touches it
  • Conversation history above and below can compress; the facts block is sacred
  • Trim tool results before they hit context — 40 fields when you need 5 = 35 fields of noise per turn, accumulating

Upstream fix: modify subagents to return structured key facts and citations — not verbose prose, not reasoning chains. Cheapest place to fix downstream context bloat is upstream.

Claude API is stateless — every request must include complete conversation history. Drop messages → break coherence. 33 / 40
Domain 5 · TS 5.2 · Escalation Logic 34
Three valid triggers. Two unreliable ones.

Explicit "I want a human" = escalate now, do not investigate first

Multiple customers match search? Ask for an additional identifier. Never pick by heuristic (most recent, most active, geographical proximity).

  • Valid: Customer explicitly requests a human — escalate immediately, no investigation. Not "confirm they really want a human" — explicit means explicit.
  • Valid: Policy exception or gap — request outside documented policy. Agent cannot invent policy.
  • Valid: Inability to make meaningful progress — after legitimate avenues tried.
  • Unreliable: Sentiment (customer is frustrated) — frustration does not correlate with case complexity. Acknowledge frustration, offer resolution, escalate only if reiterated.
  • Unreliable: Self-reported model confidence — model is often incorrectly confident on hard cases and uncertain on easy ones. Escalate on calibrated thresholds only.
Cost of asking for an identifier: one extra turn. Cost of acting on wrong account: enormous. 34 / 40
Domain 5 · TS 5.3 · Error Propagation 35
The Two Anti-Patterns

Both destroy recovery

  • Silent suppression — return {"results":[],"status":"ok"} on tool failure. Orchestrator believes no data exists. Zero recovery path. The worst answer in any 5.3 question.
  • Workflow termination — kill entire pipeline on single tool failure. Throws away partial results from subagents that succeeded.
  • Access failure ≠ valid empty result. Retry only the former. Conflating them causes either endless retry or accepting false "no data" as truth.
Structured Error Context — Four Required Fields

Give the model enough context to recover

  • Failure type — transient / validation / business / permission
  • What was attempted — specific query, parameters, endpoint
  • Partial results — anything gathered before the failure
  • Potential alternatives — retry, fallback path, narrower query, cached endpoint

Coverage annotations: "Section on geothermal limited due to unavailable journal access (3 of 7 sources unreachable)." Better than silently omitting. Consumer can decide whether to act or wait.

One subagent fails in a pipeline of four → preserve the three successes, annotate the gap, do not terminate 35 / 40
Domain 5 · TS 5.4–5.6 · Exploration & Provenance 36
Long session degradation toolkit

When model says "typical patterns" instead of specific findings — degrade has begun

  • Scratchpad files — write key findings to file, reference for subsequent questions. Survives compaction and crashes.
  • Subagent delegation — coordinator receives distilled result only. Parallel deep dives without bloating coordinator context.
  • Summary injection — summarise findings from one phase before spawning next-phase subagents.
  • /compact — recovery valve when verbose output fills the window. Trade-off: loses fidelity.
  • Manifest pattern — export structured state to known file location at checkpoints. On resume: load manifest, inject into prompts. Source of truth, not conversation history.

Provenance (TS 5.6)

Every finding carries: claim + URL + doc name + excerpt + publication date. Attribution dies the moment any agent summarises without structure.

Two credible sources report different numbers? Annotate both with full attribution. Let the consumer decide. Never average (fabricates a number neither source reported). Never silently pick one.

28% (2022) vs 32% (2024): not a conflict — a trend. Include publication dates to distinguish.

Match rendering to content: tables for financial data, prose for narrative, structured lists for technical findings.

97% aggregate accuracy can hide 40% error rate on a stratum. Always validate by document type AND field segment. 36 / 40
Cross-Domain · Universal Pattern 37
The one rule that appears in every domain

The agent that produced the output should not review that output. Use an independent instance.

D3: fresh Claude Code session for CI review · D4: multi-instance review pass · D5: calibrated confidence thresholds 37 / 40
All Domains · Distractor Recognition 38
When you see these options — reject them

These appear in every domain as plausible-looking wrong answers

The exam is testing whether you can distinguish the right mechanism from a superficially similar one.

  • "Add a stronger system prompt instruction" — probabilistic. Doesn't enforce. Use hooks (high-stakes) or tool_choice (mandatory first step).
  • "Use a larger model" / "increase temperature" — almost never the right answer. Address the structural problem, not the model size.
  • "Retry on every error type" — blanket retry is always wrong. Classify first: transient / permanent / logical / business.
  • "Return empty results with status=ok on failure" — silent suppression. The worst pattern in the exam. Zero recovery path.
  • "Reuse the code-generating session for review" — motivated reasoning. Use a fresh independent session.
  • "Use a larger context window to prevent attention dilution" — attention dilution is structural, not a token-count problem.
38 / 40
Exam Day · Checklist 39

The morning of the exam — review these five things

01
D1 mnemonics
stop_reason only. Subagent state: nothing carries over. High stakes → hooks. Missing topics → blame coordinator's decomposition.
→
02
isError taxonomy
true = tool couldn't look. false + empty = looked, found nothing. Transient retries: same input. Validation retries: fixed input only.
→
03
Path prefix rule
~/.claude/ = personal, never shared. .claude/ = shared, version-controlled. -p flag = CI non-interactive. context: fork = noisy skills.
→
04
Retry boundary
Retry fixes output errors. Schema design fixes source gaps. All-required schemas = fabrication factory. Batch: no multi-turn tool calls.
05 — Explicit human request = escalate immediately. Frustration alone = offer help first. Ambiguous match = ask for identifier. 39 / 40
CCA·PRO · Traversaal.ai

Now rehearse it.

3 full-length mock exams in real exam mode · study notes for all 5 domains · 100 flashcards

MOCK EXAMS + STUDY MATERIAL
certified.traversaal.ai
FROM THE AUTHOR
Hamza Farooq — LinkedIn
Forward Deployed Engineering Bootcamp — Hamza Farooq on Maven

Hamza Farooq · hamza@traversaal.ai · boringbot.substack.com

Independent study material · not affiliated with or endorsed by Anthropic

✕ Exit