Part 2 of 2 — the architecture. Part 1 set out four production realities. This is how they are answered.
Part one described four problems: telemetry that quietly becomes a copy of every customer conversation, models that change without notice, human review that degrades into rubber stamping, and customer-facing obligations arriving unevenly across jurisdictions. None of them is solved in isolation. They are answered by one architecture, and the shape of that architecture follows directly from the shape of the problems.
Governance is not the architecture. It is one responsibility within it. An agent cannot be held accountable by prompts, dashboards, or an approval queue, because none of those sit in the path of the action. Accountability has to exist where the work happens, which is why what follows is organized around what an agent must be able to answer rather than around what a platform can display.
Four questions an agent has to answer
Delegating work to a capable person is safe not because they never get anything wrong, but because they can be asked. The same four questions apply to software that acts on a business's behalf, and each one has a different audience and a different clock.
| Plane | The question, and when it is asked |
|---|---|
| Observe — did it run, and what did it cost? | Immediate. Traces, cost by tenant and agent, latency, retrieval quality, outcome scoring. High volume, short retention, internal. |
| Govern — was it allowed? | At the moment of the action. Budgets, limits, authorization, consent, redaction, isolation. Enforcement rather than reporting. |
| Prove — can it be shown later? | Weeks or years later, to someone outside the business. Validated outcomes, authority, provenance, integrity. |
| Act — what happens about it, and what changes as a result? | Next, and continuing. Exception queue, human judgment, root cause, then the fix that prevents recurrence. It consumes the other three, which is why it comes last. |
One instrumentation layer, forked by purpose. Every consequential action is recorded, including the ones that were blocked. Validated outcomes become the record a tenant can show; failures and exceptions enter remediation, where judgment, root cause and governed changes feed the system forward.
Where enforcement actually sits
The most common design mistake is treating governance as something that reports after the fact. A budget that appears in a report once the money is spent is not a budget, and a consent check that runs after a document is requested has not protected anything.
Enforcement therefore sits at three controlled chokepoints, with each operation passing through the relevant one or more before it executes. The third is the one most often missing.
| Chokepoint | What passes through it |
|---|---|
| Orchestrator | Every agent step. Routing, retrieval, tool selection, and the reasoning between them. This is where spans originate and where tenant context is attached. |
| Model gateway | Every model call. Spend caps, rate limits, model allow lists, routing and fallback, and version pinning. One place to move traffic off a degraded model without a release. |
| Action gateway | Every tool call and external write. A model gateway governs what the agent says; it does not govern what the agent does. Refunds, record updates, sends, and deletions each need their own policy decision at the moment they fire. |
That third checkpoint is the difference between governing language and governing consequences. An agent that has been permitted to use a model has not thereby been permitted to issue a refund.
Capture once, fork by purpose
Instrumentation happens once. Every step emits a span through one open standard, tagged with its tenant at the moment of emission. That single capture then forks, because the four questions make contradictory demands on the same event.
| Property | Operational store | Validated evidence record |
|---|---|---|
| Volume | High, sampled | Low, complete |
| Mutability | Reprocessed and enriched freely | Tamper-evident, not silently rewritten |
| Retention | Short, policy configured | Long, tenant policy and obligation |
| Audience | Internal engineering | Tenant scoped, audit and export accessible |
| Failure mode | Blind debugging | Nothing to produce when asked |
The same moment has to be both disposable and durable. That is why keeping more logs does not solve the problem, and why the filter between the two stores is the whole design. If every event were promoted to evidence it would not be evidence, it would be expensive logs. If none were, there would be nothing to produce when a customer asks.
What counts as proof
A quality score is a signal, not proof. An evaluation model can indicate that an answer looked well grounded; it cannot establish that a refund reached the customer, that a record actually updated, or that consent existed before a document was requested.
Telemetry tells you what the system reported. Evidence establishes what the business can substantiate.
Promotion into the evidence record therefore depends on validation rather than scoring: acknowledgement from the system of record, deterministic reconciliation against a business rule, delivery confirmation, or human approval of the authorization decision where policy requires it.
The record also has to include what did not happen. A policy block, a denied action, an override, an abandoned workflow: these are frequently the entries that matter most in an investigation, and an audit trail containing only successes is not an audit trail. Validated outcomes become the proof a tenant can show. Failures, blocks and overrides route into remediation, and both remain in the record.
Where judgment enters
Everything above produces one output a person actually touches: a queue. Its design decides whether human oversight stays real or becomes ceremony — the failure mode Part 1 traces in detail. The architectural response to a degrading queue is to reduce what arrives rather than to add reviewers. Anything a rule can decide never reaches the queue at all. What should arrive is what genuinely needed judgment: the held action, the low-confidence answer, the case outside policy. Each item then has to be decidable in one sitting, carrying what happened, why it stopped, what the agent proposed, and a link to the full sequence behind it.
Five conditions raise an item, and naming them is what stops the queue becoming a catch-all.
| Condition | What it means |
|---|---|
| Held by policy | A governance check refused the action. Consent was missing, a cap was reached, or the model or target sat outside what this tenant is permitted. |
| Failed validation | The outcome could not be confirmed. A write returned unexpected state, a downstream system did not acknowledge, or a scored sample fell below threshold. |
| Low confidence | The agent completed but flagged itself, usually because retrieval was thin or the request sat outside the pattern it handles well. |
| Customer requested | A person asked for a person. That is an escalation obligation rather than a system judgment, and it takes precedence over the others. |
| Anomalous | Cost, latency, or volume departed from the baseline for that tenant and agent — a signal about the system rather than about one conversation. |
The operator then has five moves, and the fifth is the one that keeps the system honest: approve as proposed, edit and approve, decline with a reason drawn from a defined list, escalate to someone with more authority, or mark the flag itself as wrong. That last action is the feedback that tunes a threshold. Without it, the only available correction is to keep raising the bar until the queue empties for the wrong reason.
Every resolution closes two loops. It writes an evidence record, because a human decision to proceed carries the same weight as the agent's would have. And it returns a data point to measurement about whether the rule that raised the item was calibrated correctly. That return path is what separates remediation from a support queue. A ticket ends when it is closed. A remediation event feeds the system that raised it.
Human review resolves an exception. Remediation changes the system that produced it.
From exception to fix
Resolving an item and preventing its recurrence are different acts. An override fixes one instance. A test case catches the next one. Only a change to the system stops it happening, and which change depends entirely on what the root cause turned out to be.
| Root cause | Where the fix lives |
|---|---|
| Retrieval was wrong | Nothing returned, or the wrong material returned. The fix is in the knowledge base: missing content, poor chunking, stale documents, or filters excluding what was needed. |
| Context was right, answer was not | The agent had what it needed and still got it wrong. The fix is in instructions: an ambiguity, an unhandled edge case, or a scope boundary that was never stated. |
| Permitted but should not have been | The action passed every check and was still incorrect. The fix is policy: a threshold set too loose, a consent condition not encoded, a permission scoped too broadly. |
| Behaviour changed on its own | Nothing on the platform changed and the outcome did. The fix is at the model layer: pin a version, adjust routing, or re-baseline what good looks like. |
| Only fails under load or sequence | It works in isolation and fails in production. The fix is orchestration: timeouts, ordering, fallback paths, or concurrency. |
Most of that is configuration rather than retraining. Knowledge, instructions, thresholds and routing account for the large majority of corrections, which matters because it puts remediation within reach of a team that has no machine-learning function. Each of those changes is itself a governed change: a revised instruction, a new threshold, an updated document set each gets a version, and that version is recorded against every action taken under it. Without that, the next investigation cannot tell whether behaviour changed because the agent drifted or because somebody fixed it.
Autonomous correction sits deliberately outside all of this. A system that acts on its own findings needs observation to be complete and enforcement to be reliable first, which is why it is the last thing to build rather than the first thing to demonstrate.
Across both surfaces
An action taken on a business's behalf carries the same obligation wherever it originates, so the architecture applies uniformly across two categories of work. Conversations are a two-way exchange, opened by either party, with a customer or an employee, across chat, messaging and voice. Workflows and tasks are orchestrated multi-step work that reasons through exceptions, scheduled or event-triggered, customer-facing or internal — and a workflow may open a conversation as one of its steps. A scheduled run at nine in the morning produces the same trace, the same enforcement, and the same evidence record as a customer message at eleven at night. That uniformity is the point of a single spine.
The channel itself is a control point rather than a transport. Two obligations that Part 1 identified belong here rather than in a prompt, because a prompt can be edited and a channel setting cannot drift silently.
| Channel control | What it does |
|---|---|
| Identification | Whether the system announces itself, and in what words, configured per channel and per tenant. Every disclosure shown is recorded, because demonstrating it and doing it are separate problems. |
| Route to a person | An escalation path that carries the conversation with it, available on request rather than only when the agent gives up. Every escalation taken is recorded alongside the actions around it. |
Architectural dependencies
What follows is a dependency order rather than a delivery schedule. Actual implementation sequencing depends on team capacity and commercial priority. What does not vary is which capabilities depend on which, and one of them cannot be added retroactively at all.
| Order | Capability |
|---|---|
| 01 | The chokepoints and the spine. Nothing downstream is possible until model calls and consequential actions pass through their respective controlled chokepoints, and every agent step emits a span carrying its tenant. Instrument one path end to end before widening coverage. |
| 02 | The evidence record. Deliberately early, ahead of anything that displays it. A record that was never written cannot be reconstructed, so every week of agent activity before capture begins is a permanent gap. Capture first, expose later. |
| 03 | Enforcement at the gateways. Budgets, limits, authorization and consent checks, applied inline. Anything a rule can decide should never reach a person, because the volume that reaches a queue determines whether review stays real. |
| 04 | Measurement and scoring. Sampled quality evaluation against fixed measures, so drift appears as a trend rather than as complaints. This also produces the corpus that later supports trajectory evaluation. |
| 05 | The surfaces. Operations console and exception queue, then the tenant-facing audit view. These come after the data exists, not before, because an interface over an incomplete record teaches people to distrust it. |
The instrumentation contract
One detail decides whether any of the above works: what every span is required to carry. Agreeing this before instrumentation begins is what allows four different consumers to read one capture. OpenTelemetry generative-AI semantic conventions cover the model call, and a small namespace carries multi-tenancy. The tool-call row is the one most often omitted, and it is the row that makes an action provable.
| Span type | What it must carry |
|---|---|
| Every span | Trace identifier, tenant, agent, surface (conversation or workflow run), status, duration. |
| Model call | Requested and responding model, input and output tokens, computed cost, routing reason including any fallback. |
| Retrieval | Documents returned, top similarity score, configured threshold. A zero return is one signal of retrieval failure; low relevance is another. |
| Tool call or write | Target record, fields changed, the authorization it ran under, and the result returned by the system of record. |
The evidence record is a different artifact rather than another span: a stable identifier, the tenant, the event type, the actor, the model and prompt version, a link back to the trace that survives the trace being purged, the payload of what changed, an authoritative timestamp, and a chain link making later alteration detectable.
An agent that cannot account for itself is not autonomous. It is unsupervised.
Under the hood: four production realities shaping what we build. The diagnosis behind this architecture.
← Read Part 1