pliuzv0.1.x

Reliability

Your agent’s success rate is on the leaderboard. Its consistency is not.

Open any agent leaderboard and count the columns. There is a success rate. There is no consistency. The metric exists, it was named in 2024, and it is not there — which means you cannot know whether your agent behaves the same way twice. That is not a reason to panic. It is a reason to design differently.

Jorge Juan Moscoso Chacón, Co-founder & CTO, Pliuz
Jorge Juan Moscoso Chacón · Co-founder & CTO, Pliuz

Published September 7, 2026 · 11 min read

In short

Agent benchmarks publish capability and omit consistency. The metric that measures whether a system behaves the same way on repeated attempts — pass^k — was named in 2024 and appears on none of the leaderboards teams actually cite. That gap is not an argument that agents are bad. It is an argument that you cannot verify the property your architecture depends on, and that the safe response is the one aviation, trading, payments and automotive regulators already converged on: let the system act, bound what it can do, keep a way to stop it, and record what happened.

Key takeaways

  • Open a leaderboard and count the columns. One success rate, no consistency. The gap is checkable in thirty seconds.
  • The metric is not missing because nobody thought of it — pass^k was proposed in 2024 and reported pass^8 <25% for the frontier agents of the time.
  • Three regulators, three unrelated industries, the same four-part answer: automatic envelope, override, defined fallback when the human does not answer, and a record.
  • The critical-path claim is worth nothing unless it can fail. A check that turns the build red is a control; a sentence in a README is a wish.
  • The two failures that taught us this were ours, and neither was a model hallucination. Both were ordinary software defects in the layer that was supposed to be the safe one.

The number that is not on the board

Here are the columns of the SWE-bench Verified leaderboard, read off the rendered page on 6 September 2026:

swebench.com — table headers
#  |  MODEL  |  Agent  |  % RESOLVED  |  AVG. $  |  TRAJS  |  ORG  |  DATE  |  RELEASE

One success column. Nothing about consistency, variance, or repeated trials — the words do not appear on the page. This is not a criticism of SWE-bench, which measures what it set out to measure and does it openly. It is an observation about what the industry has decided is worth ranking.

The metric for the other half exists. The τ-bench paper introduced it in June 2024, and named the problem precisely:

τ-bench, arXiv 2406.12045 (17 June 2024)

“We also propose a new metric (pass^k) to evaluate the reliability of agent behavior over multiple trials. Our experiments show that even state-of-the-art function calling agents (like gpt-4o) succeed on <50% of the tasks, and are quite inconsistent (pass^8 <25% in retail).”

That measurement is from 2024 and it evaluates gpt-4o. Quoting it as if it described a 2026 frontier model would be dishonest, and we are not going to. The durable point is the other one: the metric was defined more than two years ago and still is not published alongside the capability numbers everyone quotes. Whatever today’s consistency actually is, you are not being told.

Why one number is the wrong number

A demo is a single attempt. Production is the same attempt, several hundred times a day, unattended, against inputs nobody previewed. Those are different questions, and a single success rate only answers the first.

It is tempting to reach for arithmetic here — take a success rate, raise it to the power of the number of daily actions, produce an alarming number. We are not going to do that either, because it assumes failures are independent and they are not: agent failures cluster on particular input shapes, particular tools, particular times of day. The honest statement is narrower and harder to argue with:

The actual problem

You do not know your agent’s consistency, because the people best placed to measure it do not publish it. Any architecture whose safety depends on that number is resting on a value nobody has shown you.

Which leaves two options. Wait for the number — or design so that you do not need it. The second is what every industry that got here before us chose.

Three regulators already had this argument

Automation displacing human decisions is not new. It happened in trading, in payments, and in driving, and in all three the regulator had to answer the same question we are asking: once the machine is good enough to act alone, what does the human still do? None of them answered “approve every action”. All three answered with the same four parts.

Read this the right way

These instruments govern automated systems. None of them legislates about AI agents, and presenting them as if they did would be a stretch. What transfers is the governance pattern, not the subject matter.

MiFID II RTS 6 — the envelope and the switch

Commission Delegated Regulation (EU) 2017/589 governs algorithmic trading. Article 15 does not ask a human to look at each order. It requires controls that act on their own:

Article 15, pre-trade controls on order entry

