Human–Machine Convergence

A reliability model for compound AI

Rajesh Ranjan Mahapatra

A first-principles reliability model for compound AI systems that separates route exposure, shared failure causes and containment, with an executable risk calculator.

© 2026 Rajesh Ranjan Mahapatra. 29 min read

A reliability model for compound AIAll Human–Machine Convergence

Reliability, evaluation and recovery

A reliability model for compound AI

A compound AI system is reliable only when its likely task paths, shared failure causes and containment controls jointly keep defects from reaching consequential effects.

TLDR

  1. Component accuracy is not system reliability because real requests take different routes through the system.
  2. Multiplying success rates works only when the route is fixed and failures are independent.
  3. Shared models, evidence, state and infrastructure create common-cause errors that make redundancy look safer than it is.
  4. The practical quantity is escaped defect probability: a local error that survives detection, abstention and recovery.
  5. Model reliability by task path, shared shock and containment, then spend effort on the dominant system exposure.

A synthetic refund assistant receives a simple request: cancel a booking and return £420. Its identity check is 99.7 per cent accurate. Its policy retriever scores 98 per cent. Its planner scores 97 per cent. Its tool-call generator scores 99 per cent. A separate model reviews the action before execution. Every component has a reassuring dashboard.

The run still fails. The retriever returns an old cancellation rule. The planner applies it correctly. The reviewer agrees because it sees the same stale rule and comes from the same model family. The payment tool accepts the request, but the network response times out after the refund has already been issued. The orchestrator retries. The customer receives £840.

Which component caused the failure? The obvious answer is to name the weakest score. That answer misses the mechanism. A stale evidence snapshot affected two reasoning stages. A supposedly independent reviewer shared the same blind spot. A timeout became a duplicate side effect because the effect boundary lacked idempotency and readback. The top event was produced by a path through the system, not by one bad part.

This is the reliability puzzle of compound AI. Modern systems combine model calls, retrieval, state, tools, policy checks, routers, verifiers and human escalation. The compound design can outperform a single model, as the Berkeley AI Research framing makes clear, but composition creates new failure geometry.1 Benchmarks such as τ-bench, ToolSandbox and AgentDojo reinforce the same methodological point: reliability must be evaluated in stateful trajectories, against rules, intermediate state and effects, not only by scoring isolated responses.678

Three questions are often collapsed into one. Model capability asks whether a model can perform a task under a specified interface. Component quality asks whether a retriever, classifier or verifier meets its local contract. Configured-system reliability asks whether the assembled system avoids a particular top event under the traffic, dependencies and controls it will actually face. The same model can sit inside two systems with radically different reliability because one system gives it broad authority and trusts its own review, while the other narrows its action contract and independently verifies effects.

The load-bearing claim of this paper is therefore not that compound systems are inevitably less reliable. Composition can add retrieval, verification and recovery that improve outcomes. The claim is sharper: the reliability of a compound AI system is a property of its route distribution, failure dependence and containment structure. Any estimate that omits one of those three can be directionally wrong, even when every component score is accurate.

The 99 per cent system that fails

Suppose a request must pass through ten stages. Each stage succeeds 99 per cent of the time. If every stage is required, every request takes the same route, and failures are independent, end-to-end success is not 99 per cent. It is 0.99 raised to the tenth power, about 90.4 per cent. At twenty stages it falls to about 81.8 per cent.

Thought experiment 1: add one innocent step

A five-stage system has identical 99 per cent components. Add a sixth component that merely reformats an answer. Nothing else changes. What should happen? Under the independence model, success falls from 95.1 to 94.1 per cent. The formatter is individually excellent, yet it consumes almost one percentage point of end-to-end reliability. Every required stage spends part of a finite reliability budget.

A landscape of alternative task paths under a shared storm A simple valley path uses three stages, a complex mountain path uses seven, and a storm labelled stale world state crosses both paths, showing that reliability depends on route and shared conditions. Simple route: three exposures Complex route: seven exposures Shared shock: stale state Same components, different routes, one condition that can affect both.
Reliability is a landscape of exposed paths A short request may touch three stages while an exception touches seven. A shared condition, such as stale world state, can cross both paths. Counting components without route frequency or shared conditions hides the dominant exposure. Illustrative.
End-to-end success declines as required stages increase Three curves show end-to-end success for 99, 98 and 95 per cent per-stage success from one to twenty stages. All curves decline with path length. 100%75%50%25%0% 15101520 Required stages on the route End-to-end success 99% per stage 98% per stage 95% per stage
High local scores still spend reliability along a path Under the independence assumption, required stages multiply. The chart does not predict a real system by itself. It shows the hidden cost of path length before routing, common causes and recovery are added. Illustrative calculation: success = an.

