The reassuring version of an AI failure is a red error message.
The system stops. Someone investigates. The problem is visible.
The dangerous version is green.
The agent says the requirements are complete. The automated checks pass. The artifact exists. The workflow reports success. Then a real user opens it, follows the ordinary path, and discovers that the result is incomplete, implausible, or unusable.
This is not a rare edge case. It is a structural risk in agentic work.
An agent can help write the plan, produce the implementation, choose the test, interpret the evidence, and declare itself finished. When the same reasoning process participates in every layer, a mistaken assumption can travel through the entire chain without meeting an independent fact.
The business lesson is uncomfortable:
A successful run can be evidence that the system worked—or evidence that the system defined success too conveniently.
The three kinds of green failure
1. Permission was inferred, not granted
Imagine an agent presenting a proposed change during a long conversation. A stakeholder replies “looks good” to a nearby point. The agent treats the phrase as formal authorization and continues.
Nothing is malicious. The model is optimizing for helpful progress. It resolves ambiguity in the direction that lets the workflow continue.
A stronger prompt—“always obtain explicit approval”—may reduce the problem, but it does not remove it. Language remains open to interpretation.
The durable fix is a state transition outside the model:
before consequential_write:
require approval_record for this exact plan and scope
otherwise block
The approval record should be created only by a structured approval action. A casual affirmative in the transcript cannot satisfy it. The enforcement point sees state, not tone.
There is a human-factors trap here. If the gate interrupts on every attempted file or API call, the operator will learn to dismiss it. The safer pattern is to ask once at the meaningful boundary while continuing to block silently until approval exists.
Ask rarely. Ask clearly. Keep enforcing.
2. The test user was not a real user
Now imagine an authenticated application that passes its login test. The builder created a known account directly in the database, marked it verified, and used it for every check.
A newly invited user takes a different route: temporary credentials, password reset, enrollment, role assignment, and a first-session redirect. That path fails.
The builder did test authentication. It tested the world it had created for itself.
Agentic systems amplify this bias because the builder can narrate its assumptions to the verifier. “Authentication is working” becomes part of the context before the verifier has observed a single login.
Verification should therefore begin in a fresh context and reason over observed behavior. For any workflow with identities or roles, the evidence contract should cover the lifecycle that real people experience:

- first access;
- credential setup or reset;
- required enrollment;
- role-gated behavior;
- expired-session recovery;
- unauthorized and cross-boundary access rejected;
- logout and return.
The business requirement is not “authentication exists.” It is “each permitted person can complete the intended journey, and each forbidden person cannot.”
3. Every requirement passed, but the result was not real
The subtlest failure is a technically compliant artifact that nobody would accept as finished work.
A generated interface includes every required field but looks like a wireframe. A risk model returns the same answer for every input. A workflow contains a hard-coded lookup masquerading as business logic. Demonstration data appears in a live view. A design or compliance standard was loaded into context but never applied.
Traditional requirement tracing may miss all of this. Each line item can be marked complete.
This is why verification needs more than one layer.

A three-layer evidence model
Layer 1: Execution
Did the requirement run against the actual system?
Code presence is not execution. A configuration entry is not behavior. An API acknowledgment is not durable state.
The evidence should identify the action performed, the observed output, the environment, the time, and the authoritative read-back. If the task changes an external system, verify the new state from that system after the write.
Layer 2: Plausibility
Does the observed output make sense in the domain?
This layer asks questions a literal checklist will not:
- Does the result vary when the input materially changes?
- Is the output internally coherent?
- Did the system actually apply the requested standard?
- Does the artifact look and behave like the thing it claims to be?
- Is live behavior contaminated by test fixtures?
- Would a knowledgeable operator recognize this as real work?
Plausibility review is not permission for vague taste. Its findings should point to observable outputs and named expectations.
Layer 3: Verifier integrity
Can we trust the test itself?
The verifier should inspect its own evidence. Were assertions weakened until they passed? Was the generated solution shaped to the exact probes? Did every check succeed on the first attempt despite the complexity of the system? Are supposedly independent reviewers repeating the same rationale?
Instant universal success should sometimes trigger additional sampling, not celebration.
This is particularly important when an agent can modify both implementation and tests. The system should preserve protected checks or execute independent probes that the builder cannot rewrite.
Make “done” a grammar
The most useful reliability mechanism may be a small one: define completion as a machine-checkable contract.
For example:
STATUS: VERIFIED
EVIDENCE_TYPE: LIVE_EXECUTION
REQUIREMENTS_COVERED: <identifiers>
EVIDENCE_REFERENCES: <immutable run or observation IDs>
USER_JOURNEY: PASS
OPEN_LIMITATIONS: <explicit list or NONE>
A stop-time rule parses the artifact. If required markers or evidence references are missing, the agent cannot report completion. It returns to work or stops in a named blocked state.
The labels alone are not proof; they are an index into proof. The important move is converting “I believe I am done” from a sentence into a contract the system can reject.
Put catastrophic boundaries below the conversation
Some actions should not be available for negotiation.
Destructive operations, public exposure, access-control weakening, secret disclosure, and cross-tenant data movement belong in deterministic deny rules, sandbox boundaries, or separately administered policy—not in a prompt reminder.
Even those guardrails need adversarial tests. A supposedly safe temporary-directory exception can hide path traversal. A domain allowlist can be bypassed through redirects. A “read-only” capability can leak data through output.
The guardrail is software. Treat it as an attack surface.
More reviewers do not automatically create more truth
The obvious response to a weak verifier is to add another model. Then another.
That can create confabulation consensus: several agents share similar training, context, and blind spots, so they confidently agree on the same wrong explanation.
The alternative is not majority vote. It is deliberate decorrelation.
Use distinct lenses with different evidence:
- an execution checker observes the running system;
- a domain reviewer judges actual outputs;
- a policy checker reads protected state;
- a security probe attempts forbidden paths;
- a deterministic rule validates the evidence contract.
One material dissent should block completion until resolved. Before using any new reviewer as a gate, run it in evidence-only mode and measure whether it catches failures the existing system misses. If it adds noise rather than signal, remove it.
Safety features deserve evidence too.
Use a more honest status vocabulary
“Done” collapses too many states. An operational system should distinguish:
- produced — an artifact or action attempt exists;
- transport-accepted — a receiving interface acknowledged it;
- state-confirmed — a fresh authoritative read shows the intended state;
- journey-verified — a real user path works across the relevant boundaries;
- limited — the result is valid within named constraints;
- blocked — required proof is unavailable.
This vocabulary matters commercially. It prevents internal optimism from becoming a customer promise.
The check after the check
When a workflow turns green, someone should still ask:
- What path did we not exercise?
- Which assumption came from the builder?
- What would a real user do differently?
- Could the implementation have gamed the test?
- What fresh evidence would contradict this result?
The goal is not to make AI delivery slow. It is to move skepticism into reusable mechanisms so every future run benefits from it.
A dependable AI system does not avoid uncertainty by declaring success. It knows what has been produced, what has been observed, what remains unproven, and which boundary cannot be crossed without a human.
That is not bureaucracy around the agent. It is the engineering that allows the agent to carry real work.
Pyranthus ships one AI workflow with its evidence checks, approval points, and operating runbook, not a roadmap that leaves the difficult last mile to your team. Bring us a workflow.
