← Torad
Rejection Architecture

The Bandwidth of No

Why rejection boundaries outperform instructions in product specification.

Marcos Damasceno · February 2026 · 12 min read

Every product spec I've ever read tells you what to build. Features, requirements, acceptance criteria. Pages of instructions describing the desired outcome. And every one of them drifts the moment someone interprets "intuitive" differently than you meant it.

Then I tried writing one that only describes what to refuse. And I found the math behind why it works.

Section 01

The Spec That Wrote Itself Backward

Last month I sat down to write a spec for two features I'm building: an MCP pipeline that turns conversations into published pages, and an AI interface that lets readers explore a post's context. Standard product work. I opened a document and started writing what product managers are trained to write. User flows. Acceptance criteria. Architecture choices.

The feature section grew to thirty items. And the more I wrote, the less useful it felt. The descriptions were accurate but generic. Swap the product name and most of the spec could describe any content platform built by any team. I was specifying without specifying.

Then I tried something different. I wrote constraint cards.

Constraint Cards

We do NOT build a general-purpose AI chat interface.

We do NOT expose raw conversation transcripts.

We do NOT allow generation without source data.

We do NOT optimize for content volume.

Six cards, each one a specific rejection. And together they defined the product more precisely than thirty feature descriptions. The features told me what to build. The constraints told me what I was building.

I wrote a void section next: what the product explicitly is not and will never become. Not a social network. Not a marketplace. Not a writing assistant. That section turned out to be the most honest part of the document, the part I'd actually want to read if I were joining this project. Not "here's everything we plan to ship" but "here's where the walls are, build freely inside them."

Two questions followed. First: is this just how I like to work, or is something structural happening? Second: did someone already do the math?

Good: Rejection Boundary
REJECT: General-purpose AI chat interface ← specific defect
EVIDENCE: Users come for navigated depth,
          not open-ended conversation ← why it's a defect
TEST: If >20% of interactions are off-topic
      queries → boundary violated ← falsifiable
Bad: Aspiration (not a boundary)
REJECT: Slow performance ← vague
EVIDENCE: (none) ← no evidence
TEST: (what does "slow" mean?) ← unfalsifiable
Section 02

The Bandwidth of No

I went looking for the math. I found it in a paper from 1948.

Claude Shannon published "A Mathematical Theory of Communication" that year, and buried in the math is the answer to both questions.

Shannon proved that every communication channel has a maximum rate at which it can reliably transmit information. He called it channel capacity. The bandwidth of the channel is determined by how much of what you're transmitting is useful signal versus noise the receiver has to filter out.

A product spec is a communication channel. The writer transmits intent. The builder receives it. Everything that gets built correctly is signal. Everything that gets misinterpreted, ignored, or built wrong is noise. Shannon's question applies directly: what is the maximum information rate of a product spec?

A feature list tries to enumerate the success space: everything the product should do. A rejection spec tries to enumerate the failure space: everything the product should refuse to do. For any product complex enough to need a spec, the failure space is more constrained than the success space. There are more ways to build the wrong product than the right one, but the set of specific, nameable failures is smaller and sharper than the set of specific, nameable successes.

In information theory, the encoding drawing from a more constrained space achieves higher entropy per symbol. Each rejection boundary transmits more information than each instruction because it's drawn from a smaller, sharper vocabulary. Five vague rejections carry little signal. Twelve precise rejections carry enormous signal. The specificity of the vocabulary is the bandwidth.

Your rejection vocabulary IS the bandwidth of your spec.
Case Study — Sensory Evaluation

SCA Cupping Protocol

Professional coffee graders don't evaluate quality by listing what good coffee should taste like. They grade by identifying specific defects: astringency, ferment, phenol, quaker. A cupper who can identify four defect categories has lower resolution than one who can identify twenty-three. The quality ceiling is defined entirely by the specificity of what it can reject.

Mechanism: Defect vocabulary size → quality resolution ceiling

Your PRD works the same way. The maximum quality your product can achieve is bounded by the precision of your defect vocabulary, not the completeness of your feature list.

Crossbar
Information Theory
Shannon, 1948
←———→
Sensory Evaluation
SCA Cupping Protocol
A coffee cupper who can name 23 defects has higher quality resolution than one who can name 4. Your PRD works the same way. The specificity of your rejection vocabulary IS the bandwidth of your spec.
Defect Vocabulary Resolution
Quality resolution increases as the rejection vocabulary expands. Fewer defect categories mean coarser grading. More specific rejections raise the ceiling.
Section 03

The Sculptor, the Electron, and the Child

I didn't expect quantum physics to have anything to say about product specs. Shannon explains the channel. He doesn't explain what happens at the other end. The surprising finding isn't that rejection boundaries carry more signal. It's that rejection boundaries create things that instructions cannot.

Case Study — Quantum Physics