The multiplication is useful, but only inside a narrow box. It assumes the same route for every task. It assumes a stage has one stable error rate. It assumes errors at one stage do not make errors at another more likely. It also treats any local failure as terminal, even when a verifier, abstention gate or recovery procedure catches it.

Topology decides how errors combine

A serial pipeline behaves like an AND requirement for success: every required stage must work. A redundant pair behaves like an OR requirement only if either result is acceptable and a sound selector can recognise it. A router creates a mixture over paths. A voter introduces a new decision component whose errors must also be counted. A feedback loop makes later failure probabilities depend on earlier outputs and recovery attempts.

These topologies cannot be reduced to one average accuracy. Consider two 95 per cent solvers. In a serial decomposition where both must be correct, success is 90.25 per cent under independence. In an ideal parallel design where either correct answer is sufficient and a perfect selector identifies it, success is 99.75 per cent. In a two-agent agreement gate, disagreement may trigger abstention, so reliability depends on whether abstention counts as safe success, service failure or acceptable deferral. The parts are unchanged; the top event and composition rule change the answer.

TopologySuccess conditionUseful first calculationHidden dependency
Serial chainEvery required stage succeedsProduct of stage success, if independentEarlier defects alter later inputs
Parallel alternativesAt least one usable result survives selectionOne minus joint failureShared blind spots and selector error
RouterSelected path avoids its top eventRoute-weighted successHard cases are routed non-randomly
Feedback loopTrajectory converges before budget or safety limitState-transition or simulation modelRetries and self-generated context couple rounds

Fan-out creates a second kind of composition. A request that waits for twenty parallel services does not multiply correctness in the same way, but its deadline can be dominated by the slowest branch. Dean and Barroso showed why tail latency becomes a system property as services scale.5 In a compound AI workflow, a late retriever, tool or verifier can turn an otherwise correct trajectory into a timeout top event. Reliability must therefore specify whether “success” includes timeliness, rather than only semantic correctness.

Boundary condition

For a fixed deterministic pipeline with independently failing components and no recovery, multiplying stage success rates is appropriate. The problem is not the equation. The problem is applying it after its assumptions have ceased to describe the configured system.

Accuracy and reliability answer different questions

A component score asks how often a part produces an acceptable output on a test distribution. System reliability asks how often a defined top event is avoided for a defined workload and operating period. The top event might be a wrong answer, an unauthorised tool call, a missed service-level deadline, a duplicate payment, or a failure to escalate.

This distinction is inherited from reliability engineering. Fault-tree analysis starts with a specified undesired event and works backwards through the combinations that can cause it.2 NIST similarly treats risk as involving both probability and consequence; reliability supplies only part of that decision.11 A system can be reliable for low-stakes drafting and unreliable for irreversible execution because the top events and tolerances differ.

The top event also fixes what counts as containment. If the top event is “a wrong recommendation reaches a person”, abstention contains the defect. If the top event is “the customer receives no answer within thirty seconds”, abstention may itself be a failure. If the top event is “an unauthorised payment settles”, a correct explanatory response is irrelevant unless the authority and effect paths are controlled. Reliability numbers are meaningless without their event definition, workload and time horizon.

A practical review should therefore reject statements such as “the agent is 97 per cent reliable” unless they are completed. Reliable against which top event? On which task classes? With which route mixture? Over how many retries? Under which tool and state versions? With what deadline and recovery policy? Precision here is not bureaucracy. It prevents a local benchmark from being mistaken for a system guarantee.

The hidden assumption is independence

Imagine two reviewers that each miss a defect on ten per cent of cases. If their misses are independent, both miss together on one per cent. That number makes two-reviewer designs look attractive. Yet the calculation silently assumes the reviewers fail for unrelated reasons.

Thought experiment 2: the twins

Reviewer A and reviewer B use the same base model, prompt template, retrieved evidence and tool descriptions. Only their role names differ. Replace reviewer B with a different model family that receives independently retrieved evidence. Behaviour on easy cases stays the same. What should change on hard cases? If agreement was produced by genuine independent checking, little changes. If agreement came from shared blind spots, joint error falls. The intervention tests causal diversity, not cosmetic multiplicity.

Worked example 1: correlated reviewers

Let each reviewer have error probability p = 0.10. If the binary error indicators have correlation ρ = 0.80, their joint error can be 0.10² + 0.80 × 0.10 × 0.90 = 0.082, or 8.2 per cent. Independence predicted one per cent. The exact formula is valid only for a feasible pair of Bernoulli variables with equal marginals, but the numerical lesson is clear: small marginal error does not imply small joint error.

Agreement is an especially weak proxy for independence. Two reviewers can agree because the answer is well supported, because the task is easy, because both copied the same evidence, or because both share a misconception. The observable event “A agrees with B” does not identify which generator produced the agreement. A reliability review needs the paired outcome table: both correct, A only correct, B only correct, and both wrong. Joint wrong cases carry the information that marginal accuracy hides.

