TAI BUI
Back to curriculum
LearnPython

Failure Modes — MAST, Groupthink, Monoculture, Cascading Errors

MAST (Cemri et al., NeurIPS 2025, arXiv:2503.13657) is the reference taxonomy for multi-agent failures. It comes from 1642 execution traces across 7 state-of-the-art open-source MAS, which failed 41-86.7% of the time. Three root categories: **Specification Problems** (41.77%) for role ambiguity and unclear task definitions, **Coordination Failures** (36.94%) for communication breakdowns and state desync, and **Verification Gaps** (21.30%) for missing validation and absent quality checks. The **Groupthink** family (arXiv:2508.05687) adds monoculture collapse (same base model, correlated failures), conformity bias (agents reinforce each other's errors), deficient theory of mind, mixed-motive dynamics, and cascading reliability failures. The loud cascade is the retry storm: a payment failure triggers order retries, which trigger inventory retries, which overwhelm the inventory service (10x load in seconds), so it needs circuit breakers. The quiet one is memory poisoning: one agent's hallucination enters shared memory, downstream agents treat it as fact, and accuracy decays so gradually that root-causing it is painful. **STRATUS** (NeurIPS 2025) reports a 1.5x mitigation-success improvement from specialized detection, diagnosis, and validation agents. Treat failure modes as engineering targets.

TIME: ~75 minutesPREREQUISITES: Phase 16 · 13 (Shared Memory), Phase 16 · 14 (Consensus and BFT), Phase 16 · 15 (Voting and Debate Topology)

Learning Objectives

  • Name the three MAST root categories (Specification, Coordination, Verification) and map an observed failure to one of them
  • Recognize the five Groupthink failures, including monoculture collapse, and explain why correlated agents break voting
  • Apply circuit breakers and capped retry budgets to stop a retry storm, and read the Build It numbers critically
  • Describe the STRATUS detection, diagnosis, and validation roles and the five-step failure-mode audit
  • Choose slow-failure proxies that catch silent drift before it becomes a visible error

Problem

Cemri et al. (2025) measured multi-agent systems failing 41-86.7% of the time on real tasks, across 7 open-source MAS. Adding more agents does not fix that, because the failures have structural causes. The MAST taxonomy names the categories, and this lesson maps each one to a detection, diagnosis, and mitigation pattern so the numbers stop looking arbitrary.

Treat failure modes as design inputs. An architecture is not good enough until you can point at each MAST category and name the mitigation you deployed for it.

Warm-up0/3
1. Why can an unverified write to shared memory hurt a multi-agent system?Warm-up
A shared board holding one entry written once by agent A, with agents B, C and D each reading it; nothing on the board marks its origin or whether it was checked.
Schematic; no specific entry text is shown.
2. Three agents built on the same base model vote on an answer. Why is their majority less trustworthy than a majority of three independent voters?Warm-up
Three voters sharing one base model all answering X, above three voters on different models; a question asks which majority deserves more trust and why.
Schematic. The shared answer X is a placeholder, not from the lesson.
3. A service starts returning confident but wrong answers, and nothing in its logs shows an error. Why is that harder to deal with than a crash?Warm-up
A clean monitoring dashboard reading zero alerts and zero errors, next to a service response that reads here is your answer, with a note that it happens to be wrong; a question asks why this is harder than a crash.
Schematic dashboard.
Check: Problem0/1
1. Multi-agent systems failed 41-86.7% of the time on real tasks. Why does adding more agents not fix that?Explain
A roughly flat failure-rate line across a growing number of agents, staying in the 55-60% band rather than declining.
Illustrative; shape matches the lesson's claim, not a captured dataset.

Concept

MAST categories

Specification Problems (41.77% of failures). The agent's task was not defined tightly enough. Examples:

  • Role ambiguity: two agents both think they are the reviewer.
  • Task underspecified: "summarize this" when the user wanted a specific angle.
  • Success criteria implicit: the agent cannot tell if it succeeded.

Mitigations:

  • Write explicit role contracts. Each agent's prompt states what it does and what it does not do.
  • Acceptance tests per task. Before the agent starts, define what "done" looks like.
  • Pre-flight spec check: a separate agent reviews the task definition before dispatch.

Coordination Failures (36.94%). Communication or state breakdowns.

Examples:

  • Two agents update shared state without synchronization.
  • A message is lost between agents (queue failure, timeout).
  • State drift: agent A thinks the task is done while agent B is still executing.

Mitigations:

  • Versioned shared state with optimistic concurrency.
  • Explicit acknowledgment for critical messages (retry until acked).
  • Periodic state-sync checkpoints to detect drift early.

Verification Gaps (21.30%). No independent check on outputs.

Examples:

  • One agent claims success and no one verifies.
  • A chain of agents each trusts the prior one's output.
  • Test coverage is missing on the emergent composed behavior.

Mitigations:

  • Independent verifier agent (Lesson 13). Read-only, with independent source access.
  • Explicit handoff contract: A's output must pass checker C before B starts.
  • Outcome logging for post-hoc analysis.

Groupthink family (arXiv:2508.05687)

Five related failures show up when agents homogenize or mimic each other.

Monoculture collapse. Same base model or training data means correlated errors. When three agents share an LLM, they share its hallucinations.

Conformity bias. Agents adjust toward the loudest or most confident peer, even when that peer is wrong.

Deficient ToM. Agents fail to model each other's beliefs, and coordination falls apart (Lesson 18).

Mixed-motive dynamics. Agents with partially aligned incentives drift toward a compromise middle that satisfies no one.

Cascading reliability failures. One component's error pattern triggers error patterns in the components that depend on it.

Cascading example: the retry storm

A classic incident pattern:

payment service fails 10% of requests
   ↓
order agent retries payment (exponential backoff but naive)
   ↓
each retry is a new order-inventory check
   ↓
inventory service sees 2x normal load
   ↓
inventory service starts timing out
   ↓
every order retries inventory check
   ↓
inventory service sees 10x normal load
   ↓
cluster goes down

The fix is classical: circuit breakers. When the downstream error rate crosses a threshold, short-circuit with cached or default results, and cap the retry budget per request.

Circuit breakers are one of the few multi-agent failure mitigations you can borrow from distributed systems without modification.

Memory poisoning (revisited)

From Lesson 13: one agent's hallucination becomes a shared-memory fact, and downstream agents reason on it. In MAST terms this is a verification gap at the shared-memory layer.

The symptom is gradual accuracy decay. You do not get a crash. You get slow drift that is hard to root-cause.

The mitigation is an append-only log, provenance, and an unwritable verifier, all covered in Lesson 13.

STRATUS: specialized agents for failure detection

STRATUS (NeurIPS 2025) reports a 1.5x mitigation-success improvement when you deploy three roles:

  • Detection agent. Watches for symptom patterns (high disagreement, retry spikes, accuracy drift).
  • Diagnosis agent. Given symptoms, infers the likely root cause from the MAST taxonomy.
  • Validation agent. After a mitigation is applied, checks that the symptoms clear.

This is SRE-style incident response applied to agent systems. All three roles can be LLM agents with specialized prompts.

The failure-mode audit

Run a failure-mode audit on a schedule, or at least per major release:

  1. Trace sample. Collect ~1000 real execution traces.
  2. Categorize. Map each trace's failures to MAST + Groupthink categories.
  3. Compute failure-by-category rate. Which categories dominate your system?
  4. Rank mitigations. Which fix would eliminate the most failures?
  5. Pick 2-3 mitigations. Implement them and re-audit next quarter.

The discipline matters more than the specific choices. Without audits, failures blend into noise and never get addressed systematically.

When systems fail silently

Silent correctness failure is the most dangerous category. A system that fails loudly (crash, exception, alert) can be monitored. A system that produces plausible but wrong outputs will not show up in exception logs. That is why verification gaps are the most expensive category per failure even though they are only 21.30% by count.

Invest in:

  • Sample-based human review.
  • Golden-dataset regression tests.
  • Cross-agent cross-checking on important outputs.

Failure vs slow failure

Immediate failures (timeout, schema mismatch, auth error) are cheap to detect. Slow failures (memory poisoning, monoculture drift, role ambiguity) are expensive to detect and prevent.

So instrument proxies for the slow ones and catch drift before it becomes a visible error. Agreement rate, retry rate, output-length distribution, and edit distance between consecutive agent versions all work.

Check: Concept0/24
1. What is MAST?Define
1642 execution traces from 7 open-source multi-agent systems flow into three unlabeled output bins sized 41.77%, 36.94% and 21.30%, with a question asking what kind of thing MAST is.
Percentages are MAST's own category shares; the bins are left unlabeled.
2. What is a Specification Problem?Define
A task reading summarize this, with a note that no angle or audience is stated and the agent cannot tell what summary was wanted, next to a question asking what a Specification Problem is.
Concrete instance from the lesson's own examples.
3. What is a Coordination Failure?Define
Agent A sends a message toward agent B, but it is dropped in the queue, marked with an X, so B never receives it; a question asks what a Coordination Failure is.
One of the lesson's own coordination examples.
4. What is a Verification Gap?Define
A chain of agent 1, agent 2, agent 3 and a final output, each arrow labelled trusts, with a note that no independent check runs anywhere in the chain; a question asks what a Verification Gap is.
One of the lesson's own verification examples.
5. Which pair of Groupthink failures matches this description: agents drift toward the loudest or most confident peer, and agents fail to model each other's beliefs?Define
Two panels: agents drifting toward the answer of the loudest, most confident peer L, and agent A wrongly assuming B believes X when B actually believes Y. A question asks for the pair of names for these two patterns.
Schematic of two distinct group behaviors.
6. What is monoculture collapse in the Groupthink family (arXiv:2508.05687)?Define
Three agents sharing one base model all independently producing the same wrong fact, with a note that none is lying and none read the others' answer first; a question asks what monoculture collapse is.
Concrete instance from the Groupthink family section.
7. What is a retry storm?Define
A vertical chain of seven steps: payment service fails 10% of requests, order agent retries payment, each retry re-checks inventory, inventory service load rises, inventory service starts timing out, every order retries the inventory check, cluster goes down. A question asks what this kind of cascade is called.
The lesson's own cascade example, drawn as a chain.
8. What is a circuit breaker?Define
Three named states, closed, open and half_open, connected by arrows for error rate over threshold, cooldown elapses, next call fails reopening, and next call succeeds closing; a question asks what this guard is called.
States named exactly as the lesson's CircuitBreaker class defines them.
9. What does STRATUS deploy to get its reported 1.5x improvement in mitigation success?Define
Three unlabeled role ? boxes in sequence feeding a bar reading mitigation success 1.5x baseline; a question asks what STRATUS deploys to reach that improvement.
Role names withheld; only the count and the reported multiplier are shown.
10. What is memory poisoning in a multi-agent system?Define
One hallucination written into shared memory, read by three downstream agents, with an accuracy line that drifts gradually downward rather than dropping suddenly.
Illustrative decay curve; no specific numbers given.
11. Why does conformity bias hurt a group of agents even when one of them is right?Explain
A loud, confident but wrong agent L and a quiet, correct agent Q, with a dashed box asking what the group settles on; a question asks why this hurts the group even though Q started out right.
Schematic of conformity bias.
12. In the retry-storm example, which mitigation stops the cascade from the payment service into inventory?Explain
The seven-step cascade chain with the sixth step, every order retries the inventory check, replaced by a dashed question-mark box; a question asks which mitigation closes this gap.
Same chain as the cascade example, with the amplifying step left blank.
13. Why does an open circuit breaker relieve a struggling downstream service?Explain
A panel of many calls reaching a struggling service before the breaker opens, then two panels after: far fewer calls reaching the service, and a dashed box asking where the rest of the calls go.
Schematic.
14. In MAST terms, which category does memory poisoning fall under?Explain
A poisoned fact with arrows to three category boxes, Specification, Coordination and Verification, each marked with a question mark beneath it, asking which one fits.
All three MAST categories shown; none highlighted.
15. A detection agent flags retry spikes and high disagreement. A second agent takes those symptoms and infers the likely root cause using the MAST taxonomy. Which STRATUS role is the second agent?Explain
A detection box watching retry spikes and high disagreement, handing off to an unlabeled role box that also takes the MAST taxonomy and outputs a root cause, which feeds a validation box; a question asks which STRATUS role the unlabeled box is.
Detection and validation named; the middle role is withheld.
16. Why does STRATUS add a validation agent after a mitigation is applied?Explain
A flow of detection, diagnosis, mitigation applied and validation, with validation highlighted and its job marked only with a question mark; a question asks why STRATUS adds validation at this point.
All four stages named; validation's purpose is the question.
17. Why are verification gaps the most expensive category per failure even though they are only 21.30% by count?Explain
A small bar reading 21.30%, share by count, next to a dashed box reading cost per failure with a question mark; a question asks why the cost side is so much larger than the count side.
Percentage is MAST's own figure for Verification Gaps.
18. Why run the failure-mode audit on a schedule instead of once?Explain
A single audit marker at time 0 next to four audit markers spaced one per quarter across a year; a question asks why the audit should repeat instead of running once.
Schematic calendar.
19. Two agents in your pipeline each assume the other is the reviewer, so both skip review. Which MAST category is this, and which mitigation fits?Apply
Two agents, A and B, each with a thought bubble reading I'm the reviewer, with a note that both believe the review is their own job and neither checks the other's; a question asks for the MAST category and mitigation here.
The stem's own role-ambiguity scenario.
20. Which example belongs to MAST's Coordination Failures category?Apply
Three empty category boxes, Specification, Coordination and Verification, with a single unlabeled incident box marked only with a question mark above them.
The incident itself is given only in the question's own options.
21. You have collected about 1000 real execution traces for a failure-mode audit. What is the next step?Apply
A stack of about six overlapping cards labelled roughly 1000 real execution traces, next to a dashed box asking what the next step is.
The audit's own later steps are withheld; only the collected traces are shown.
22. Accuracy on your production agents has slid three points over two months, with nothing in the error logs. Which proxy from the Failure vs slow failure section would most likely have caught it earlier?Analyze
An accuracy line drifting down slightly over two months with no error-log entries shown, and a note asking which proxy metric would have caught the slide earlier.
Illustrative curve matching the stem's three-point slide.
23. Three parallel agents agree 100% of the time, yet a golden-dataset check shows many of their answers are wrong. Which diagnosis fits best?Analyze
Three parallel agents all answering B with 100% agreement, next to a golden-dataset check reporting that the answer is wrong; a question asks which diagnosis fits best.
Schematic.
24. Agent A's output will trigger an irreversible action by agent B. Which design addresses the Verification Gap?Design
Agent A's output flowing through a dashed question-mark box to agent B, which then takes an irreversible action; a question asks which design closes the Verification Gap between them.
Schematic.

Build It

main.py is stdlib-only Python, built from these pieces:

  • categorize_incident and detect_groupthink map symptom flags to MAST and Groupthink categories. They are plain if checks, a scripted stand-in for a STRATUS-style detection agent.
  • CircuitBreaker tracks a sliding window of outcomes and moves between closed, open, and half-open states.
  • DownstreamService fails more often as load rises, and simulate_retry_storm tries each request up to four times against it, with the breaker on or off.

Run:

python3 main.py

Expected output:

  • Five incidents categorized. The monoculture and cascade incidents come back unknown under MAST and are caught by the Groupthink check instead.
  • Retry storm with no circuit breaker: 328 calls for 200 requests with the default seed.
  • With the circuit breaker: 140 calls reach the service and another 87 attempts are short-circuited, so the downstream service sees far less traffic at the cost of fewer successes.
Check: Build It0/4
1. When main.py categorizes its five incidents, the monoculture incident comes back `unknown` from the MAST categorizer. What happens to it?Apply
An incident flagged correlated_errors and agreement_rate_spike feeding the MAST categorizer, which returns unknown, with a dashed box marked only with a question mark asking what happens next.
Flow and the unknown result captured from running main.py's categorize_incident.
2. simulate_retry_storm tries each request up to four times. What is the most calls the breaker-off run could make for 200 requests?Apply
One request box next to four numbered try slots, representing up to four attempts per request; a question asks the most calls possible across 200 such requests.
Structure matches simulate_retry_storm's own four-attempt cap.
3. The breaker-off run makes 328 calls for 200 requests. Roughly how much amplification is that, compared with the 10x load in the incident story?Apply
A two-row table, total_calls 328 and requests 200, with a question asking how much amplification that is against the incident story's 10x.
Figures captured from running main.py's simulate_retry_storm with the breaker off.
4. You run main.py with the default CircuitBreaker and see the downstream service still hit hard before the breaker opens. Which default best explains it?Analyze
A table of CircuitBreaker's own default fields: failure_threshold 0.5, window_size 20 calls, open_cooldown_s 0.5 seconds; a question asks why the service still takes heavy load before this trips.
Values read directly from the CircuitBreaker dataclass.

Use It

outputs/skill-mast-auditor.md runs a MAST-style failure-mode audit on a multi-agent system: traces in, categorization, then a ranked list of mitigations.

Ship It

Failure-mode discipline in production:

  • MAST audit per quarter. Annual is too slow, because categories shift as your system grows.
  • Circuit breakers on every outbound call to a dependent service. Default open threshold at 5-10% error rate.
  • Golden datasets. Small, high-quality, hand-audited. Regression-test against them weekly.
  • STRATUS trio. Detection, diagnosis, and validation agents monitoring production. Start with the detection agent alone and add diagnosis when symptoms get noisy.
  • Failure budget. An explicit SLO for failure rate by category. Exceeding it triggers a stop-shipping conversation.
Check: Ship It0/3
1. Why does Ship It recommend a MAST audit per quarter rather than yearly?Explain
Two timelines: a quarterly cadence with four audit markers spread across the year, and a yearly cadence with a single marker at year end.
Schematic calendar; the reason to prefer the faster cadence is the question.
2. You are adding monitoring to a production multi-agent system, and the team can only afford to run one new agent at first. Which rollout fits?Design
Three named roles, detection, diagnosis and validation, each with a deploy order question mark beneath it; a question asks what order to deploy them in when only one new agent can run at first.
All three roles named; only the order is withheld.
3. You are adding an inventory-check call to a new order agent. Which design follows the lesson's guidance for outbound calls?Design
An order agent connected through a dashed box marked call design with a question mark to the inventory service; a question asks which design follows the lesson's guidance for outbound calls.
Schematic.
Author's Note

I'd run main.py and read the retry-storm numbers skeptically. With the default seed, the run without a breaker makes 328 calls for 200 requests, nowhere near the 10x in the incident story above. The toy caps each request at four attempts, so it can only amplify so far. What it shows cleanly is the direction: the breaker run sends 140 calls to the service and short-circuits another 87 attempts before they reach it.

The categorizer is a handful of if statements over symptom flags, not a STRATUS-style agent, and I think that is a fine place to start. Watch what it does with the monoculture and cascade incidents: MAST returns unknown, because those belong to the Groupthink family. If you build a real detection agent, give it both taxonomies from day one.

One thing I'd change before shipping. CircuitBreaker defaults to opening at a 0.5 error rate over a 20-call window, which is far looser than the 5-10% I suggest in Ship It. Set failure_threshold yourself and rerun to see what a tighter breaker costs in successes.

Exercises

  1. Run main.py. Confirm the circuit breaker caps the retry storm. Vary failure_threshold on CircuitBreaker and observe the tradeoff.
  2. Implement a slow-failure proxy: agreement rate across 3 parallel agents. When it drops sharply, trigger an alert. Simulate a monoculture drift by gradually correlating agent outputs.
  3. Read Cemri et al. (arXiv:2503.13657). Pick one of their 7 MAS systems and map its top 3 failure categories. How do these compare to what MAST predicts?
  4. Read the Groupthink paper (arXiv:2508.05687). Identify which of the five patterns is hardest to detect in production. Propose a proxy metric.
  5. Design a STRATUS-style detection-diagnosis-validation trio for a specific multi-agent system you know. Which symptoms does detection watch for? What mitigations does diagnosis recommend? How does validation confirm they work?

Key Terms

TermWhat people sayWhat it actually means
MAST"The 2026 taxonomy"Cemri 2025; 3 root categories + 14 sub-types of failures.
Specification Problem"Role ambiguity"Task or role under-defined; agents do not know what to do.
Coordination Failure"State drift"Communication or sync breakdown between agents.
Verification Gap"No one checked"Outputs accepted without independent validation.
Groupthink family"Homogeneity failures"Monoculture, conformity, deficient ToM, mixed-motive, cascading.
Monoculture collapse"Same model, same hallucinations"Correlated errors from shared base model or training data.
Retry storm"Cascading error amplification"One failure triggers retries which amplify load downstream.
Circuit breaker"Fail fast on error rate"Open when error rate exceeds threshold; short-circuit with default.
STRATUS"Incident response trio"Detection + diagnosis + validation agents. 1.5x mitigation success.
Memory poisoning"Hallucinations propagate"Shared-memory fact tainted; downstream agents reason on poison.

Further Reading

Code

Ships With