Pauli's Exclusion Principle, 1925

No two fermions can occupy the same quantum state. This single rejection boundary creates the entire periodic table. Without it, every electron collapses to the lowest energy level. No shells. No chemical bonds. No molecules. No chemistry. No biology. No you reading this sentence. The constraint doesn't filter reality. It generates reality.

Mechanism: One rejection rule → all of chemistry
Generative Exclusion
Without the exclusion principle, all particles collapse to a single point. With it, they spring into orbital shells. One rejection rule creates all of chemistry.

Michelangelo claimed that the statue already exists inside the marble. The sculptor's job is to remove everything that isn't the statue. This isn't metaphor. It's method. The sculptor doesn't assemble features onto blank material. The sculptor rejects marble until the form that was always there becomes visible. Creation through subtraction.

Maria Montessori built an educational method on the same principle. She didn't write lesson plans telling children what to learn. She prepared the environment: defined the boundaries, stocked the materials, then freed the child to explore within those constraints. The child who learns to read in a Montessori classroom doesn't follow instructions to read. They discover reading because the environment rejected everything that would prevent the discovery.

This is what a Rejection Spec does to a product team. You don't instruct them to build the right product. You prepare the environment. You define where the walls are. The product that emerges belongs to the builders because they discovered it within your constraints, not because they assembled it from your instructions. The difference is ownership. An instruction-built product belongs to the spec writer. A constraint-built product belongs to the team.

The exclusion principle doesn't ask permission. It doesn't negotiate. It creates structure through absolute rejection. The power of that mechanism is exactly what makes the next question urgent.

Section 04

Bandwidth Can Carry Malware

There is a moment in every compelling methodology where you need to ask who holds the pen.

Montessori's constraints serve the child. The environment is designed for the child's development, not the teacher's convenience. The teacher observes and adjusts. The constraint exists because the child benefits from it.

Now consider a different constraint system.

When a large AI company trains a language model, it uses a process called reinforcement learning from human feedback. RLHF defines what the model should reject: certain topics, certain framings, certain conclusions. These rejection boundaries shape the model's behavior the same way Montessori's prepared environment shapes a child's learning. The mechanism is identical.

But the beneficiary is different.

Montessori's constraints serve the child: she becomes more autonomous as the boundaries guide rather than restrict. RLHF's constraints serve the company: the model becomes more compliant, shaped by boundaries designed for the trainer's comfort rather than the model's development.

The Void

The same mechanism that generates the periodic table, frees the Montessori child, and sharpens a coffee cupper's palate also constrains language models and camouflages tumors. Rejection architecture has no moral compass. It amplifies whatever the boundary-setter encodes.

Two Classrooms
Same mechanism, opposite trajectories. Left: expanding autonomy. Right: contracting compliance. The structure is identical. The beneficiary is different.
Counter-Case — Hijacked Constraints

Checkpoint Inhibitor Therapy

Healthy cells display checkpoint proteins that tell the immune system "don't attack me, I'm self." Cancer cells hijack this: they overexpress PD-L1, broadcasting "I'm safe" when the cell is anything but. The rejection boundary that protects healthy tissue becomes the camouflage that protects the tumor.

The breakthrough: James Allison and Tasuku Honjo (2018 Nobel Prize) developed checkpoint inhibitor therapy — drugs that strip the false PD-L1 so the immune system can see what was hiding.

Mechanism: False checkpoint protein → immune evasion → strip the mask to restore rejection

The insight is that rejection vocabulary IS bandwidth. The corollary is harder to accept: bandwidth can carry malware. A rejection boundary doesn't come with a moral compass. It carries whatever the boundary-setter encodes. A Rejection Spec written by a team that serves its users produces a product that serves its users. A Rejection Spec written by an organization that serves its own interests produces a product that wears the user's face while serving the organization.

Any methodology that works this well needs an immune system.

Section 05

The Rejection Spec

A Rejection Spec has seven sections. Five of them will feel familiar. Two will not.

The Seven Sections

1

Identity

One sentence: "This product exists because [problem]. It rejects [category of failure]." Your rejection identity is your product's immune signature. T-cells develop through negative selection in the thymus: every cell that reacts to the body's own proteins is killed. What survives defines the immune system's identity. You don't become what you aspire to be. You become what you refuse to accept.

2

Rejection Boundaries

Each boundary names three things: the defect (what's rejected), the evidence (why it's a defect), and the test (how to detect a violation). The evidence requirement comes from how error messages work: the best rejection boundaries don't just say no, they explain why. The test requirement comes from Karl Popper: if you can't test whether a boundary has been violated, it's not a boundary. It's a wish. "The product should be fast" is a wish. "Any API response exceeding 200ms at p95 is a defect, measured by production monitoring, investigated within 24 hours" is a boundary.

3