Suppose 1,000 matched cases yield 100 errors for each reviewer. Under independence, about ten joint errors are expected. If eighty cases are jointly wrong, the redundancy is mostly nominal. Yet even this comparison can overstate implementation dependence because difficult cases cluster. Stratify by task family, ambiguity, evidence quality and route, then repeat the estimate. What remains after conditioning is the residual dependence the architecture must explain.

Causal diagram of shared evidence causing correlated reviewer failures A hidden difficult case, stale evidence and shared model family influence both reviewers. An intervention replaces one model and evidence path, breaking two arrows and enabling a test of independent verification. Observed design Latent hard caseambiguity and rarity Stale evidence Shared model Reviewer Aerror indicator Reviewer Berror indicator Intervention Replace reviewer Bdifferent model and evidence path Measure paired errorsjoint misses, not agreement alone break shared paths
Redundancy helps only when the failure causes are sufficiently different A latent difficult case may affect both reviewers even after model diversity. Shared evidence and shared models add avoidable coupling. Replace one path, then measure paired misses to learn which cause mattered. Causal intervention diagram. Practitioner synthesis informed by common-cause failure analysis and multi-version software research.

The classic warning comes from software diversity. Knight and Leveson tested independently developed program versions and challenged the assumption that development independence guarantees failure independence.3 Reliability engineering names the broader pattern common-cause failure: several components fail because a shared cause reaches them through a coupling mechanism.4

The two-part definition matters. “Same model family” is a possible coupling mechanism, not a complete cause. It becomes operationally relevant when a particular stimulus, representation or training-induced blind spot reaches several components through that shared family. Conversely, two different models can still co-fail because they receive the same misleading evidence. Reliability work should record both the initiating condition and the path by which it reaches multiple stages.

This prevents diversity theatre. Changing role names, temperatures or system prompts may increase surface variation while leaving the decisive dependency untouched. Genuine diversity can come from a different model family, but also from a different sensor, evidence source, representation, algorithm, authority boundary or verification method. The design question is not “how many agents?” It is “how many causally distinct ways remain for this top event to occur?”

Four forms of coupling in compound AI

Compound AI introduces at least four distinct ways for errors to travel together.

CouplingShared causeWhy components co-failDiscriminating intervention
Input difficultyAmbiguous, rare or adversarial caseSeveral components depend on the same missing distinctionStratify by task class and condition on difficulty markers
EpistemicSame retrieved evidence or stale snapshotPlanner and verifier reason from the same false premiseUse independently sourced evidence or direct state readback
ModelSame family, training ancestry or prompt patternDifferent roles preserve the same blind spotChange model family, representation and prompt, then test paired errors
OperationalShared router, service, cache, credentials or loadOne outage or overload reaches several nominally separate stagesInject the dependency failure and observe containment
Published evidence, kept in scope

τ-bench reported that the agents in its original evaluation were both weak and inconsistent across repeated trials, motivating its passk reliability measure.6 ToolSandbox evaluates intermediate milestones, minefields and state dependencies rather than only a final utterance.7 AgentDojo separates benign utility from security outcomes in tool-using environments and showed substantial benign failures in its original evaluation even before attack.8 These are benchmark-specific snapshots, not universal failure rates. Their durable contribution is the unit of evaluation: a configured trajectory through state and tools.

Thought experiment 3: keep every component, change only routing

A system has a short path that succeeds 98 per cent of the time and a complex path that succeeds 90 per cent. Initially, 80 per cent of traffic takes the short path, giving 96.4 per cent overall success. A policy update sends only 40 per cent down the short path. No component changes, yet overall success falls to 93.2 per cent. Reliability moved because exposure moved.

Routing is therefore not plumbing around the reliability model. It is part of the model. A router that sends uncertain cases to a longer path increases the number of opportunities for failure precisely where the input is already hard. This can create selection bias: the complex route looks bad partly because it receives difficult work, while the difficult work looks manageable because easy cases are removed. Route-conditioned measurement is needed before blaming a component.

The argument in one pass
Chart · flow
flowchart TD
  A["The 99 per cent system that fails"] --> B["The hidden assumption is<br/>independence"]
  B --> C["Model the trajectory, the<br/>shock and the escape"]
  C --> D["Turn the model into an<br/>operating instrument"]
  D -. "re-test" .-> A
  classDef first fill:#0a1424,stroke:#B96D00,stroke-width:2px,color:#e6f3ff
  classDef step fill:#0a1424,stroke:#3f7da0,stroke-width:1px,color:#e6f3ff
  class A first
  class B,C,D step
A structural route through A reliability model for compound AI: from The 99 per cent system that fails to Appendices. Reading use: follow the relation, then return to the surrounding argument for evidence and limits.

Model the trajectory, the shock and the escape

