From 11a4a745cfafc4e68d3f74eb029ad94d10b41f3c Mon Sep 17 00:00:00 2001 From: Adam Altman Date: Fri, 11 Sep 2026 09:23:43 -0500 Subject: [PATCH] blog: add "Stop reading the diff. Review the assumptions." Add a blog post on where human code review belongs now. Agents write the lines and agents can check them. Humans review the assumptions, and they do it before the code exists. The PR review moves to interface, intent, and safety. Co-Authored-By: Claude Fable 5.1 --- blog/images/review-the-assumptions.png | Bin 0 -> 34636 bytes blog/review-the-assumptions.md | 186 +++++++++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 blog/images/review-the-assumptions.png create mode 100644 blog/review-the-assumptions.md diff --git a/blog/images/review-the-assumptions.png b/blog/images/review-the-assumptions.png new file mode 100644 index 0000000000000000000000000000000000000000..9878a0987dd5f997973c9caf2a8a5e969f9c09b1 GIT binary patch literal 34636 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 literal 0 HcmV?d00001 diff --git a/blog/review-the-assumptions.md b/blog/review-the-assumptions.md new file mode 100644 index 000000000..ab604da69 --- /dev/null +++ b/blog/review-the-assumptions.md @@ -0,0 +1,186 @@ +--- +template: ../@theme/templates/BlogPost +title: Stop reading the diff. Review the assumptions. +description: Code review is the bottleneck in most teams, and it does not have to be. Machines can read the lines. Humans need to read the premise, and they need to read it before the code exists. +seo: + title: Stop reading the diff. Review the assumptions. + description: Line-by-line code review made sense when humans wrote every line. Now agents write the lines and agents can check them. The human review has to move to where machines cannot go. + image: ./images/review-the-assumptions.png +author: adam-altman +publishedDate: "2026-09-17" +categories: + - technical-documentation:ai-assisted-docs + - redocly:product-updates +image: review-the-assumptions.png +--- + +# Stop reading the diff. Review the assumptions. + +Code review is the bottleneck in most engineering teams I talk to. +Ours included. + +A pull request opens. +It waits. +A reviewer opens it, reads three hundred lines, leaves four comments about naming, and approves. +Two days passed. +Nothing about the change got safer. + +We tell ourselves this is the price of quality. +I no longer believe that. +I think we review the wrong thing, at the wrong time, with the wrong worker. + +## What line-by-line review was for + +Line-by-line review made sense when a human wrote every line. +The author had one pair of eyes. +The reviewer added a second pair. +The second pair caught the off-by-one, the missing null check, the query without an index. +It was the only checker we had. + +That world is gone. +Agents write most of the lines now. +Agents can also read them. +An agent will find the missing null check faster than I will, and it will not get tired on line two hundred. +It will flag the complexity. +It will flag the known security patterns. +It will run the tests. + +When a human reads the same lines after the agent did, the human is the slower, more expensive, less consistent checker. +That is not review. +That is duplicate work with a queue in front of it. + +## What machines cannot review + +An agent cannot tell you the feature is a bad idea. + +It cannot tell you the customer does not want it. +It cannot tell you the interface will hurt in a year when you have to keep it backward compatible. +It cannot tell you the table you assume stays small will not stay small. +It cannot tell you that the rollout has no off switch and the failure has no alarm. + +Those are assumptions. +Every change rests on a stack of them. +Most of them never get written down. +The code is the only artifact, so the review reads the code and the assumptions slide through underneath. + +A wrong assumption costs more than any bug. +A bug gets fixed in an hour. +A wrong data model lives for years. +A wrong interface becomes a promise you cannot take back. + +That is where a human belongs. + +## Review before the code exists + +Here is the part I think matters most. + +If the first time a human reads the assumptions is in a code pull request, the review is already late. +The code exists. +The author spent a week on it. +The author will defend it, because that is human. +The reviewer feels the cost of saying "wrong premise" to a finished thing. +So they do not say it. +They comment on the naming instead. + +The assumptions need review before the code. +Not in a meeting. +In writing. +A short document with one claim per line: + +- Users start from the project tile, not from the editor. +- This table stays under a million rows. +- Self-hosted customers upgrade within a quarter. +- Nobody depends on the old field name. + +Each line is a claim that could be false. +Mark each one: verified with evidence, verified by someone who knows, or unverified. +Unverified is allowed. +Hidden is not. + +Then a human attacks the list. +Which of these, if wrong, kills the feature? +Which one is cheap to check right now? +That review takes twenty minutes and saves a week. + +## What the human reviews in the pull request + +The pull request still gets a human. +The human just stops reading the lines. + +They review the interface. +What does this API promise? +What does this config file promise? +What breaks for a customer on upgrade? + +They review the intent. +Does this solve the stated goal? +Would a user recognize it as better? +Is there a cheaper design? + +They review the safety envelope. +Can we turn it off? +What fails if it fails? +How will we see it working? +How will we see it breaking? + +And they review the assumptions that changed. +Every implementation finds new ones. +The author lists what moved since the design note. +If the list is empty, the author did not look. + +## The exception + +I am not saying nobody reads code. + +Some safety lives only in the lines. +The tenant boundary. +Authentication. +Billing. +Deletion. +An agent catches patterns. +It misses a missing organization filter that looks like every other query in the file. + +Name those paths. +Require a human code read there, and only there. +Everywhere else, the agent reads and the human decides. + +## Then close the loop + +Review does not end at merge. + +The biggest assumption on the list has a metric attached. +Two weeks after ship, someone marks it true or false. +That is the real review. +It is the only one that teaches the team which assumptions they get wrong. + +Most teams never do this step. +They ship, they move on, and the assumption stays marked "probably." + +## What changes + +The sequence looks like this: + +1. Humans review the assumptions before code. +2. Humans review the interface, intent, and safety in the pull request. +3. Agents review the lines. +4. Humans review the outcome after ship. + +Every stage has a human question. +None of the questions is "read every line." + +Some engineers will call the design note ceremony. +It is not extra. +It is where the review moved. +The time you spent reading diffs goes into reading premises instead. +It does not shrink. +It goes where the machines cannot follow. + +## The controversial part + +Reviews should not be the bottleneck. +They are, because we ask humans to do the machine's job and skip the human's job. + +Stop reading the diff. +Read the premise. +Read it early. +Then let the agents read the code, and go check whether you were right.