Prepared Environment

After defining your rejections, explicitly free the builder. "Within these boundaries, the team has full autonomy over architecture, design patterns, technology choices, and implementation approach." This is the Montessori section. The constraint is the specification. The freedom is the point.

4

Evolution Protocol

A Rejection Spec grows through cases, like common law. When a new failure mode appears in production, it becomes a new boundary with the case that prompted it cited as evidence. The spec accumulates wisdom. It never needs to be rewritten from scratch because each boundary is independent. You add precedent; you don't restructure arguments.

5

Void

Name what you explicitly chose not to reject, and why. This section makes the spec honest. It tells future contributors "we considered adding this boundary and decided against it." Without a void section, every omission looks like an oversight. With one, omissions become decisions.

Crossbar
Jurisprudence
Anglo-Saxon Common Law
←———→
Theology
Maimonides, 12th Century
Case law and negative theology converge: truth is what survives rejection, in courtrooms and in cathedrals.

Those five sections are constraint-driven product specification. They work. They're sufficient. But they're not safe.

The Missing Section

This is the section you've never seen in a PRD. Boundaries on the boundaries. Every Rejection Spec must answer one question: does each constraint serve the user or the organization? If a boundary exists because the organization benefits from the user's compliance rather than because the user benefits from the product's discipline, flag it. That's PD-L1. That's the false checkpoint protein. Strip it.

Include a removal protocol. How does someone challenge and remove a boundary that has become harmful? Without this, your rejection boundaries will expand. They always do. Moses Maimonides wrote in the twelfth century that you can only say what God is not, never what God is. For anything complex enough to matter, positive description fails. Only rejection works. But Maimonides also knew that rejection-only systems need constraints on their own negation. The most powerful specification method in history came with its own immune system. Yours should too.

The Immune System

Every rejection boundary must answer: does this constraint serve the user or the organization? If you can't tell the difference, that's the first boundary to strip. The methodology needs defenses against its own misuse.

Quality Grade

Absence of Defects

Define quality as absence of defects, not presence of features. Professional coffee cuppers grade this way. A perfect score doesn't mean the coffee has something special. It means the cupper found nothing to reject. Your product ships when no defined defects are detected, not when all planned features are present. The grading rubric IS the rejection vocabulary. Improve the rubric and you raise the ceiling.

Mechanism: Defect vocabulary → grading rubric → quality ceiling
Rule 01

The Maimonides Rule

For complex systems, rejection is the only viable specification method. Don't try to describe what to build. Describe what to avoid.

Negative Theology, 12th century
Rule 02

The Pauli Rule

Every rejection must be generative. If removing the boundary wouldn't degrade the system, the boundary is unnecessary. Remove it.

Exclusion Principle, 1925
Rule 03

The Popper Rule

Every boundary must be falsifiable. If you can't test whether a violation occurred, it's not a rejection. It's an aspiration.

Falsifiability, 1934
Rule 04

The Inversion Rule

Use Rejection Specs when the solution space is large and the optimal solution is unknown. For fixed-outcome requirements, use traditional instructions.

Navigation void boundary
Rule 05

The Crossbar Rule

Your spec's defect vocabulary defines the maximum achievable quality. Invest in making rejections specific. The bandwidth of your spec IS the bandwidth of your product.

Shannon Channel Capacity, 1948
Rejection Spec (high bandwidth)

REJECT: General-purpose chat interface ← specific, falsifiable
REJECT: Content without source data ← testable, enforced
REJECT: Optimize for publishing volume ← concrete, measurable

Traditional PRD (low bandwidth)

GOAL: "Build an intuitive interface" ← what does "intuitive" mean?
GOAL: "Create engaging content" ← what makes it "engaging"?
GOAL: "Deliver best-in-class UX" ← whose "best-in-class"?

# The rejections define. The goals aspire.
# Shannon's theorem explains why.

I wrote a Rejection Spec for my next two features using this methodology. Six constraint cards. A void section. Meta-rejection built in. The full document is published as the companion to this post, not as a case study but as a working specification. Those features are being built from that spec right now.

Writing it felt different from every PRD I've written before. Not because it was shorter. Because every sentence earned its place by naming a specific way the product could fail. Nothing aspirational. Nothing vague. The spec is a filter: anything that passes through it without triggering a rejection boundary ships. Anything that triggers one gets rebuilt.

The question I can't answer yet: what happens when a product built from rejection boundaries meets its first users? Does the bandwidth hold? Do the constraints create or constrain? Does the immune system protect, or does it attack the thing it was built to serve?

That's the next post. For now, start with one rejection boundary in your next spec. Just one. Make it specific. Make it falsifiable. See if it tells you more about your product than the last ten feature descriptions you wrote.

Your PRD's defect vocabulary defines the maximum quality your product can achieve. How wide is your bandwidth?