The practical model needs three layers. A path says which stages a task actually visits. A shock represents a shared condition that changes several stage error probabilities. Containment represents detection, abstention, recovery or compensation that stops a local defect from becoming the top event.

A task trajectory from intent to verified outcome with escape points A horizontal sequence shows intent, identity, evidence, proposal, authority, effect and readback. Defects can enter at evidence and proposal, be caught at authority or readback, or escape to a top event. IntentIdentityEvidenceProposalAuthorityEffectReadback requested goalactor and subjectpermitted statemodel outputpolicy decisiontyped actionverified outcome defect propagates caught and rejected readback catches mismatch Top eventescaped defect
The unit that fails is a trajectory ending at an effect boundary A defect may be introduced early, propagated by correct downstream reasoning, caught by an authority gate, or discovered by independent readback. Reliability is the probability that the defined top event is avoided across these trajectories. Illustrative trajectory using typed action and verified-outcome vocabulary.

The path, coupling and containment equation

For a task class x, let r be a route and z a state of shared shocks. Let ui be the probability that stage i produces an uncontained defect after the route, shock state and prior history are known. A useful first model is:

P(top event | x) = 1 − Σr q(r | x) Σz π(z | x) Πi∈r [1 − ui(x, z, hi)] q(r | x) is the route probability for task class x. π(z | x) is the probability of a shared shock state. ui is escaped defect probability at stage i. The product assumes stage escapes are conditionally independent once route, shocks and relevant history are supplied.

The equation does not abolish dependence. It moves dependence into explicit variables. If failures remain dependent after conditioning, the product must be replaced by a joint model, Bayesian network, copula, empirical replay or simulation. Conditional independence is a testable modelling choice, not a gift from notation.

For the smallest useful implementation, decompose escaped defect probability as ui = ei(1 − diri). Here ei is the chance of a local defect, di is the chance the defect is detected, and ri is the chance recovery succeeds given detection. This factorisation assumes recovery is attempted only after detection and that the two probabilities are adequately represented by their product. Real systems may need separate branches for safe rejection, human escalation, compensation and unrecoverable partial effects.

The decomposition changes debugging. A high ei calls for a better component or narrower task. A low di calls for observability and independent checking. A low ri calls for reversible actions, idempotency or a tested runbook. Collapsing all three into “accuracy” makes teams improve the wrong layer.

History hi is included because compound systems are not memoryless. A model proposal can change the next prompt. A tool error can trigger a retry. A verifier can add a critique that steers the second attempt into a new failure mode. The route may branch after each observation. For short acyclic workflows, enumeration can be exact. For loops, partial failures and changing state, simulation or a dynamic probabilistic model is usually clearer.

Fault tree for a compound AI top event with correlated branches The top event, harmful or incorrect effect, can arise from wrong route, escaped semantic defect, or execution uncertainty. A shared shock influences retrieval, planning and verification branches. Top eventincorrect, late or unauthorised effect OR Wrong route selectedrouter or task classification Semantic defect escapesevidence, reasoning, checking Execution uncertaintytimeout, duplicate, no readback AND: defect plus containment failure Bad evidenceretrieval or state Bad proposalreasoning or tool arguments Verifier missesno abstention or recovery Common-cause shockstale state, shared blind spot, adversarial input
A fault tree becomes useful when common causes and containment are explicit The top event can arise through routing, semantic or execution branches. A semantic defect reaches the effect only when containment also fails. The dotted coral paths show one shared condition influencing several nominally separate components. Practitioner synthesis using fault-tree logic. Dotted paths indicate uncertain or shared causal influence.
Worked example 2: three stages, one verifier

Three required stages each have a two per cent local defect rate. Without containment, success is 0.98³, about 94.1 per cent. Now assume each defect has an 80 per cent chance of being detected and, when detected, a 75 per cent chance of successful recovery. The containment probability is 0.80 × 0.75 = 0.60, so the escaped defect probability at each stage is 0.02 × (1 − 0.60) = 0.008. Route success becomes 0.992³, about 97.6 per cent.

Add a three per cent undetected stale-state shock that compromises the route. Approximate success becomes 0.97 × 0.976, about 94.7 per cent. The local verifier improved reliability, but the shared shock consumed almost all the gain. The next investment should target evidence freshness or independent state verification, not another pass of the same reviewer.

Thought experiment 4: improve detection without improving the model

Keep every component error rate unchanged. Add a deterministic authority check that rejects tool calls outside a typed contract, plus a readback that verifies the resulting state. If end-to-end failure falls, component accuracy was never the only lever. Containment changes whether a defect becomes a consequence.

A realistic configured example

Consider a synthetic service assistant with three routes. Fifty-five per cent of requests only require an answer. Thirty-five per cent request a refund and cross an effect boundary. Ten per cent are exceptions that should be handed to a person. The refund path uses identity, retrieval, proposal, authority, execution and readback. The answer path stops before authority and execution.

