Stand-Pat
The Option to Do Nothing Is a Move
In 2003 my chess engine sacrificed its queen for a pawn at a tournament — and the evaluation never flinched. The cause was one missing line.
That line is a stand-pat: a scored option to do nothing. Leave it out of any system that chooses — a search, an agent, a panel of AI advisors — and it stops being decisive and starts being compelled.
The argument in three lines
- •A chooser with no null candidate is compelled, not decisive — the status quo never gets to veto a bad action.
- •Missing-null bugs don’t crash; they bias — the confidence signal stays clean until the damage is done.
- •The fix is one line: score the status quo, and let it win sometimes — in retrieval, agents, and the panels you convene.
Scott Farrell · LeverageAI
The Queen Sack
An engine sacrifices its queen for a single pawn at a tournament, and the evaluation on the screen never so much as flinches. The bug behind that calm is one missing line — and it’s the whole of this book.
TL;DR
- •A chooser with no null candidate isn’t decisive — it’s compelled. Strip a system of the right to answer “none of these” and it will manufacture a move from whatever’s on offer.
- •These bugs don’t crash. They bias — and the confidence signal stays clean right up until the damage is done.
- •The fix is one line and it’s structural: score the status quo as a move, and let it win sometimes — in your search, your retrieval, your agents, and the AI panels you convene to check your own ideas.
In January 2003 I entered a chess engine I’d written into a Computer Chess Tournament for the first time. It played some genuinely good games. It also, more than once, did this: queen takes pawn, pawn takes queen. It had handed a full queen to the other side for a single pawn, for no reason a human would recognise — and the evaluation on my screen didn’t so much as flinch beforehand. No warning. The score stayed calm, the engine looked confident, and then the material was simply gone.
I’d sit there watching it and think the obvious thing: dude, you just sacked your queen for a pawn. For nothing. And the number that was supposed to tell me how the game stood had sat there, serene, right up until the point where even it couldn’t pretend any more, and dropped to minus nine in a single ply.
It took me months to find the cause, because the engine was not broken in any way that looked like broken. It didn’t crash. It didn’t always lose — it finished mid-field, around four points out of nine, which is exactly the kind of score that tells you nothing is obviously wrong. It played plausibly most of the time and catastrophically some of the time, and from the outside those two were indistinguishable. When I finally found the bug, it turned out to be one missing line.
That line is why I’m writing a book instead of a bug report. Because in the years since, I have watched the same missing line ship in retrieval pipelines, in AI agents, and in the way clever people convene AI to pressure-test their own decisions. It’s the same bug every time, wearing different clothes. Learn to see it in a chess engine and you’ll start seeing it everywhere in your own stack.
Compelled is not the same as decisive
Here is the shape of what went wrong, stated before any of the chess machinery, because the machinery is just one instance of it. My engine, in the part of its search where it decided what to do in sharp positions, generated a list of candidate moves — and then it was required to pick one of them. It had no way to run through the whole list and say: none of these; I’ll keep the position I’ve got.
So when a capture existed on the board, the engine took it, because taking something was the only kind of answer it could give. Queen-takes-pawn happened not because the engine was aggressive but because a capture was available and the loop had to choose. That distinction is the entire book, so let me put it in the sharpest form I can.
That qsearch bug is a beautiful one, because the bug is a philosophy statement — I’d accidentally made captures mandatory. That’s not aggression. It’s compulsion. The engine wasn’t playing sharp chess; it had no right to decline.
Sit with that, because the intuition it corrects is deep. From the outside, a system that always acts looks decisive. It ships. It produces an answer. It never stalls. We are trained to read that as strength. But an engine that must capture isn’t being decisive — it has had its power to decline surgically removed. What’s left is not a bolder chooser. It’s a chooser that has lost the ability to leave things alone.
Key Insight
Decisiveness includes the option of no. A system that can only ever say yes isn’t decisive — it’s compelled, and compulsion looks exactly like confidence until the material walks off the board.
The general claim — the one this whole book defends — is this: any system that must choose from a candidate list will fail wildly unless “none of these” is itself an evaluated candidate. Without it, the value of the current position never gets to veto a bad action. The status quo has no vote. And a chooser in which the status quo has no vote will keep trading queens for pawns, in chess and everywhere else, while reporting that everything is fine.
There is a name for the missing line. In chess programming it’s called the stand-pat — and it is, quite literally, the ultimate nudge: the null move that says maybe nothing here is worth doing. I’ve written separately about why a small advisory signal, handed to a single judge, is such a load-bearing pattern across a whole retrieval stack. This book zooms all the way in on one member of that family: the signal whose entire job is to make “do nothing” a move the system is allowed to play.
Where we’re going
The rest of this book is short and it climbs in three steps. First, the doctrine: what the missing line actually is, why it’s a one-line fix, and — the part that matters most for anyone shipping software — why a bug like this hides so well that it can cost you months. That’s Part I.
Then the receipts. This isn’t a parable I invented to make a point; it happened, and I went back twenty-two years later and found the paper trail, including a warning I’d been sent in writing at the time and never understood. Part II is that piece of archaeology — and an honest account of the holes in the record.
Finally, the reason you’re reading a chess story in a book about AI: the same missing line, alive right now in three systems you probably use or build. A retrieval pipeline that always returns something. An agent that won’t stop talking. A panel of AI advisors that only ever agrees with you. Part III is that tour, and it ends with a single test you can run against anything that offers you an answer.
But all of that rests on one small piece of chess machinery and the one line I left out of it. So let’s go and look at the line.
Stand-Pat
The fix for a queen-donating chess engine is one line, it has a name, and the name is borrowed from poker. Here is exactly what it does — and the one exception that makes the rule sharp.
To see the missing line you need a little chess-programming background, and I promise it transfers cleanly — the mechanism is the point, so it’s worth getting right.
A chess engine can’t search a position all the way to checkmate; the tree is far too big. So it searches a few moves deep and then stops and evaluates the board — counts material, weighs king safety, pawn structure, and so on — to guess who’s winning. The trouble is that a fixed search depth can chop a position off in the middle of an exchange. If your search stops the instant after you’ve grabbed a pawn but before the opponent recaptures, you’ll happily record that you’re a pawn up — while you’re actually about to lose a bishop.
What quiescence search is for
The standard fix for that is quiescence search. When you hit your depth limit, don’t evaluate a “noisy” position where captures are still hanging in the air. Instead, keep searching — but only the forcing moves, the captures and checks — until the board goes quiet and the static evaluation can actually be trusted. You resolve the tactics first, then you score. Quiescence is what stops an engine from being fooled by the exact half-finished exchange I just described.
Quiescence isn’t “search all the captures.” It’s “search all the captures against the option of doing nothing.” The current static evaluation is a candidate move that always sits in the list.
And there it is — the line I left out. In a correct quiescence search, before you look at a single capture, you first take the evaluation of the current board and enter it as a candidate: a floor the captures have to beat. If a capture leads somewhere better than the quiet position, good, take it. If none of them do, you keep the quiet position. You are always allowed to run through every capture on the board and conclude: no, none of these; I’ll stand with what I’ve got.
This is not an exotic trick I’m dressing up after the fact. It is a real, standard, named technique, and the name is instructive. It’s called the stand-pat score, and the term is lifted straight from poker, where “to stand pat” means to play the hand you’re holding without drawing any new cards.1 The stand-pat is a lower bound on the position: at least this good. Search the captures against it, and take one only if it beats standing pat.
Definition
A stand-pat is the current position’s own evaluation, entered into the candidate list as a move the loop is allowed to end on.
It doesn’t forbid any action or force one. It just gives “do nothing” a score, so that every proposed action has to be better than the status quo before it’s taken.
My bug was simply that this candidate wasn’t in the list. My loop generated all the captures and made the engine choose one of them, full stop. It never occurred to my code that you could look at every capture on the board and still decline. As I put it to myself when I finally understood it: I forgot to tell it that it doesn’t have to capture — that you can run through all the captures and still say no, I don’t want any of these. Without the stand-pat, the side to move was compelled to grab. The floor wasn’t there, so anything cleared it.
The one line, two ways
It really is about one line. Schematically — and this is illustrative pseudo-code, not a lift from the actual engine — the difference looks like this.
One assignment. best = evaluate(board) instead of best = -INF. That is the difference between an engine that must capture and an engine that’s allowed to keep its queen. The whole doctrine of this book is the difference between those two starting values.
Two loops, one missing line
Compelled loop (no stand-pat)
- • The floor starts at minus infinity.
- • Every capture clears it, so one is always chosen.
- • “Do nothing” is not on the ballot.
- • Result: queen-for-a-pawn, played with total confidence.
Stand-pat loop (fixed)
- • The floor starts at the value of the current board.
- • A capture is taken only if it beats doing nothing.
- • “Do nothing” is a scored candidate that can win.
- • Result: the engine declines bad captures cleanly.
The exception that proves the rule
There’s one more detail in the standard algorithm, and it’s the one I’d ask you to carry forward, because it comes back hard in Part III. Stand-pat is the default — you’re always allowed to do nothing — except when you are in check. When you’re in check you may not stand pat, because a check can be a genuine threat that has to be answered; you can’t assume a quiet option even exists.1
Look closely at the shape of that rule, because the mature design isn’t “always allow doing nothing” and it isn’t “never allow it.” It’s this:
Takeaway
Hold that thought until Chapter 6, where the “check” turns into an interrupt on your attention and the question becomes: which events in your inbox, your feeds, your monitoring dashboards are real checks — the ones you’re genuinely not allowed to ignore — and which are just captures on the board, tempting you to act because acting was possible?
That’s the mechanism. One line, a floor made of the status quo, and a single exception for events you can’t decline. It’s so small that the natural next question is the one that cost me months: if the fix is one line, how on earth did the bug survive a whole tournament without anyone — including me, watching it play — being able to see it? That’s the next chapter, and it’s the most important one in Part I.
Why the Score Stays Calm
A one-line bug cost me months. The reason it hid so well is the single most useful thing in this book — because it’s the same reason this bug is quietly running in production systems right now.
If the fix is one line, the obvious question is why it took me months to find. I was watching the engine play. I could see it sacking queens. How do you stare at a bug that blatant and not catch it?
The answer is the part I most want you to take away, because it generalises far beyond chess: this class of bug doesn’t announce itself. It doesn’t crash, it doesn’t throw an error, and most of the time it isn’t even wrong. It just quietly leans — and the instrument you’d use to catch it is the very thing it corrupts.
Reason one: it was usually right
Making captures mandatory is, believe it or not, a decent heuristic in the large majority of chess positions. Most captures worth having are worth making. So an engine with my bug played perfectly reasonable chess the great majority of the time. It won games. It only face-planted in the specific class of position where declining was the entire point — where the right move was to not grab the thing on offer.
That’s what makes this kind of bug so hard to see, and it’s worth stating as a general law of debugging.
Key Insight
A bug that’s wrong five percent of the time and confident a hundred percent of the time is the hardest kind to see, because the thing that would normally warn you — the evaluation — never flinches.
You go looking for a bug when something screams. A bug that’s usually right doesn’t scream. It hums along, banking wins, building your trust, and then it quietly gives away a game in a way you can’t immediately connect to any single line of code — because the same code played the previous ten games well.
Reason two: the eval lied, and it lied consistently
Now the genuinely eerie part — the reason the number on my screen stayed calm even during the disaster, not just before it.
My engine, like most, used a symmetric search: the same quiescence code runs for both colours, flipping sign each ply. So walk through what happens after my queen grabs that pawn. It’s now the opponent’s turn — and their search has the same bug, so they’re forced to recapture. Fine, that’s realistic. But the horizon of the search lands in such a way that my side keeps assuming a forced continuation that pays it back — a phantom sequence where the opponent is compelled into moves that happen to favour me, by exactly the same broken rule that compelled me.
The bug hallucinates a phantom forcing sequence in both directions, and because it’s self-consistent across plies the score stays calm right up until the tactics resolve past the horizon and the material’s just gone. A symmetric bug hides in its own symmetry.
That’s the trap in one sentence. Two consistent errors, one on each side of the board, read from the inside exactly like the truth. The evaluation didn’t scream because it wasn’t confused — it was confidently computing the value of a fantasy that was internally coherent. Minus nine appeared the instant reality outran the forced line and the fantasy collapsed. Not a gradual slide. A cliff, arriving precisely when the horizon could no longer hold the lie together.
Myth vs Reality
Myth
A dangerous bug shows up as errors, crashes, or a metric going red. If the dashboard is calm, the system is healthy.
Reality
The dangerous ones show up as confident, calm output that quietly biases. A missing null option corrupts the very signal you’d use to detect it. The calm is the symptom.
The law, stated plainly
Strip the chess away and here is the transferable claim, and it’s not intuitive, which is exactly why it’s worth burning in:
A missing null option doesn’t crash your system. It biases it.
There’s no stack trace, no exception, no red light. The system keeps producing confident output. It just quietly leans — toward action, toward the top result, toward “yes” — and because the confidence signal stays clean, nobody goes looking until the output contradicts reality hard enough to be undeniable. By which point, in my case, I’d been donating queens across a tournament.
This is why the fix being one line is almost beside the point. The hard part was never the fix; it was seeing that a fix was needed, in a system that was cheerfully reporting good health. Keep that in your pocket. When we get to retrieval pipelines that always return an answer, to agents that never stop talking, and to AI panels that only ever agree with you, none of them will be throwing errors either. They’ll all be humming along, banking wins, showing you a suspiciously calm eval.
And a suspiciously calm eval, once you’ve been burned by one, stops being a comfort and becomes a question. Remember the phrase — the eval never flinches — because it comes back in the boardroom before the end of this book.
First, though, I owe you the receipts. I’ve told you this happened; now let me prove it — and show you the twenty-two-year-old email where the whole thing was predicted, in one line, by someone who had no idea he’d just described a bug that would cost me a tournament.
The Email That Sat Unread for Twenty-Two Years
I had the bug described to me, in writing, a year before it cost me a tournament. I just couldn’t read it — and when I went looking two decades later, the reason I couldn’t find it turned out to be the most interesting part.
Everything so far you’ve had to take on my word. This chapter is where I hand over the paper trail — and, just as importantly, show you the holes in it. Because a real record isn’t a clean story. It’s a partial one, and the honest move is to say which parts are missing.
In 2003 I wasn’t building this engine in a vacuum. I was trading emails with another hobbyist, Joel Veness, and we were both trying to get quiescence search working — neither of us had a clean one yet. We’d argue about move generators, swap fragments of eval functions, complain about our engines’ taste in moves.
Twenty-two years later, I went digging through my own archived correspondence, looking for any trace of the bug — some record of the queen-sacrifice disaster, an email where I’d complained about it. I didn’t find my own account of it. I found something better: a warning I’d been sent before the disaster, and had completely failed to understand.
In a chatty email dated December 2003 — wedged between a joke about my lazy evaluation function and a note that he’d just bought himself an internet chess account — Joel dropped a single line of caution about how our quiescence searches were behaving. He wrote, in as many words, that you don’t want to be failing high on every capture.
… your eval’s a bit lazy but it’ll do for now :) one thing though — you don’t want to be failing high on every capture! anyway I finally bought an ICC account so we can … [record truncated mid-sentence — reconstructed in shape from the archived thread; the warning line is verbatim]
Read that line again with everything from Part I in mind. “Failing high on every capture” is the bug. To fail high on a capture is exactly to have every capture beat a floor that isn’t there — because there’s no stand-pat holding the line. Joel wasn’t flagging a defect in my engine. He was describing a symptom he happened to be thinking about, and he signed it off with an exclamation mark, the way you’d mention that the milk’s gone off. Nobody in that thread knew the line was load-bearing.
Key Insight
A load-bearing warning can be typeset identically to noise. The whole reason the bug cost me months is that, at the time, the sentence that predicted it looked exactly like every other line around it.
That’s the thing to notice about the exhibit. The warning has no emphasis. It’s the fourth paragraph of an ordinary Wednesday email. There was no way, in 2003, to tell it apart from the joke above it or the ICC account below it. Insight and small talk arrived in the same font, and I read straight past the insight.
Why I couldn’t find it for twenty-two years
Here’s the twist that turns this from a nice anecdote into something with teeth. When I finally went looking for that email, my first instinct was the obvious one: search my archive for the words. stand pat. forced to capture. have to capture. Every phrase I now use to describe the bug.
None of them are in the corpus. Joel and I never once wrote “stand-pat” — the concept lived, for both of us, under completely different vocabulary, if it had a name at all. To write the search that would surface that email, I’d have needed to already know the phrase — which was the very thing I was trying to recover.
A keyword search can’t find an idea it doesn’t yet have a word for. Writing the right query required already knowing the phrase — and the phrase was the thing I was searching for.
What eventually surfaced it was a fuzzy, meaning-based retrieval hint rather than an exact-match grep — the vocabulary had drifted twenty-two years across two people’s private idiom, and only a search that works on meaning could bridge that gap. But that’s a story for a different book. What matters here is that the receipt existed the whole time and was, in practice, unfindable — which is its own small lesson about records: having a thing written down is not the same as being able to reach it.
A ledger with holes should say so
Now the honesty. I’ve been telling you about a queen-sacrificing engine at a tournament, and I want to be precise about what I can and can’t actually prove.
Two holes in the record
The disaster has no receipt. The months of queen sacrifices exist in my memory and nowhere in the corpus. I never wrote up the game where it sacked its queen and the eval only cratered afterwards. There is no exhibit for the crime — only for the warning.
The warning itself is truncated. The archived record of Joel’s email dies mid-sentence at the word “FreeC.” Whatever he said next — probably about the ICC account — is simply gone.
The archive kept the warning and lost the disaster.
That’s what real records look like. Not a tidy narrative with every claim stamped and sourced, but a partial ledger — strong on some rows, blank on others — and the discipline is to mark the blanks rather than paper over them. The provenance I can stand behind is that my tournament debut was CCT5, in early 2003, and that I finished mid-field, around four out of nine — the kind of scoreline a brilliant-sometimes, queen-donating-sometimes engine would produce. The wild-aggression version most plausibly rode along at CCT5 or CCT6; I’m inferring that from the timeline, not asserting it from a game log. And by late 2004 the engine is demonstrably fixed — there’s a game where it plays a rook capture and correctly foresees a deep reason the recapture doesn’t work, exactly the vision the buggy version lacked.
So: a warning I couldn’t read, a disaster I can’t prove, and a fix I can. That’s the honest shape of it. And it’s enough, because the point was never the tournament result. The point is that the same missing line I’ve now shown you in a chess engine — and watched Joel predict a year early — is not a chess problem. It’s a problem in the shape of any system that has to choose. Part III is where it stops being history and starts being your Tuesday.
The Stand-Pat in the Hint
The most common form of the queen-sack bug in 2026 doesn’t live in a chess engine. It lives in your retrieval pipeline — the one that always returns something, confidently, even when there was nothing worth returning.
I’d have left the chess story as a fond war story, except that over the past year I kept finding the same missing line — and its fix — in systems that have nothing to do with chess. The next three chapters are that tour. Same bug, three modern homes, and then a single test that falls out of all of them.
Strip an agent of the right to answer “none of these,” and it’ll manufacture a move from whatever’s on offer — a chess engine sacks its queen, and a retrieval-as-oracle pipeline returns its top chunk with full confidence, because you never gave it a stand-pat either.
Start with retrieval, because it’s the one nearly everyone building with AI has shipped. The setup is familiar: a user asks a question, the system embeds it, finds the nearest chunks in a vector store, and hands them to a language model as context. Ask it something your corpus genuinely covers and it works beautifully. Ask it something your corpus doesn’t cover, and here is what a naive pipeline does — it returns the nearest chunks anyway. Ranked. Confident. Occasionally completely irrelevant.
“Nearest” is not “relevant”
The reason is structural, and by now you’ll recognise the shape of it exactly. A similarity search always has a top result. There is always a nearest vector. But nearest is not the same as relevant — the closest thing in the store can still be miles from what you actually need. A pipeline that hands over the top hit regardless is a chooser with no null candidate. It is my quiescence loop, twenty years on, in Python.
Key Insight
A similarity search is a chooser with no null candidate. It will always pick the top of the list, even when the honest answer is “nothing here is close enough.”
And just like the chess engine, it doesn’t crash when it does this. It biases. It leans toward answering, toward the top chunk, toward filling the context window with something — and because it’s confident, the failure is invisible until a wrong-but-plausible passage has quietly dragged a model’s answer off course. The irrelevant chunk is now in the context, indistinguishable from truth.
The fix, again, is a floor
You can see the stand-pat in a well-built retrieval system, and it’s almost invisible until you’re looking for it. In my own knowledge tooling, every hint the retrieval layer surfaces arrives with an explicit tag attached: advisory — verify before citing, ignore if irrelevant.
That clause is a stand-pat, welded into the nudge. The suggestion arrives carrying its own permission to be declined. It is the difference between a retrieval layer that commands — “here is the answer, use it” — and one that offers: “this might help; it might not; you decide.” The offer form gives the judge a floor. It makes “none of these was relevant” a move the system is allowed to play.
Two ways to hand a model a retrieval result
✗ Oracle retrieval (no stand-pat)
- • Always returns the top chunk, ranked and confident.
- • No way to say “nothing here is close enough.”
- • A wrong-but-confident passage poisons the context.
Worst case: the answer is confidently wrong.
✓ Advisory retrieval (stand-pat built in)
- • Surfaces hints tagged “ignore if irrelevant.”
- • The judge can decline the whole set.
- • “None of these” is a scored, available move.
Worst case: a wasted glance.
The first time I noticed my own retrieval hint carried that “ignore if irrelevant” clause, I laughed, because of where this whole thread had been. Twenty-two years after a chess engine taught me that a chooser needs the right to decline, I’d built exactly that right into a prompt without thinking of it as the same idea.
Twenty-two years after the bug, the fix is in the prompt. The hint arrives carrying explicit permission to decline it.
There’s a whole craft to how a small advisory signal earns the right to reach a decision-maker without ever commanding it — how frequent it should be, how much weight it may carry, how it stays a whisper rather than a vote. I’ve set that out at length elsewhere, and I won’t re-argue it here. For our purposes the point is narrower and sharper: the “ignore if irrelevant” clause is the stand-pat of the retrieval world. It’s the line that lets your pipeline keep the board it’s got.
Retrieval is the easy case, though, because a retrieval hint is passive — the model can just not use it. The next case is harder, because the system in question is actively deciding when to speak into your day. And there, doing nothing feels less like prudence and more like failure.
Silence as a Successful Output
An agent that watches a stream and decides when to speak is where the missing-null bug is most seductive — because an agent that says nothing feels like an agent that isn’t working. I know the fix works, because I’d already built it and forgotten.
Retrieval was passive. This one isn’t. Picture an agent whose job is to watch a live stream of events — a meeting, an inbox, a monitoring feed — and decide, moment to moment, whether to speak. A live copilot. A triage assistant. The kind of thing everyone is wiring up right now.
Here the missing stand-pat is at its most tempting, because the pressure runs entirely one way. An agent that stays silent feels like an agent that isn’t earning its keep. Product managers ask for “more engagement.” The dashboard wants activity to point at. So the agent starts narrating the stream — flagging, summarising, chiming in — and every low-value interruption trains the human to tune it out. Give it long enough and the one message that actually mattered arrives into an inbox the user has already learned to ignore.
The default has to be nothing
The correct design is the rule from Chapter 2, ported straight across: the default output is nothing, and only a genuine, must-answer event earns an interruption. Remember the one exception to stand-pat — you may not decline when you’re in check. That’s the whole model for an attention agent. Almost every event is a capture on the board: available, tempting, and safe to leave alone. A very few events are checks — real threats you are genuinely not allowed to ignore. The entire skill is telling those two apart, and defaulting to silence for everything that isn’t a check.
Two ways to build a live agent
Loud agent (no stand-pat)
- • Narrates the stream; flags to look busy.
- • Treats every event as worth a comment.
- • Trains the human to flinch, then to ignore.
- • The one message that mattered lands in the noise.
Silent-by-default agent
- • Says nothing unless an event clears a real bar.
- • Waiting is the default, not a failure.
- • The rare interrupt inherits real trust.
- • A “check” — a must-answer event — breaks the silence.
I’d already coded it — in April 2025
I know this design is right rather than merely nice, because I found it in my own files, built before I had a name for why it mattered. Back in April 2025 I put together a listening harness — a rough plan-act-observe agent that would listen to a live conversation and, when it could genuinely help, whisper a suggestion. A low-latency model handled the default case; keyword triggers escalated to a stronger model; a search tool looped in when needed. Two days’ work on a desktop.
Digging it out recently, I found the prompt discipline sitting right there in a text file. Responses had to be concise and actionable, with waiting as the default when the model couldn’t add immediate value — and the line that matters:
Silence is treated as a successful output — because a live copilot that comments continuously would become unusable.
There it is. The stand-pat, encoded a third time — first in a chess engine, then in a retrieval hint, now in a .txt file driving a listening agent — fifteen months before I’d have connected it to the queen-sacrifice bug. Silence promoted from “the agent failed to say anything” to “the agent correctly judged there was nothing worth saying.” That promotion is the entire game.
The same silence, a different engine
This belongs to the same family as something I’ve written about at length — negative cognition, the idea that a capable agent’s real intelligence lives in what it chooses not to surface, and that silence, judged against a rich enough picture of what’s normal, is the expensive, high-judgment output rather than a failure to perform. If that idea is new to you, that other book is where it’s made properly; I’m not going to re-explain it here.
But I do want to draw one line between the two, because they’re easy to confuse and the distinction is the reason this book exists as its own thing.
Important
Negative cognition is knowledge-driven: it needs a baseline — a model of what’s normal — to know that a given event isn’t worth raising. Stand-pat is structural: it’s a null candidate inside the chooser that works with zero domain knowledge, because all it does is compare the best available move against the value of doing nothing. Same silence on the surface; a completely different engine underneath.
That distinction matters in practice. Negative cognition is what you build when you’ve given an agent a rich world to reason against and you want it to suppress the unremarkable. Stand-pat is what you build when you want a chooser — any chooser, even a dumb one with no world at all — to be structurally capable of declining. You can have the second without the first. My 2003 chess engine knew nothing about the meaning of a position beyond a crude material count; it still desperately needed a stand-pat. The floor doesn’t require wisdom. It just has to be there.
Retrieval that can decline; agents that can stay silent. Both are machines. The last case is the one where the chooser is partly you — and where the missing stand-pat is dressed in a slogan that’s doing the exact opposite of what it claims.
The Panel Needs a Kill-Path
The last home of the bug should worry every knowledge worker and executive, because it hides behind a comforting slogan — and it’s the one where you are the chooser with the missing floor.
You’ve heard the slogan. “Humans retain judgment; AI does the work.” It’s the reassurance everyone reaches for — the human keeps the taste, the discernment, the final call, and the machine handles the labour. It imagines judgment as an atomic faculty: a gavel the human bangs at the end.
That’s not how good judgment actually runs any more, and it’s not how I run mine. When I’m working on something that matters, I don’t decide alone and I certainly don’t just ask the AI whether my idea is good. I convene a panel. I’ll ask an AI to critique the idea, then to strengthen it, then to go and gather evidence — from the web, from my own archive, from a bit of code we wrote last month — then to red-team it, then to give me three other ways I could approach the whole thing. A dozen small opinions, weighted and summed.
So the slogan is already wrong about the mechanics. Most of what it calls “judgment” — generating options, critiquing them, gathering evidence — turns out to be decomposable, and most of those pieces are now delegable. Judgment is a much more complicated, distributed thing than a gavel. But that’s not the dangerous part. The dangerous part is the trap hiding inside my own habit, and I’ll name it, because I named it to myself: I’ll ask the panel to validate the idea I’ve already got.
Preference, laundered
A panel you convene, whose questions you choose, will validate almost anything you bring it if you let it. That’s not judgment distributed. That’s preference laundered through twelve rubber stamps.
Look at the structure and it’s the queen-sack bug wearing a suit. I have a candidate — the idea I walked in with. I’ve assembled a chorus of AI advisors. But if there’s no scored option for “don’t do this at all,” then the current position — my existing idea — never gets vetoed. The panel can only enhance, refine, and agree. It’s a quiescence search with no stand-pat: every move that isn’t “kill the project” clears a floor that was never set, so something always gets chosen, and the something is always a version of what I already wanted.
And it will feel like rigour the whole time. That’s the trap. You’ll have consulted twelve perspectives; you’ll have notes, dissent on the details, alternatives considered. The eval will look busy and healthy. It just never once contemplated not doing the thing.
Key Insight
An evaluation function whose features only ever score in one direction isn’t an evaluation. It’s a cheer squad.
The habit that keeps a panel honest is small and specific: ask “where is this weakest?” as insistently as you ask “make this better.” That’s what keeps the terms firing in both directions — the way a real chess evaluation has to reward good king safety and punish bad, or it’s not measuring anything. A panel you only ever ask to improve your idea is a panel you’ve pre-rigged to approve it.
The guard is the one from 2003
So here is the structural fix, and it’s the same line I left out of a chess engine twenty years ago. The panel needs a stand-pat.
Takeaway
“Has to win sometimes” is the whole test, and it’s brutally practical. A stand-pat that’s in the candidate list but never actually chosen is exactly my buggy engine with a comment that says // could stand pat here and code that never does. The floor only counts if actions sometimes fail to clear it.
Two panels that look identical from the outside
✗ Ratification panel
- • You choose the questions; all point at your idea.
- • Every voice can enhance; none can kill.
- • “Don’t do it” is never a scored option.
Confirmation you paid twelve times for.
✓ Real panel
- • A live “kill this” path sits in the chorus.
- • You ask “where’s the weakness?” as hard as “improve it.”
- • The kill-path actually wins, sometimes.
A decision, because a no was possible.
And here is the self-test, the one that connects this chapter straight back to the calm eval of Chapter 3. If you can’t remember the last time your panel — your advisors, your process, your AI chorus — killed an idea you liked, that’s not a sign your ideas are all good. That’s the eval staying suspiciously calm. And you now know what comes after that.
If you can’t remember the last time the panel killed an idea you liked, that’s the eval staying suspiciously calm — and you know what comes after that.
There’s a much larger conversation to be had about how you actually chair a panel like this well — how you weight the voices, when you decide the gathering is finished, and which parts of judgment stay irreducibly yours no matter how good the advisors get. I take that up separately, in a companion piece on being the chairman rather than the judge. But the single load-bearing guard is the one in this chapter, and it’s portable to any decision process, human or machine: a convened panel without a real kill-path isn’t a decision process. It’s a ratification process wearing one.
Retrieval, agents, panels — three systems, one missing line. It’s time to pull them together into the single question you can carry out of this book and point at anything.
Trust the One That Could Have Gone Against You
Four systems, one missing line, one test you can run against anything that offers you an answer — human or machine.
Pull the whole thing together. A chess search. A retrieval pipeline. A live agent. A panel of AI advisors. On the surface they have nothing in common. Underneath, they are one loop with one missing part.
In each, something has to choose from a candidate list. In each, the failure mode is identical: with no scored option for “none of these,” the current position never gets to veto a bad action, and the system produces confident output that quietly biases toward doing something. The chess engine grabs the pawn. The pipeline returns the chunk. The agent fills the silence. The panel approves the plan. None of them crash. All of them lean.
One missing line, four systems
| System | What it’s forced to do | The stand-pat |
|---|---|---|
| Chess quiescence search | Take a capture because one exists | Score the current board; keep it if nothing beats it |
| Retrieval pipeline | Return the nearest chunk, relevant or not | “Advisory — ignore if irrelevant”: the judge can decline |
| Live agent | Comment on every event to look useful | Silence as a successful output; only a “check” interrupts |
| AI decision panel | Validate the idea you walked in with | A live “don’t do it” path that wins sometimes |
The test
Which gives you a single question you can run against any system that offers you an answer, and it doesn’t matter whether the system is silicon or a person:
Bottom Line
Was its disconfirmation ever genuinely on the table? A “yes” is only worth something if the system was structurally capable of saying “no” — and does, sometimes.
This is the deep version of the rule, and it’s the tell that separates a witness from a flatterer. A retrieval or provenance system you can actually trust is one that will also come back with nothing and say so cleanly, rather than confabulating into the gap — the willingness to disconfirm and the willingness to report absence are the same virtue wearing two hats. I’ve argued that case in full elsewhere; here it lands as the natural end of the stand-pat road.
Trust the one that could have gone against you.
Turn it on the assistants in your own life. An AI — or a colleague, or an advisor — that has never once told you your idea is bad is not being agreeable. It’s missing its stand-pat. And its approval, however confident and however articulate, is worth exactly nothing, because it was never capable of the alternative. The yes only means something when the no was reachable.
The one line you leave with
So here is the whole book compressed to a question you can ask this afternoon. The next time you build or buy a system that chooses — an agent, a search, a scoring model, a panel of AI advisors, a hiring process, a governance workflow — ask the one thing that would have saved me a tournament in 2003:
Is “do nothing” a scored candidate — and does it ever win?
If the answer is no, you don’t have a decisive system. You have a compelled one. And it will sack its queen for a pawn while the score stays perfectly, dangerously calm.
The fix, everywhere it appears, is the same one line I forgot to write two decades ago: put the status quo into the candidate list, give it a score, and let it win sometimes. It costs almost nothing to add and it never shows up as an error when it’s missing — which is exactly why it’s the cheapest, highest-leverage thing you can check, and the easiest to skip.
Where this bites in your stack
If you’re wiring up agents, retrieval, or an AI-assisted decision process and you’re not sure any of them can say “none of these,” that’s usually the cheapest high-leverage fix in the whole system — and the easiest to miss, because a missing stand-pat never announces itself.
I help mid-market leadership teams find the missing stand-pats in their AI portfolio before they cost a queen. Start a conversation at leverageai.com.au.
The engine that taught me this has been fixed since 2004. The lesson took twenty-two years to find its name, and it turned out not to be about chess at all. Give every chooser you build the right to keep the board it’s got. Score the status quo. Let doing nothing win, sometimes. That’s the move that isn’t there — until you put it there.
References & Sources
The evidence base behind every claim — primary research, industry analysis, and technical specifications
Research Methodology
This ebook draws on primary research from standards bodies, independent research firms, enterprise technology vendors, and consulting firms. Statistics cited throughout have been cross-referenced against primary sources.
Frameworks and interpretive analysis developed by Scott Farrell / LeverageAI are listed separately below — these represent the practitioner lens through which external research is interpreted, and are not cited inline to avoid self-promotional appearance.
LeverageAI / Scott Farrell — Practitioner Frameworks
The interpretive frameworks, architectural patterns, and practitioner analysis in this ebook were developed through enterprise AI transformation consulting. The articles below are the underlying thinking behind those frameworks. They are listed here for transparency and further exploration — not cited inline, as this is the author's own analytical voice.
Scott Farrell — The Nudge Doctrine: Small Signals, One Judge
stand-pat as the ultimate nudge — the null move that says maybe nothing here is worth doing; a small advisory prior handed to one judge
https://leverageai.com.au/the-nudge-doctrine-small-signals-one-judge/
Scott Farrell — Give Your Agent a Past: Baseline Silence and Documented Absence
negative cognition — the intelligence is in the suppressions; silence is a high-judgment output once the agent has a baseline to diff against
https://leverageai.com.au/give-your-agent-a-past/
Scott Farrell — I Didn't Ask for the Thing I Didn't Know Existed
trust-by-refutability — a trustworthy system can come back with nothing and say so cleanly; trust the one that could have gone against you
https://leverageai.com.au/i-didnt-ask-for-the-thing-i-didnt-know-existed/
Primary Research & Standards Bodies
Chess Programming Wiki — Quiescence Search [1]
the static evaluation is used as a stand-pat score, a lower bound; the term is from poker (playing one's hand without drawing more cards); stand pat is disallowed when in check
https://www.chessprogramming.org/Quiescence_Search
Chess Programming Wiki — Joel Veness [2]
author of chess engines Bodo and Meep (evaluation learned from self-play); research scientist at Google DeepMind; Monte-Carlo AIXI approximation and Context Tree Weighting
https://www.chessprogramming.org/Joel_Veness
About This Reference List
Compiled July 2026. All URLs verified at time of compilation. Regulatory documents and standards specifications are subject to revision — check primary sources for the most current versions.
Some links to academic papers and vendor research may require free registration. Government and standards body publications are freely accessible.