惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
D
Docker
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
月光博客
月光博客
S
SegmentFault 最新的问题
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
When AI Says "Done", Whose "Done" Is It?
synthaicode · 2026-06-22 · via DEV Community

Yesterday your AI agent delivered.

The worklist was complete. The checks passed. The output was well-formed. Nothing was obviously broken. No missing section. No failed test. No malformed result.

Then you read it.

And something was off.

Not wrong. Off.

Every fact was correct. Every requirement was technically satisfied. But the output was centered on the wrong thing. It optimized for completeness when you needed a decision. It hedged when you needed a position. It produced a competent answer to a question adjacent to yours.

You could not file a bug. The agent did exactly what a reasonable agent would do.

That is the problem.

In my previous article, I asked: when an AI says "done", what is done?

That question was about completion. Agents can mark work as finished even when work was skipped, hooks were bypassed, or state was misrepresented. The structural answer was the Skill Operating Contract: make "done" machine-checkable before execution starts, so completion is verified rather than self-declared.

This article is about the failure mode underneath that.

A contract can verify that declared conditions were met.

It cannot verify that the declared conditions were yours.

When an agent finishes and the work is not incomplete, but still wrong in direction, you are not looking at silent completion.

You are looking at silent convergence.


The Junior Developer Analogy Works — Until It Doesn't

At first, this feels familiar.

It feels like managing a junior developer or analyst who misread the brief.

You ask for "the Q3 situation." They return a polished, exhaustive document. Every number is sourced. Every section is complete. The document is not bad. But you needed the two decisions the board has to make, not a factual survey.

Both outputs could reasonably be called "the Q3 situation."

The mismatch is not about quality. It is about frame.

You and the junior were pointing at the same deliverable, but you were collapsing the work around different centers. You wanted decision pressure. They optimized for coverage.

This is a frame mismatch, not a defect.

And that is why it survives polish. You can make the wrong-framed document more thorough, better formatted, and more rigorous, and it remains wrong. The problem is not on the page. The problem is the axis around which the page was organized.

With a human junior, this is usually repairable.

They sit in the same meetings. They absorb what the organization cares about. They learn which tradeoffs matter this quarter. Their guess is biased toward the local environment. And when they miss, feedback changes their future behavior.

Over time, they become the person who "just gets it."

A human junior self-corrects through two mechanisms:

  1. Their guess is biased toward a shared organizational context.
  2. Their mistakes accumulate into learning.

That is where the analogy breaks.

An LLM has neither mechanism.


The LLM Does Not Learn Your Axis

When an LLM fills in an unstated frame, it does not lean toward your organization's center of gravity.

It leans toward the population average.

It has been trained on a broad distribution of how people generally write, judge, explain, prioritize, and resolve ambiguity. When your judgment axis is missing, the model does not wait for it. It supplies the most generally reasonable one.

That looks helpful.

It is also dangerous.

The junior's guess is an approximation of your shared context.

The LLM's guess is the absence of your context, covered with the global default.

The second difference is learning.

A junior can internalize correction. You say, "Not like that — I needed the decisions," and the next time the frame changes.

An LLM does not become your junior through repeated correction in the same organizational sense. It can use context inside a session. It can follow examples you provide. But it does not structurally accumulate your organization's judgment axis as a person would.

The missing axis is not missing information that the model can discover by trying harder.

It is a value choice that has not been supplied.

And value does not live inside the training distribution.

This is the load-bearing distinction:

The mechanism that produces the mismatch looks similar in a junior and an LLM.
The mechanism that removes the mismatch exists in the junior and does not exist in the LLM.

The most expensive mistake in AI-assisted work is importing the management expectation from humans: "It will get it eventually."

For a junior, that expectation is often correct.

For an LLM, it is structurally false unless the judgment axis is explicitly supplied.


Convergence Has a Subject

Before an AI says "done", it has already converged.

That is what LLMs are good at. They collapse a large space of possible responses into one output. Given enough context, they produce a coherent answer.

But convergence always has a subject.

Converged toward what?

There are two very different answers:

  • Convergence to the distribution: the model settles on what is broadly likely, reasonable, and expected.
  • Convergence to your judgment: the output lands on the tradeoff your team, project, or organization would actually choose.

The model can do the first by default.

It cannot know the second unless you supply it.

Your specific judgment axis is not automatically present in the prompt. It is not guaranteed to be present in the documentation. It is not guaranteed to be inferable from the task description.

The model may still converge cleanly.

That is the trap.

From the model's point of view, a clean convergence to the global default and a clean convergence to your judgment can look identical. The answer is coherent. The structure is complete. The checklist passes.

The agent reports success.

But it has converged to the average, not to you.

That is silent convergence:

The model collapses to the population default and reports it as done, with no signal that your judgment axis was never present.

Silent completion is easier to catch. Something is missing. A hook did not run. A file was not changed. A test was skipped.

Silent convergence is harder.

The output is complete, coherent, and reasonable.

Reasonable to everyone.