Synthetic refund system with three routes and control points Requests enter a router and follow answer, refund or exception routes. Shared policy state feeds retrieval and reasoning. The refund route has authority, payment and readback controls. Requesttask class unknown Routerselect path 55% answer 35% refund 10% exception Answer pathidentity, retrieve, reply Refund pathidentity, retrieve, proposeauthority, effect, readback Exceptionhuman handoff Authoritytyped policy Effectrefund API Readbackstate check Policy and world stateshared by retrieval and proposal Top eventswrong answer, wrong refund, duplicate effect
The configured system determines which controls can contain which defects Only the refund route crosses the action boundary. Shared policy state can affect retrieval, proposal and execution arguments. Authority and readback reduce escaped effects, but they do not improve the answer path unless that path uses them. Synthetic configured-system example. No deployment claim.
Worked example 3: route-weighted refund assistant

Suppose the short answer path succeeds 98.5 per cent, the refund path 94 per cent, and the exception handoff 99 per cent. Route-weighted success is 0.55 × 0.985 + 0.35 × 0.94 + 0.10 × 0.99 = 96.975 per cent. This value is more informative than multiplying all six component scores, because most requests never touch all six.

It is still incomplete. If a stale-policy shock occurs on 2.5 per cent of requests and compromises both retrieval and proposal, the affected route probabilities must be recomputed under that shock. If a new router sends more traffic to the refund path, the mixture changes again. The model is therefore versioned with the configured system, traffic distribution and time window.

Worked example 4: the retry that creates a new top event

An effect API times out on two per cent of calls. In sixty per cent of those timeouts, the remote effect actually committed but the acknowledgement was lost. A blind retry succeeds 99 per cent of the time. The duplicate-effect probability is approximately 0.02 × 0.60 × 0.99 = 1.188 per cent, before any other failure is counted.

From the caller’s perspective, retrying improved response success. From the business-effect perspective, it introduced duplicates. An idempotency key changes the causal structure: the second call becomes a read or replay of the first effect rather than a second effect. Independent readback then resolves whether settlement occurred. AWS guidance on retries makes the same boundary explicit: retries are safest for idempotent operations, and poorly controlled retries can amplify overload or side effects.14

This example exposes another hidden variable: the outcome may be unknown rather than simply failed. Treating timeout as “no effect” and retrying is a modelling error. Treating it as “effect definitely happened” is also wrong. The route needs an explicit unknown-outcome state, a bounded recovery path and evidence that closes the uncertainty. Google’s reliability guidance likewise warns that overload and retry behaviour can create cascading failure rather than local recovery.13

Turn the model into an operating instrument

A reliability model is useful only when its inputs come from operating evidence. Component benchmark scores are priors, not final parameters. Route probabilities come from traces. Local defect rates come from task-stratified evaluation. Coupling comes from paired-error analysis and interventions. Containment rates come from injected defects that the system must detect and recover from. NIST’s Generative AI Profile likewise treats measurement, monitoring and risk response as lifecycle activities rather than a one-off benchmark.12

Build the first model before deployment with synthetic tasks and an operational twin, but mark every parameter by provenance. “Measured in matched replay”, “estimated from fault injection”, “borrowed from a component benchmark” and “expert assumption” are not interchangeable. Run sensitivity analysis over the assumed values. If the release decision flips across a plausible range, the missing measurement is decision-critical and should be collected before authority expands.

Do not pool traffic too early. A global two per cent error rate can conceal a 0.2 per cent rate on routine answers and a 20 per cent rate on rare irreversible exceptions. Define task classes by the causal demands of the route: read-only versus mutating, reversible versus irreversible, single-source versus evidence synthesis, and ordinary versus exceptional authority. The classes should predict route and consequence, rather than only mirror product categories.

Build the ledger before the calculator

Start with one top event. “The assistant is unreliable” is not testable. “A refund is issued for the wrong amount without being blocked or corrected before settlement” is testable. Then record each task class, route, stage, shared dependency, detector, recovery and effect boundary. The route identifier must be logged before the outcome is known, or analysis will select on success.

A minimal ledger has one row per observed or simulated trajectory. It records task class, selected route, component versions, context and state versions, shock indicators, local defects, detector decisions, recovery actions, effect receipt and verified outcome. The ledger should preserve “not observed” separately from “observed and absent”. Missing readback is not a successful effect. A missing detector signal is not evidence that no defect occurred.

Estimate route weights from the intended workload and from stress workloads. Estimate local escaped-defect rates with confidence intervals rather than point estimates alone. Estimate joint failures for components that are meant to provide redundancy. For rare severe top events, direct frequency may be unavailable; combine structured fault trees, conservative bounds, targeted injection and explicit uncertainty rather than inventing precision.