“…(a) price collars, which automatically block or cancel orders that do not meet set price parameters…; (b) maximum order values…; (c) maximum order volumes…; (d) maximum messages limits…”

And Recital 9 names the stop button, tying it in the same sentence to knowing who acted:

Recital 9

“An investment firm should be able to withdraw all or some of its orders where this becomes necessary (“kill functionality”). For such a withdrawal to be effective, an investment firm should always be in a position to know which trading algorithms, traders or clients are responsible for an order.”

The regulation goes further than having a switch: compliance staff must have access to it at all times. A kill switch only the on-call engineer can reach is not a control.

UN Regulation No. 157 — what happens when the human does not answer

R157 governs Automated Lane Keeping Systems. It is the most complete analogue of the three, because it is the only one that specifies the case everybody else skips.

UN Regulation No. 157 — the four parts, in its own definitions.
DimensionWhat the regulation says
Escalate to the human (2.2)“Transition demand” transfers the driving task “from the system (automated control) to the human driver”. The request is given by the system to the human.
When nobody answers (2.7)“Minimum Risk Manoeuvre” is performed automatically by the system “after a transition demand without driver response”.
Override (2.13)A driver input “which has priority over” the system’s control, “while the system is still active”.
Record (2.15)The Data Storage System for Automated Driving “enables the determination of interactions between the ALKS and the human driver”.
Is the human even there? (6.1.3)The system “shall detect if the driver is available… to respond to a transition demand by monitoring the driver”.
UN Regulation No. 157 — the four parts, in its own definitions.

Two of those rows are the ones most agent systems get wrong. A queue that escalates and then waits forever is not oversight; R157 requires defined behaviour when the human is silent. And escalating to a human who is not there is theatre; R157 requires checking first.

PSD2 — autonomy you earn and can lose

Delegated Regulation (EU) 2018/389 decides when a payment can skip strong customer authentication — when, in other words, the human step can be dropped. It requires three things at once:

Article 18

“(a) the … fraud rate … is equivalent to or below the reference fraud rates specified in the table set out in the Annex…; (b) the amount of the transaction does not exceed the relevant exemption threshold value…; (c) payment service providers as a result of performing a real time risk analysis have not identified any of the following: (i) abnormal spending or behavioural pattern of the payer; (ii) unusual information about the payer’s device/software access; (iii) malware infection…; (iv) known fraud scenario…; (v) abnormal location of the payer; (vi) high-risk location of the payee.”

Read that as an autonomy model and it is unusually modern: the ceiling scales with measured performance, and it is revoked when performance degrades. Autonomy is not declared in a config file. It is earned against a number, bounded by an amount, and conditioned on a real-time check of enumerated signals — not on judgement.

The pattern, in four parts

Strip the three regimes of their domain vocabulary and the same architecture falls out:

The pattern three regulators converged on, translated to an agent system.
DimensionWhat it means for an agent system
EnvelopeLimits enforced automatically on every action, before it happens. Amount caps, allowed operations, rate limits. Not a reviewer — a rule.
Deterministic critical pathThe decision to allow, escalate or block is made by evaluable rules, not by a model. Same inputs, same verdict, every time, and explainable after the fact.
Stop and overrideA way to halt the system while it is running, reachable by the people responsible for it — not only by whoever is on call.
Evidence and fallbackA record of what the system did and what the human did, plus defined behaviour for when the human never answers.
The pattern three regulators converged on, translated to an agent system.

Notice what the pattern does not say. It does not say the agent should be slower, dumber, or supervised keystroke by keystroke. The agent stays autonomous. What changes is that the moment where money moves, or data leaves, or something becomes irreversible, is decided by something you can read, test, and replay.

Make the claim able to fail

“No LLM in the critical decision path” is the kind of sentence that is true on the day it is written and quietly false eight months later, when someone adds a tidy little classifier to handle an edge case. Documentation does not degrade loudly. Builds do.

So we made it a check that runs in CI. It walks the transitive import closure from the modules that actually decide — policy evaluation, autonomy ceilings, approval creation, the tool gateway — and fails on three axes: an import that reaches a model provider, a string literal containing a model API host, and any model SDK declared in the package manifest, even if nothing imports it yet.

npm run check:no-llm
44 modules reached from 5 decision roots · 36 declared dependencies reviewed
exit 0

