Circuit breakers live in a messy world of partial data, lag, and conflicting signals. Yet, most UIs boil this complexity down to a single word: “Healthy.”
That is a lie. Usually, it’s a “convenience lie”—a desire to appear confident rather than accurate. But confidence is not the same thing as evidence. If you are going to stop or degrade safely, your UI must communicate what is True, what is Observed, and what is Unknown.
The Three Layers of Truth
When rendering breaker status, don’t collapse these three distinct concepts into one sentence:
- The Claim: What the system is asserting (e.g., “We are blocking requests”).
- The Observed: The evidence for that claim (error rates, latency, last success).
- The Unknown: The gaps (missing samples, stale windows, blocked calls).
What the UI Must Show
To build trust, your interface should answer these six questions:
1. The Claim (In Plain Language)
Do not force users to translate a state machine. Use the Decision, not just the State:
- Instead of “OPEN” → “Requests are being blocked”
- Instead of “HALF_OPEN” → “Limited traffic is being allowed”
2. The Evidence Window
Numbers look arbitrary without a time slice. Clearly state if the system is judging the “last 5 minutes” or the “last 200 samples.”
3. Sample Sufficiency
Avoid the “no data” trap. If you have insufficient samples, say it plainly: “Insufficient recent samples to assess.” Never let “Unknown” render as a confident green “Healthy.”
4. The Last Meaningful Event
Give users a handle on recency by showing one of these:
- Last successful call.
- Last failure that influenced the state.
- Time since the last state change.
5. What Happens Next
State transitions shouldn’t feel mysterious. Show the next gate in human terms:
- “Will allow 5 probes after 30s cooldown.”
- “Will close after 10 consecutive successes.”
6. The Degrade Behavior
If you are serving “last-known-good” data, label it. If you are queueing, show the backlog age. If you only show the breaker state, users will assume the rest of the system is behaving normally.
The Layout Pattern: Separate Truth from Explanation
To create a stable mental model without a “wall of text,” visually separate your UI into these zones:
| Zone | Purpose |
|---|---|
| STATUS | The current claim and the immediate decision. |
| EVIDENCE | Observed facts and the measurement window. |
| UNKNOWNS | Missing pieces and why they are missing. |
| RULES | The logic of what will happen next. |
Why Honesty is the Best Policy
People make high-stakes decisions based on your UI. They take screenshots and paste status labels into incident channels.
If your UI renders uncertainty as certainty, you will cause bad decisions. If you render uncertainty explicitly, users will forgive the messiness—because it finally matches the reality they are seeing in the logs.
The goal is not to look smart. The goal is to be honest.