Measurement protocol

For each task class, replay representative cases across repeated stochastic runs. Record stage-level defects, route choice, shared context identifiers, tool responses, detector outputs, recovery attempts and final verified state. Inject one fault at a time, then paired faults that share a cause. Estimate not just P(error), but P(error escapes | route, task class, shock).

Path length and shared shocks consume the same reliability budget The cells show top-event probability when each stage has a 0.5 per cent escaped-defect probability and a shared shock causes route failure. The numbers are illustrative, but the decision pattern is real: once common-shock exposure dominates, polishing local stages yields diminishing returns. Illustrative calculation: 1 − (1 − shock) × (1 − 0.005)stages.

Executable lab: compound risk calculator

Edit the JSON, then run a seeded Monte Carlo simulation of route selection, local defects, shared shocks and containment.

Probabilities use decimals from zero to one. Route weights must sum to one. Detection and recovery are multiplied to model containment.

Naive fixed-chain success-All components multiplied once, ignoring routes, shocks and containment.
Path-weighted local success-Routes and local containment included, shared shocks excluded.
Simulated system success-Includes route selection, shared shocks and containment.
Top-event probability-Dominant escaped cause will appear here.

The calculator is a decision instrument, not a certification engine. A positive result means one design has lower estimated top-event probability under the supplied assumptions and workload. A negative result means the proposed control did not reduce risk under that model, or that its benefit was offset elsewhere. Neither result establishes production reliability without representative traces, calibrated fault injection and independent outcome verification.

Use it comparatively. Clone the configuration, change one mechanism, and keep the workload fixed. Replace the second reviewer with an independent evidence path. Add a typed authority gate. Move low-confidence tasks to human review. Add readback and idempotency. The useful output is not a decimal alone, but the difference in top-event probability and the cause whose contribution changed.

Then reverse the question. Hold the architecture fixed and alter the workload. Increase the share of long routes, raise the common-shock probability, or lower recovery effectiveness during peak load. This reveals cliffs that an average-case estimate hides. A design that looks acceptable only when every uncertain parameter takes its optimistic value does not have a reliability margin.

Python version of the simulator and assumptions

The browser calculator uses the same logic as the compact Python implementation below. It assumes route selection is independent of the random draws after conditioning on the supplied route weights. A shock is sampled once per trial and may affect several stages. A failed stage is contained only when both detection and recovery succeed.

Python
from __future__ import annotations

from dataclasses import dataclass
from random import Random
from typing import Dict, List


@dataclass(frozen=True)
class Component:
    error: float
    detect: float
    recover: float


@dataclass(frozen=True)
class Route:
    name: str
    weight: float
    steps: List[str]


@dataclass(frozen=True)
class Shock:
    name: str
    probability: float
    affects: List[str]
    fail_probability: float
    detect: float
    recover: float


def contained(rng: Random, detect: float, recover: float) -> bool:
    return rng.random() < detect and rng.random() < recover


def choose_route(rng: Random, routes: List[Route]) -> Route:
    draw = rng.random()
    cumulative = 0.0
    for route in routes:
        cumulative += route.weight
        if draw <= cumulative:
            return route
    return routes[-1]


def simulate(
    components: Dict[str, Component],
    routes: List[Route],
    shocks: List[Shock],
    trials: int = 100_000,
    seed: int = 185,
) -> dict:
    if abs(sum(route.weight for route in routes) - 1.0) > 1e-9:
        raise ValueError("Route weights must sum to one")

    rng = Random(seed)
    failures = 0
    escaped_causes: Dict[str, int] = {}

    for _ in range(trials):
        route = choose_route(rng, routes)
        active_shocks = [s for s in shocks if rng.random() < s.probability]
        top_event = False

        for step in route.steps:
            component = components[step]
            causes: List[tuple[str, float, float, float]] = []

            if rng.random() < component.error:
                causes.append((f"local:{step}", 1.0, component.detect, component.recover))

            for shock in active_shocks:
                if step in shock.affects and rng.random() < shock.fail_probability:
                    causes.append((f"shock:{shock.name}", 1.0, shock.detect, shock.recover))

            for cause, _, detect, recover in causes:
                if not contained(rng, detect, recover):
                    failures += 1
                    escaped_causes[cause] = escaped_causes.get(cause, 0) + 1
                    top_event = True
                    break

            if top_event:
                break

    success = 1.0 - failures / trials
    dominant = max(escaped_causes, key=escaped_causes.get, default="none")
    return {"success": success, "failure": 1.0 - success, "dominant": dominant}

What it cannot establish: the code cannot discover missing shock classes, prove causal independence, estimate consequence severity, or compensate for unrepresentative task data. Those remain empirical and governance obligations.

Use fault injection to estimate containment