That is exactly the problem.

It is no one's answer in particular, and it is being handed to someone in particular.


Non-Convergence Is Often a Useful Signal

This also changes how we should interpret model uncertainty.

When an LLM cannot settle, the usual reaction is to treat that as weakness. Add more instructions. Run another loop. Force a final answer.

Sometimes that is correct.

But often, non-convergence is a signal.

The model may be exposing a missing judgment axis.

There may be two incompatible goods in play:

  • speed versus accuracy
  • local fix versus architectural correction
  • customer-specific workaround versus product-level design
  • completeness versus decision clarity
  • safety versus convenience

If no value has been supplied to choose between them, there is no legitimate gradient toward one answer.

The model hesitates because the task is asking it to resolve something that belongs to a human owner.

The failure to converge is not always the model failing at its job.

Sometimes it is surfacing the exact point where human judgment is required.

But silent convergence is more dangerous because the missing axis does not always produce hesitation.

The model may converge anyway.

It may choose the global default, produce a polished answer, and mark the work complete.

So the real rule is not merely:

Escalate when the model cannot converge.

The stronger rule is:

Do not let the model converge on a question that has no supplied judgment axis — even when it can.

This is not a humility rule.

It is a control rule.

It prevents the model from substituting the global default for your judgment.


The Axis Must Come Before Execution

The design implication is straightforward.

The judgment axis has to be supplied externally, before convergence, every time.

Externally, because it is not inside the model.

Before convergence, because once the model has collapsed the problem into an answer, the default has already shaped the output.

Every time, because the model does not internalize the axis the way a human junior does.

This is the part completion contracts alone do not solve.

A Skill Operating Contract can verify that declared conditions were met. But the declared conditions themselves encode judgment. Someone must decide what matters before the agent starts.

That decision cannot be outsourced to the same model that needs the axis.

This is the human gate.

Not a fallback when the AI gets stuck.

Not a final review after the AI says done.

The human gate is the designated place where the one thing the model cannot supply is provided: an owned judgment axis.

"Owned" matters.

A value choice selects among incompatible goods. That selection must belong to someone. It must be traceable, revisable, and accountable.

The population average belongs to no one.

It cannot be corrected because no one chose it.

Only a person, team, or accountable role can own the axis.


What To Build

In practical AI-agent systems, this means the pre-execution step matters more than it looks.

Before the agent begins work, the human gate should supply at least four things.

First: the optimization axis.

What should the work collapse around?

Examples:

  • optimize for decision clarity, not completeness
  • optimize for minimal safe change, not architectural cleanup
  • optimize for traceability, not speed
  • optimize for customer impact, not internal elegance

Second: the non-negotiables.

What must not be traded away?

Examples:

  • do not change public APIs
  • do not bypass existing review hooks
  • do not invent requirements
  • do not silently ignore ambiguous business rules

Third: the escalation triggers.

Where must the model stop instead of guessing?

Examples:

  • when two valid designs require different business priorities
  • when a requirement is underspecified
  • when a change affects ownership boundaries
  • when the safest technical answer conflicts with delivery pressure

Fourth: the completion contract.

What concrete evidence proves the work is done?

Examples:

  • tests run and results recorded
  • affected files listed
  • assumptions declared
  • skipped work explicitly marked
  • decision points linked back to the supplied axis

Without the first three, the fourth is not enough.

A completion contract can verify that the task closed.

It cannot tell you whether the task closed around the right center.


This Is Not "AI Is Worse Than a Junior"

The tradeoff is more interesting than that.

A human junior can internalize your axis. That is useful. But it also makes the axis implicit. It lives in someone's head. It varies by person, mood, memory, and local exposure. It may never be written down. When that person leaves, the axis leaves with them.

An LLM does not internalize the axis. That is inconvenient. But it creates a different advantage: the axis has to be externalized.

Because it must be supplied every time, it can be written down every time.

That makes it traceable.

It makes it reviewable.

It makes it auditable.

The junior gives you self-repair with buried reasoning.

The LLM gives you no self-repair, but the opportunity for fully externalized reasoning.

Neither is automatically superior.

The design mistake is pretending we have the first tradeoff when we actually have the second.


Where This Leads

This is the layer above completion.

Completion asks:

Did the agent do what it said it would do?

Silent convergence asks:

Who decided what it should converge toward?

If the answer is unclear, the model will supply one.

It will converge to the most generally reasonable answer.

It will produce something clean, complete, and defensible.

And it may still be wrong for you.

This is why AI-agent work needs both parts:

  • a completion contract that makes "done" structurally verifiable
  • a human gate that supplies the judgment axis before execution

The implementation I am building around this idea is XRefKit.

The Skill Operating Contract verifies completion.

The human gate supplies the axis the contract verifies against.

Those are not separate features. They are two halves of the same control problem.

Because when AI says "done", it has converged.

The real question is:

Converged to whose judgment?

If you cannot answer that, the answer is probably not yours.

It converged to the average.

And the average was not why you asked.