Nothing says no.
The agent read every rule you gave it, agreed with every one, and shipped the wrong thing anyway. You told it. Nothing stopped it.
Every team I know is writing things down for AI right now. Mostly rules: how the agent should behave, how the product should look, what not to touch. It is the right instinct. It changes what the AI knows. It does not, by itself, change what it ships.
Take one decision. Last spring you tested a guest checkout, it hurt more than it helped, and you wrote down why you dropped it. It is in the research repo, in a deck, in a Slack thread. Now someone asks the agent for a checkout flow. Nothing puts that decision in front of it, so it drafts a guest option anyway: every component right, every token in place, the copy in the right tone of voice. Paste the document in and it apologises and gets it right. Next week, in a different flow, from a different chair, nobody pastes it in. And if it does live in the rules file, it is one line among two hundred.
Nothing is wrong with what got written down. Something is missing next to it.
A decision that nothing checks is a preference. And an agent treats a preference the way a busy colleague does: it means well, and it ships anyway.
Who says no today
Ask who stops this today, in a team of people, and the answer is always a person. Somebody in the review says we do not do that, remember the spring test. Every product runs on a layer of people like that, who remember, every week, by hand: the lead who knows which decisions are still in force, the researcher who knows that was tested, the one developer who reads every pull request and asks why. Nobody wrote that job down, because it never looked like a job. It was just something people did.
An agent is the most agreeable reviewer you will ever have. It will read your decision, agree with your decision and build against your decision in the same breath, because agreeing costs it nothing and nothing pushes back. A person who knows a decision and a person who is stopped by a decision are two different people. Design systems got built for the first, and nobody noticed the second was doing all the work.
What a document cannot do
Writing it down was right. It is also the end of what writing can do, and it helps to be precise about where that end is.
The industry is now standardising the writing. One file for how an agent behaves, one for how it does a task, one for how the product looks, and that last one comes with a linter that checks tokens and contrast. Good. That is the floor going up. Its makers also say, in plain words, that rules which cannot be formally checked stay as natural language. Which is everything above the parts.
The other half of the answer is arriving now, on the far side of generation: evaluation layers that make several versions of a screen and have people rank them blind, so the best one ships instead of the first one. So the field agrees. Writing it down was never going to be enough, and something has to come after the work and hold it up. Then look at what it holds the work up against: a panel of strangers who have never used your product. It can reject ugly. It cannot reject guest checkout, because nobody told it about the spring.
A document informs. It does not stop anything. You can read a speed limit at any speed, and the agent reads your strategy at exactly the speed it was already going.
A document drifts. A decision written in a deck two years ago has no link to the flows being built today. The product moved on, the decision did not follow it, and nobody can say which of last year's decisions still hold. People know this and ask around. An agent has no way to know, so it trusts the deck.
And a document does not know it was ignored. Last month's miss left no mark anywhere. The same flow comes back next month, fresh, from an agent that has never seen it before, because nothing remembers on its behalf.
Writing it down is how a system comes to know. It has never been how a system says no.
What the system has to do
The small version of this is the wrong red on a button, and a linter handles that. The version that costs money is a flow the strategy already vetoed, a feature for a segment you decided not to serve, a pattern you retired after a test. That is where the no has to work, and it does not need a platform team. It needs the system to do three things most teams have never asked of it. Holding the knowledge is one thing. This is what it has to do with it: answer, refuse, remember.
Answer. For every pattern you use, hold what it is for, what the rules are and what happened when you used it, and say so when asked, in plain language, with the source attached. Not a document to interpret. An answer.
Refuse. Rules written so they can be broken, with the reason attached. Stay true to the strategy is a wish. No flow offers guest checkout, since the spring test, is a rule, because something can look at a flow and answer yes or no. If a rule cannot be broken, you do not have a rule. You have a hope with a heading. Then a check that runs every time work is made: every proposal held against the rules in force, with the same answer whoever made it, not a reviewer who happens to remember. When work and a rule disagree, the system refuses, and names the rule it ran into. And the rules have to be yours. A check running on somebody else's idea of good will pass work that is beautiful and wrong, and will not know it did.
Remember. A record of what got checked and what got caught. A rule that never fires can go. A miss that keeps happening becomes a rule. And a rule that keeps firing may simply be wrong, which is a strategy conversation, and the first one you will have with evidence on the table. Without the record you set the system up once and it never learns another thing.
This is where people start hearing a year of tooling. It is smaller than that. The three patterns you use most, carrying what they are for. Three rules you would stop a release over, and one check that runs them. One log. And if you cannot name three rules worth stopping a release over, that is worth knowing too, and it took you an afternoon.
The reviewer, afterwards
Whenever I describe this to a design team, somebody hears a machine policing designers. It is the other way round. The checks encode what your reviewers already say, every week, by hand. Anyone who has sat through enough critiques knows the shape: half the conversation is the same decisions being re-argued, we do not do that, we tested that, that is not for them, and the interesting half never happens because the room ran out of afternoon.
Write the no down and the reviewer does not lose a job. They lose the boring half of it. What is left is the part that needed a person: is this the best this idea can become. The same thing happens to the agent. Once it cannot build against a decision, the only thing left to argue about is whether the flow is any good, which is the argument you wanted to be having.
The reviewer stops being the rule, and gets to be the judgment.
None of this makes the agent right. It makes the agent stoppable, which is the thing that lets you trust whatever got through. And the same check that stops the agent stops the contractor, the new hire and the team in the other office, with the same answer, on the same day.
Once the no lives in the system, it stops depending on who happens to be in the room. What you have then is a different kind of thing from a set of parts, however well built, and it deserves its own name.
The word is borrowed. In engineering a harness is not a document about good code. It is the rig that runs your work and fails it when it breaks a rule you set. That is the part design has never had. A design harness is what a design system becomes when it can answer, refuse and remember.
Vincent Koopmans works on design systems, strategy, and the tooling between them, for teams building with both people and AI. If you want to know what your own system would refuse today, get in touch, or find me on LinkedIn.