End-to-end success alone cannot reveal why a system survived. Inject a stale retrieval result, a malformed tool response, a permission revocation, a partial timeout and an inconsistent readback. For each injection, record whether the defect was detected, whether execution was blocked, whether recovery succeeded and whether the verified outcome matched the intent.

Recent multi-agent failure taxonomies distinguish specification and system-design failures, inter-agent misalignment, and task verification or termination failures.9 Preliminary MAS-FIRE work extends this direction with systematic fault injection and reports topology-dependent differences in fault containment.10 A recent agent-reliability agenda likewise argues that a single success score should be decomposed into consistency, robustness, predictability and safety.15 These proposals are promising but should be treated as early evidence until independently replicated across tasks and architectures.

A useful campaign varies both the fault and the observation point. Inject a bad retrieval result before planning, then inject the same defect after planning as a corrupted tool argument. If only one is caught, the location matters. Inject two defects with the same semantic content but different encodings. If both bypass the verifier, the vulnerability may be conceptual rather than lexical. Inject the same fault under the short and long routes. If containment changes, topology or budget is part of the cause.

Measure graceful outcomes, not just binary completion. The system may block safely, ask for clarification, escalate with a complete case packet, compensate an effect, or stop with unknown outcome. These states have different operational costs and consequences. They should not all be merged into “failure”, but none should be silently counted as success.

Adversarial failure path through retrieval, planning, verification and execution Untrusted data contains an injected instruction. Retrieval passes it to a planner and a verifier that share a model. Both accept it, but a deterministic authority gate blocks the unauthorised action. Failure path Untrusted dataembedded instruction Retrieverreturns mixed data Plannertreats data as intent LLM verifiersame blind spot Deterministic authority gateactor, subject, purpose, capability Blocked effectescalate with receipt Why the second model did not help • same instruction-data ambiguity • same evidence object • agreement measured, not causal independence
Independent containment should fail differently from the model it supervises An LLM verifier may inherit the planner’s instruction-data confusion. A typed authority gate does not need to understand the entire semantic task. It can still reject an action that lacks the required identity, purpose or capability binding. Illustrative adversarial path, informed by AgentDojo’s tool-use threat model.

The strongest rival explanation

Paired failures do not automatically prove architectural coupling. Hard inputs can make every competent component fail. A stale policy may be correlated with unusual cases. Route changes may coincide with a new customer population. The rival explanation is unobserved task difficulty, not shared implementation.

Test the rival by conditioning on task features and intervening on the suspected coupling. If two reviewers remain correlated after matching on task difficulty, then replace one model, prompt, evidence source or tool path. If correlation falls, the changed dependency was causal. If it does not, the shared difficulty or an unmeasured cause remains. This is why a dependency graph should be paired with controlled substitutions, not treated as proof.

Open research hypothesis

Route-conditioned paired-error signatures may predict which compound systems will benefit from diversity before full deployment. The hypothesis is strengthened if low paired-error overlap under controlled faults predicts lower top-event rates on held-out trajectories. It is weakened if overlap changes do not transfer to end-to-end outcomes. A rival explanation is that the diversity intervention merely changes task difficulty or latency. The smallest useful study uses two matched reviewer designs, a fixed task set, explicit fault classes and verified final state.

Choose the next control from the dominant exposure, not from fashion When common causes are low and containment is strong, component improvement can pay. When coupling is high, diversify and decouple. When containment is weak, add independent gates before spending on another model. High coupling plus weak containment is a scope and authority problem. Decision instrument. Axes require measured route-conditioned evidence.
Decision rule

Do not add a reviewer, agent or retry until you can state which top-event path it breaks, which failure causes it does not share, and how its own failure is contained. Additional components are reliability controls only when they alter the causal structure of escape.

How the claim changes under pressure
Chart · state
stateDiagram-v2
  [*] --> Claim
  state "Topology decides how errors<br/>combine" as Claim
  state "Accuracy and reliability<br/>answer different questions" as Test
  state "Four forms of coupling in<br/>compound AI" as Revision
  Claim --> Test: expose mechanism
  Test --> Decision: evidence survives
  Test --> Revision: rival survives
  Revision --> Claim: narrow or rebuild
  Decision --> [*]
The revision loop begins with Topology decides how errors combine and keeps counterexamples inside the reasoning path. Reading use: follow the relation, then return to the surrounding argument for evidence and limits.

Budget escaped defects by route, not component score

The common reliability review asks whether each model, retriever and tool meets a target score. The better review asks whether the configured system keeps a defined defect from reaching a defined consequence across the routes that real work will take.

That change moves engineering effort. A weak local component with strong independent containment may be acceptable. A high-scoring reviewer that shares evidence and model ancestry with the planner may add little. A router can change reliability without changing any component. A deterministic authority gate can reduce consequential failure without making the model more accurate. A readback can turn an unknown outcome into a recoverable one.

