Agent Mesh: Reliability Primitives for Non-Idempotent Agent Delegation - Identity Adequacy and Evidence Adequacy
Abstract
Autonomous agents increasingly perform bounded software tasks under an orchestrator that retries, resumes, and budgets them. The machinery such orchestrators reach for is the service mesh's: retry, timeout, and error-rate circuit breaking. We report a failure study of a production agentic software-delivery platform over 147 numbered incidents spanning 81 runs, each with a measured cost and, in most cases, a mutation proof reproducing the failure. All three assumptions those primitives rest on are violated in practice, and we quantify the consequences: a loop of fifty-four consecutive successful tool calls no error-rate breaker could see; a progress signal constant by construction, guaranteeing a false trip on the third repair round and driving one run from six of six components to three; twenty-one events accumulated across six invocations of one delegation, making a correct, idempotent component unwinnable; a misrouted failure that woke five components for a two-component fault, leaving three bystanders regressing working code; and twelve incidents in which the enforcement layer blocked correct work, the most expensive costing 107 agent turns and zero accepted writes. We find one cross-cutting cause and its dual. Identity adequacy: in five separate subsystems an identity that failed to discriminate produced a confident wrong answer, and two of them derived the corrective rule independently. Evidence adequacy: a reliability decision may be taken only on evidence capable of moving, attributable to what it measures, and deterministic under identical conditions. From the findings we derive seven reliability primitives whose enforcement unit is the delegation rather than the message, and specify the controlled evaluation the study motivates but does not constitute.
Figures & tables
| what the layer blocked | measured cost | why it was wrong |
|---|---|---|
| Repair clamp restricted reads and writes to a mis-diagnosed target set | 107 turns, zero accepted writes , component lost | The one file holding the defect was outside the diagnosis; the delegation could not even read it |
| Husk check rejected a framework’s documented base-class idiom | 16 rejected writes across 4 services | Each rejection costs a turn against the no-progress budget |
| Seed gate matched a handler by callee name | 3 corrections + 2 stronger-model rounds, component lost | The platform’s own generated dispatch seam read as “nothing is seeded” |
| Appeal verified a citation against only the file the model named | 3 real quoted lines refused | Every frozen source is shown to the model; all must therefore be citable |
| Appeal accepted against a platform-generated artifact | Component killed holding a correct diagnosis | A wrongly-permissive verdict forecloses every remaining route |
| Stall detector fingerprinted a constant identifier | Run 6/6 3/6 | Every model-driven repair guaranteed stalled on round three |
| subsystem | identity that failed to discriminate | consequence |
|---|---|---|
| circuit breaker | progress fingerprint over the failing check name —a property of the strategy, identical whether four defects were fixed or none | every model-driven repair guaranteed stalled on round three; the run went 6/6 3/6 |
| effect ledger | commit id keyed on transaction id , so identical content from two transactions hashes differently | cannot deduplicate; the fingerprint is provenance, not identity |
| topology graph | a logical node name collapsing two different service databases into one projection | false edge, false green graph |
| failure attribution | scenario coverage used as causal identity | five components woken for a two-component fault; three bystanders regressed working code |
| work planner | coupling measured across components rather than per component | two components asserting one scenario would have had their artifact sets welded into a single slice |
| mechanism | status | evidence, or what remains |
| Effect declaration + transparent verification | running, measured | Overlay commit refuses undeclared writes; agent/subprocess writes discriminated by declaration. Divergence rate computable today and backfillable from archived workspaces. |
| Declaration authority + feasibility gate | running | Staged declaration, deterministic compile, dry-run admission control; refuses unsliceable units and obligations with no executable check. |
| Progress breaker + signal adequacy | running, measured | Constant-vocabulary filter; both guards read one function. Pre-fix discriminating power was zero for four recovery paths. |
| Budget lattice + degradation | running, measured | Graded refund on strict improvement; unlimited wall clock; one stronger-model round before the stop (four of eleven strategies wired). Per-delegation token ledger not built . |
| Failure routing (graph + ladder) | running; success criteria unvalidated | Blast radius 5 2 measured. Two-point graph build and checkpoint ladder running; the motivating routing case is not yet observed live . |
| Enforcement exoneration | running, measured | Thirteen gates checked at boot; clamp yielding fired five times (previously structurally zero); unprovable guards deleted. |
| rung removed | defect that surfaced | measured cost, and closure |
|---|---|---|
| Cluster slicing | An atomic component the planner could not slice was admitted without a size gate | Convergence-complexity 120 against a budget of 6; closed by making the mode an explicit flag the feasibility gate consults |
| Oracle qualification and seed gating | Required-fixture set derived as a raw union over every dependency | 11 unsatisfiable identifiers; recovery budget exhausted on a correct component. Closed by deriving the set rather than copying it: 11 3 real rows |
| Freeze and provenance | Final verifier demanded a freeze record, and separately an optional cache entry, for every component | A fully-green, verifier-approved run failed. Closed by scoping the provenance requirement to modes that produce the artifact |
| (none — new boundary) | Preview oracle recognised only bearer tokens while services authenticate via gateway-injected headers | 6 repair loops, 1 hour, byte-identical signature; unwinnable by repair. Closed by making the oracle authenticate as the gateway does |
| metric | status |
|---|---|
| Obtainable from the existing record | |
| Delegation depth distribution | reported (1/8/7 at depths 1/2/3) |
| Discriminating power, pre-fix | reported (0 for four paths) |
| Declaration–observation divergence | backfillable from archived workspaces |
| Enforcement incidents | reported ( Table I ) |
| Blast radius, before/after | reported (5 2) |
| effect-level | progress-based | failure | enforcement | unit of | |
|---|---|---|---|---|---|
| approach | dedup | breaking | attribution | correctness | enforcement |
| Service mesh [ 20 , 21 , 22 ] | — (key required) | — (error rate) | — | — | request |
| Durable execution [ 16 , 24 , 25 ] | enumerated boundaries | — (retry policy) | — | — | activity |
| Agent authorization [ 1 , 2 ] | — | — | — | partial a | action |
| Transport proxies [ 23 ] | — | — | — | — | message |
| Distributed tracing [ 19 ] | — | — | spans (RPC) | — | call |
Agent Reliability
Agent reliability studies how to make AI agents behave consistently, recover safely from failures, and remain dependable under real-world uncertainty.
See all 45 papers