Two design details matter more than the check itself. It fails loudly when it cannot resolve an import, rather than skipping it — a check that silently ignores what it does not understand is worse than no check, because it reports green. And it fails if one of its declared roots stops existing, so a refactor cannot quietly empty it out.

The test worth stealing

Whatever guarantee you claim, ask what would have to happen for your build to go red. If the answer is “nothing”, you have documentation, not a control.

What getting it wrong actually looks like

Both of the failures that taught us this were ours, and neither was a hallucination. That is the part worth sitting with: the layer that is supposed to catch the model is written by the same people, in the same week, under the same deadline.

A concatenation. In PostgreSQL, NULL || ' seconds' is not an error — it is NULL. A deadline computed from an optional parameter therefore wrote nothing at all, silently, and the expiry job filtered on expires_at IS NOT NULL. Result: 1,752 approvals created in seventeen minutes that could never expire, never escalate, and never trigger a fallback. Every individual link in that chain was reasonable.

A gap between two thresholds. One rule routed duplicate suspicion > 0.9 to a human. A catch-all rule auto-approved <= 0.9. In between sat the entire band the product was labelling “possible duplicate” on screen — showing the warning and paying the invoice in the same gesture. On a historical corpus of real invoices, 6,125 of 8,698 took that path. A test asserted the behaviour was correct, two lines below a comment that said the opposite.

Neither defect would have been caught by a better model. Both were caught by the boring parts of the pattern: a schema constraint that made the impossible state impossible, and a test that asked the engine instead of reasoning about the rule.

Where to go from here

None of this is novel, and we would rather say so than have you find out. Reference architectures for “agents propose, something else authorizes” have been converging across the industry all year, from hyperscaler toolkits to independent projects. The pattern is becoming consensus, which is a good sign for everyone deploying agents and a bad sign for anyone selling it as a secret.

What we can offer is the long version, written down and free to take. The 15 Factor Approval Gates is fifteen principles for approval infrastructure that survives contact with an auditor — including a self-assessment where we mark our own gaps in amber rather than claiming a clean sheet. MIT licensed. Fork it, argue with it, cite it.

And if you disagree with the framing here, the most useful thing you can do is tell us which part. The argument is only as good as the objection it has survived.

Sources & further reading

Frequently asked questions

What is pass^k and how is it different from pass@1?

pass@1 is the share of tasks a model solves on a single attempt. pass^k is the share of tasks it solves on k independent attempts in a row — a measure of consistency rather than peak capability. The metric was introduced by the τ-bench paper (arXiv 2406.12045, June 2024), which reported that state-of-the-art function-calling agents of the time were "quite inconsistent (pass^8 <25% in retail)". A high pass@1 with an unpublished pass^k tells you what a system can do, not what it will do every time.

Do agent leaderboards publish a consistency metric?

Not the widely cited ones. The SWE-bench Verified leaderboard, checked on 6 September 2026, shows these columns: #, MODEL, Agent, % RESOLVED, AVG. $, TRAJS, ORG, DATE, RELEASE. There is a single success-rate column and no column for consistency, variance, or repeated trials. You can verify this yourself in about thirty seconds.

If models keep improving, does consistency stop mattering?

Improvement in single-attempt accuracy does not tell you about repeatability, and repeatability is what an autonomous agent needs when it takes hundreds of actions per day unattended. The honest position is not "agents are unreliable" — it is that the number that would settle the question is not published, so a system design that depends on the answer is a system design resting on an unknown.

Does regulation actually require a human in the loop for automation?

Not in that form. In the three regimes examined below — MiFID II RTS 6 for algorithmic trading, UN Regulation No. 157 for automated lane keeping, and the PSD2 strong customer authentication standards — regulators did not require a human to approve each action. They required an automatically enforced envelope, a way to stop the system while it is running, defined behaviour for when the human does not respond, and a record of the interaction. Note that these instruments govern automated systems generally; none of them legislates about AI agents.

How do you prove a decision path is deterministic rather than just claiming it?

By making the claim fail a build. A static check can walk the transitive import closure from the modules that make decisions and fail if any of them — or any dependency declared in the package manifest — reaches a model provider. A claim in a README is documentation; a check that turns red is a control. The difference matters because the first one degrades silently and the second one cannot.

Keep reading