1.3 End-to-End Architecture & Feedback Loops
1.3.1 Beyond a Single Model Call
Every pattern in Lesson 1.2 — augmented LLM, workflow, agent — describes what happens at the CENTER of a system: the reasoning step. But a production system is never just that center. Ask yourself: where does the data that reaches the model come from, and has anyone checked it's trustworthy? What happens to what the model produces before anyone downstream relies on it? And how would you ever find out if quality quietly got worse after a model upgrade last Tuesday? None of those questions are answered by picking a pattern. They're answered by designing the shape AROUND the pattern.
That shape has a name, and it's the second thing Task Statement 1.3 wants you fluent in: input → processing → output → feedback loops. Processing is the pattern you already chose in Lesson 1.2. The other three stages are what turn that pattern into an actual system that survives contact with the real world, and each one has its own concerns that the exam expects you to name specifically, not just gesture at.
A production design is input → processing → output → feedback loops. Processing is where your Lesson 1.2 pattern lives; the other three stages are what make it a system rather than a demo.
The one idea to hold onto
A single model call is not an architecture. The full shape a production design needs is input → processing → output → feedback loops — and each of those four stages has its own specific concerns you're expected to name, not just imply.
1.3.2 The Input Stage: Ingestion, Validation, and a Line You Must Never Blur
The input stage covers everything that happens before the model ever reasons: ingestion (getting the raw data in), validation (checking it's well-formed and expected), and retrieval of grounding context if the design needs it (fetching the documents or records the model will reason over — a Domain 3 topic in depth, but the decision that grounding is needed at all is made right here at input design).
But the concern the exam leans on hardest at this stage is a security-adjacent one that belongs squarely in architecture thinking: separating TRUSTED instructions from UNTRUSTED data. Your system prompt, your developer instructions — those are trusted; they tell the model what to do. A customer's message, a scraped web page, the contents of a retrieved document — those are untrusted DATA the model should reason ABOUT, never instructions it should obey. If your architecture doesn't draw that line clearly, you've built a system where anyone who can influence the untrusted data — a customer typing a message, an attacker planting text in a document you'll retrieve — can potentially inject instructions the model treats as if you'd written them yourself.
This is exactly the kind of thing that's easy to nod along with in the abstract and then blur in an actual design, e.g. concatenating retrieved document text directly into the same prompt block as your instructions with no structural separation. A well-designed input stage keeps that boundary explicit and structural, not just a matter of hoping the model figures out which part was which.
1.3.2 — Key Concept
Input-stage concerns: ingestion, validation, and retrieval of grounding context. The concern the exam tests hardest is separating TRUSTED instructions from UNTRUSTED input data — untrusted data is something the model reasons about, never something it obeys as an instruction.
1.3.3 Processing and Output: Where the Pattern Lives, and What Leaves the System
The processing stage is a short entry in this lesson precisely because you already spent all of Lesson 1.2 on it: it's the chosen pattern (augmented LLM, workflow, or agent), the model selection for that pattern, and the prompt and context assembly that feeds it. Nothing new to add here except a reminder — everything you already know about picking the least-complex sufficient pattern is exactly the content of this stage.
The output stage is where a design earns or loses trust with everything downstream of it. A raw model response is text; a production system almost never wants raw text, it wants a STRUCTURED OUTPUT CONTRACT — a defined shape (JSON schema, a specific format) that downstream code can rely on without having to guess. Alongside the contract sits validation (does this response actually satisfy the contract?) and defensive parsing (what does your code do when it DOESN'T — because a probabilistic model will eventually produce something that doesn't match, and "the code crashes" is not an acceptable answer). Only once a response is validated does it get delivered to whatever downstream system is waiting on it.
| Output concern | What it means | Why it's non-negotiable |
|---|---|---|
| Structured-output contract | A defined shape (schema/format) the response must satisfy | Downstream code can't safely consume unpredictable free text |
| Validation | Checking the actual response against the contract | Catches malformed output before it propagates further |
| Defensive parsing | Handling the case where validation fails gracefully | A non-deterministic model WILL occasionally violate the contract |
| Delivery | Getting the validated response to the downstream system | The point where the design's value is actually realized |
Output-stage concerns exist because model output is probabilistic — treat a contract violation as an expected case to handle, not a bug to be surprised by.
1.3.3 — Key Concept
Output-stage concerns: a structured-output contract, validation against it, defensive parsing for when validation fails, and delivery to downstream systems. Because model output is non-deterministic, defensive parsing for contract violations is a REQUIRED part of the design, not an edge case you can skip.
1.3.4 Feedback Loops: Why They're Mandatory, Not Optional
This is the stage most likely to be missing from a design that otherwise looks complete, and it's the one Task Statement 1.3 treats as non-negotiable. Feedback loops are evaluation, monitoring, and observability — the mechanisms that feed measured quality back into iteration. Concretely: how do you know, with evidence rather than a hunch, that the system is still performing at the bar it was designed to hit?
Here's the argument for why this can't be optional, and it's worth internalizing rather than memorizing: Claude's outputs are non-deterministic. The same input can produce a different response on different runs, a model version upgrade can shift behavior in ways that aren't obvious until you measure them, and the data flowing through retrieval can drift as the underlying knowledge base changes over time. None of those are hypothetical edge cases — they are the normal operating conditions of any system built on a probabilistic model. Without a feedback loop, you cannot detect a regression when a new model version subtly changes behavior, you cannot catch retrieval drift when your knowledge base quietly goes stale, and you cannot PROVE — to yourself, to a stakeholder, to an auditor — that the system still meets the SLA you promised in Lesson 1.1's requirements-gathering step.
This is what separates an architecture from a demo. A demo proves the approach can work once, in front of you, on the examples you happened to try. An architecture proves — continuously, with evidence — that it keeps working, on inputs you didn't hand-pick, after changes you didn't personally review.
Model upgrades, retrieval drift, and run-to-run variance are normal operating conditions for a probabilistic system, not edge cases — a feedback loop is the only way to detect any of them.
1.3.4 — Key Concept
Feedback loops (evaluation, monitoring, observability) are MANDATORY, not optional, because Claude's non-determinism means regressions, drift, and variance are normal operating conditions. The feedback loop is what separates an architecture from a demo — it proves, continuously, that the SLA is still being met.
1.3.5 The Reference-Architecture Anti-Pattern: Retrieval Applied to Live State
There is one input-stage mistake that shows up more often than any other in real Claude reference architectures, and it deserves a name of its own precisely because it is so easy to ship without noticing: building a retrieval index over data that is actually LIVE, MUTABLE STATE, and then querying that index as if it were a stable knowledge base. The architecture looks correct. The retrieval pipeline runs without errors. The demo answers every question you try. The failure only shows up once two retrieved chunks disagree with each other, because the real-world fact each chunk describes changed between the moment it was indexed and the moment it was retrieved.
The root cause is a reflex, not a knowledge gap: once a team has RAG working for one thing (product documentation, policy text, historical records), it becomes the default answer to "the model needs information it doesn't already have" — even for information whose truth value can change in the next sixty seconds. Documentation is stable enough that a nightly-refreshed index is a reasonable tradeoff. A record of CURRENT state — an order's status, a room's availability, a ticket's owner — has no refresh interval short enough to be safe, because the ground truth can move between the refresh and the query that reads the stale copy.
Take a delivery-tracking assistant as the worked example. A team indexes each shipment's scan events into a vector store overnight and has the assistant retrieve the most relevant chunks to answer a customer's "where is my package" question. At 8:00am the index still shows the package's last known scan as "out for delivery," captured in yesterday's snapshot. At 9:40am the courier actually delivers the package and scans it as "delivered" — an event that happens entirely inside the live courier system and has no path into the vector store until the next nightly refresh. At 10:15am the customer asks the assistant for an update, and the assistant retrieves the stale "out for delivery" chunk with complete confidence, because from the retrieval pipeline's point of view nothing is wrong — the chunk matches the query, the embedding similarity is high, the citation looks legitimate. The customer is told their package is still coming. It was sitting on their porch for ninety minutes already.
Two stale chunks compound the damage
The failure gets worse, not better, when a second stale fact enters the same answer. Suppose the same delivery-tracking index also stores a promotional "guaranteed by 9am" delivery commitment that expired the previous evening. The assistant retrieves BOTH the stale status chunk and the stale guarantee chunk in one query, and produces an answer that is internally consistent, confidently worded, and doubly wrong: "your package is out for delivery under our 9am guarantee." Neither chunk is malformed. Neither retrieval call errors. The pipeline behaves exactly as designed — the design itself was wrong for this class of data.
The fix is architectural, not a tuning knob. A shorter refresh interval, a better embedding model, or an added reranking step do not touch the actual defect, because the defect is that the wrong storage mechanism is being used for this specific class of data in the first place. The correct fix is to QUERY THE LIVE SYSTEM OF RECORD DIRECTLY — a database read, or a call to the courier's live tracking API, or an internal service call — for any fact whose truth value can change faster than your refresh cycle, and to reserve retrieval for content that is genuinely stable across that same window (the carrier's standard delivery-window policy, return instructions, packaging FAQs). In the worked example, that means the "where is my package right now" step becomes a live API call to the courier's tracking system, made at request time, every time — while a question about the general delivery policy still correctly goes through retrieval, because policy text doesn't change between the moment it's indexed and the moment a customer asks about it.
| Question the assistant is answering | Right approach | Why |
|---|---|---|
| "Where is my package right now?" | Direct call to the live tracking system at request time | The fact (current scan status) can change in minutes; a retrieval index built earlier is guaranteed to eventually be wrong |
| "What's your standard delivery window for this shipping tier?" | Retrieval over indexed policy documentation | The fact (policy text) is stable across the refresh interval — retrieval's staleness risk is negligible here |
| "Is Room 412 available for tonight?" | Direct call to the property management system's live inventory | Availability can change between any two requests, including two requests seconds apart from different users |
| "What's your cancellation policy?" | Retrieval over indexed policy documentation | Cancellation terms don't change mid-session the way inventory does |
The dividing line is never the pattern (RAG vs. direct query) in the abstract — it's whether the specific fact being asked about can go stale faster than the retrieval index refreshes.
1.3.5 — Key Concept
The single most common reference-architecture mistake is retrieving from an index built over LIVE, MUTABLE state (order status, seat/room availability, ticket ownership) instead of querying that system directly. The tell: the retrieved chunk carries an implicit timestamp, and the gap between that timestamp and the query time is exactly the window in which the chunk can be lying. Ask of every retrieval source: can this specific fact change faster than my refresh interval, and does getting it wrong have real cost? If yes, it belongs behind a direct, live query — not in the retrieval index.
1.3.6 Put It Together: Auditing a Design for Missing Stages
The most useful skill from this lesson is a habit, not a fact: when you're handed a design — yours or someone else's — run it through all four stages and ask what's missing. Most flawed designs on the exam aren't wrong about the PATTERN (the processing stage); they're incomplete about the other three.
- 1.INPUT — Is there validation? Is grounding context retrieved if needed? Is untrusted data structurally separated from trusted instructions?
- 2.PROCESSING — Is the pattern from Lesson 1.2 the least complex one that satisfies the Lesson 1.1 requirements?
- 3.OUTPUT — Is there a structured-output contract? Is the response validated against it? Is there defensive parsing for when it isn't?
- 4.FEEDBACK — Is there evaluation, monitoring, and observability that would catch a regression, drift, or an SLA breach with evidence, not assumption?
A scenario that describes a system with a great processing pattern but no mention of validation, contracts, or evaluation is not a trick question about the pattern — it's testing whether you notice the other three stages are simply absent. That's the recurring shape of Task Statement 1.3 items.
Where this shows up on the exam
1.3 questions often describe a design that sounds complete because the PATTERN is well-chosen, then quietly omit an input, output, or feedback concern. Run every design through all four stages before judging it — the gap is rarely in processing.
Key Takeaways
- ✓A production design is more than a single model call — it's the shape input → processing → output → feedback loops, where processing is just the pattern chosen in Lesson 1.2.
- ✓Input-stage concerns: ingestion, validation, and retrieval of grounding context, PLUS the critical discipline of separating trusted instructions from untrusted data.
- ✓Untrusted input data (customer messages, retrieved documents) is something the model reasons ABOUT, never an instruction it obeys — blurring that line opens the door to instruction injection.
- ✓Output-stage concerns: a structured-output contract, validation against it, and defensive parsing for when a non-deterministic model violates the contract — parsing failures are an expected case, not a bug.
- ✓Feedback loops (evaluation, monitoring, observability) are MANDATORY because Claude's non-determinism makes model-version regressions, retrieval drift, and run-to-run variance normal, not exceptional.
- ✓The feedback loop is what separates an architecture from a demo — it's how you prove, continuously and with evidence, that the system still meets its SLA.
- ✓Most flawed designs aren't wrong about the pattern — they're missing an input, output, or feedback concern; audit all four stages, not just processing.
- ✓The single most common reference-architecture mistake is building a retrieval index over live, mutable state (order status, availability, ticket ownership) instead of querying that system directly — the fix is a direct live query, not a shorter refresh interval or a better embedding model.
Check Your Understanding
Test what you learned in this lesson.
Q1.A design retrieves a customer's uploaded document and concatenates its full text directly into the same prompt block as the system's operating instructions, with no structural separation. What's the architectural risk?
Q2.A system extracts structured fields from invoices and passes them to downstream billing code. Which output-stage practice is non-negotiable given that model output is non-deterministic?
Q3.Why are feedback loops (evaluation, monitoring, observability) considered mandatory rather than optional in a production Claude architecture?
Q4.A reviewer says a proposed design is solid because it picked the right architectural pattern (a well-scoped workflow) for the task. What should an architect check before agreeing the design is complete?
Q5.A delivery-tracking assistant retrieves shipment status from a vector index refreshed nightly. A customer asks for an update ninety minutes after their package was actually delivered, and the assistant confidently reports it as still "out for delivery." What is the architectural fix?
Practice This Lesson