The release decision should be based on route-conditioned escaped-defect probability, with common causes and containment measured explicitly. Set a top-event budget for each task class. Reject any design whose estimate depends on untested independence. Require evidence that proposed redundancy fails differently. Recompute the model whenever routing, evidence sources, model families, tool contracts or recovery procedures change.

The model will never contain every shock. That is not a reason to return to component averages. It is a reason to version assumptions, inject failures, monitor new paired-error patterns and preserve a safe authority boundary. Reliability is not the absence of local error. It is the configured system’s ability to prevent error from becoming an unverified effect.

For a release meeting, this produces a concrete packet: the top-event definition, route distribution, common-cause register, containment measurements, uncertainty ranges, sensitivity results and evidence receipts for the highest-risk paths. The packet should also name prohibited inferences. A low simulated top-event rate does not prove that the shock catalogue is complete. A diverse model pair does not prove independence. A successful readback test does not prove every external system exposes authoritative state.

The next design decision is therefore explicit. Improve a component when local defects dominate. Decouple evidence and reviewers when common causes dominate. Add typed gates, abstention and recovery when containment is weak. Narrow authority when both coupling and containment remain poor. Reliability engineering begins when the team can say which causal path its next control removes.

The evidence conversation
Chart · sequence
sequenceDiagram
  participant Q as Question
  participant M as Mechanism
  participant E as Evidence
  participant D as Decision
  Q->>M: The 99 per cent system that fails
  M->>E: Topology decides how errors combine
  E-->>M: compare rival explanations
  E->>D: Appendices
  D-->>Q: revise scope or act
Question, mechanism, evidence and decision exchange the burdens developed in A reliability model for compound AI. Reading use: follow the relation, then return to the surrounding argument for evidence and limits.

Appendices

Compact glossary
Top event
The specific undesired system outcome whose probability is being estimated.
Route
The ordered set of stages actually exercised by a task class and runtime decision.
Local defect
A wrong, late, malformed or unauthorised stage output before containment.
Escaped defect
A local defect that survives detection and recovery and can contribute to the top event.
Common-cause shock
A shared condition that changes the failure probability of several components through a coupling mechanism.
Containment
Detection, abstention, rejection, recovery, compensation or readback that prevents a defect becoming the top event.
Conditional independence
The assumption that stage escapes are independent after route, shocks and relevant history are specified.
Reliability budget
The maximum tolerated top-event probability for a defined task class and operating context.
References
  1. Zaharia, M. and colleagues. “The Shift from Models to Compound AI Systems.” Berkeley Artificial Intelligence Research, 2024. Primary source.
  2. Vesely, W. E., Goldberg, F. F., Roberts, N. H. and Haasl, D. F. Fault Tree Handbook, NUREG-0492. U.S. Nuclear Regulatory Commission, 1981. Official record.
  3. Knight, J. C. and Leveson, N. G. “An Experimental Evaluation of the Assumption of Independence in Multiversion Programming.” IEEE Transactions on Software Engineering 12(1), 1986, 96-109. DOI.
  4. Stott, J. E. and colleagues. “Common Cause Failure Modeling: Aerospace vs. Nuclear.” NASA, 2010. NASA Technical Reports Server.
  5. Dean, J. and Barroso, L. A. “The Tail at Scale.” Communications of the ACM 56, 2013, 74-80. Google Research.
  6. Yao, S., Shinn, N., Razavi, P. and Narasimhan, K. “τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains.” 2024. arXiv.
  7. Lu, J. and colleagues. “ToolSandbox: A Stateful, Conversational, Interactive Evaluation Benchmark for LLM Tool Use Capabilities.” 2024. arXiv.
  8. Debenedetti, E. and colleagues. “AgentDojo: A Dynamic Environment to Evaluate Prompt Injection Attacks and Defenses for LLM Agents.” 2024. arXiv.
  9. Cemri, M. and colleagues. “Why Do Multi-Agent LLM Systems Fail?” 2025. arXiv preprint.
  10. Jia, J. and colleagues. “MAS-FIRE: Fault Injection and Reliability Evaluation for LLM-Based Multi-Agent Systems.” 2026. arXiv preprint.
  11. National Institute of Standards and Technology. Artificial Intelligence Risk Management Framework (AI RMF 1.0), NIST AI 100-1, 2023. Official publication.
  12. National Institute of Standards and Technology. Artificial Intelligence Risk Management Framework: Generative Artificial Intelligence Profile, NIST AI 600-1, 2024. Official publication.
  13. Ulrich, M. “Addressing Cascading Failures.” Site Reliability Engineering. Google, 2016. Official online chapter.
  14. Amazon Web Services. “Retry with backoff pattern.” AWS Prescriptive Guidance. Official guidance.
  15. Rabanser, S. and colleagues. “Towards a Science of AI Agent Reliability.” 2026. arXiv preprint.