Fresh eyes need a different bias
Several reviewers can share one blind spot when they inherit the same path. Review independence comes from introducing a different path, then testing what it finds against the code.
There is a comforting lie inside every long approval trail: four reviewers must have looked in four directions.
One person writes the change. Another reads the diff. A third checks the tests. A final reviewer scans the integrated result. By the time the last approval arrives, the work feels inspected from every side. The review stack gets taller. The blind spot sits there, completely unbothered.
More attention is useful. It is not the same thing as more independence.
Four people can still perform one investigation. They can receive the same explanation, begin from the same fixtures, follow the same operation order, and accept the same account of how the feature is meant to be used. Their agreement may be careful and sincere. It may also descend from one path that none of them had reason to leave.
I recently came around a similar situation where that is exactly what happened around two operations on one settings object.
The order everyone inherited
One operation changed ordinary settings. Another stored a security-sensitive value. The ordinary update replaced the settings object with the subset it knew how to write. The sensitive update read the existing object, merged its value into it, and wrote the result back.
The asymmetry mattered, but only in one direction.
The natural workflow changed the ordinary settings first and stored the sensitive value second. In that order, the second operation merged with what already existed. Nothing disappeared. The object looked complete, later verification succeeded, and the sequence earned coverage.
Several implementation reviews followed that same order. It was not imposed as a testing rule. It simply felt like the way the feature would be used. The implementation had been built through that sequence, the surrounding explanation described it through that sequence, and the tests made it familiar through repetition.
Then a cold reviewer approached the operations from the other direction.
The sensitive value was stored first. The ordinary settings were changed second. This time the replacement discarded the value that the earlier step had written. The settings object remained valid enough to persist, but the protected value was gone. Later verification failed because the system had silently erased part of its own state.
No obscure input was required. No race had to be won. Reversing two valid operations was enough.
Several reviewers walked the same path. One approached the same operations from the other direction.
One path, several reviewers
It would be comforting to explain the miss as carelessness. That would leave the review model intact: ask competent people to pay closer attention and the problem goes away.
The reviewers were competent. They checked the behavior they had been given reason to consider. What they shared was not a lack of effort but a history. The implementation, explanation, tests, and reviews had all made one order feel complete.
Review independence is therefore not the number of reviewers. It is the independence of the assumptions they bring.
Different names in an approval log do not establish that independence. Neither do separate files, separate sessions, or separate tools by themselves. The question is whether the investigation entered through a path that could expose what the earlier path had normalized.
Workflow Lineage
The shared condition needs a name only after the incident makes it visible.
Workflow Lineage can travel through an author’s explanation, a planning artifact, a prompt, a fixture, a test suite, a preferred operation order, or the history of how a change was implemented. It does not require reviewers to copy one another. They may reason independently while beginning from the same inherited account of what deserves attention.
The lineage is often useful. Shared context carries domain knowledge, rejected alternatives, compatibility constraints, and the reasons behind deliberate tradeoffs. Without it, every review would reopen settled decisions and rediscover the same architecture from nothing.
The risk appears when shared context also decides which paths feel natural, which boundaries seem trustworthy, and which questions no longer need asking. At that point, adding reviewers can multiply agreement without adding a new way for the work to be wrong.
FIG 01 · REVIEW PATHS
Another reviewer is useful only when the path can differ.
The second lane does not begin with a better answer. It begins with a constraint the first lane did not inherit.
Shared lineage
- 01Receive the same explanation.
- 02Follow the same natural sequence.
- 03Multiply agreement around one blind spot.
Introduced distance
- 01Enter through a different path.
- 02Make the inherited assumption answer back.
- 03Verify the conflict against the code.
The pattern travels
Operation order is only one carrier of lineage.
In one planning review, several documents agreed with one another because they had been written in sequence from the same assumptions. A cold reader traced those claims into the current system and found that the plan relied on signatures and helpers that did not exist as described. Cross-reference had made the documents coherent; it had not made their shared premise true.
In a release assembled through several green implementation slices, every local check used a tolerant test double. The double ignored an input that the production implementation honored. Slice by slice, the behavior looked correct. A release-wide reviewer traced the complete production call path and found that the release’s main behavior was a no-op outside the mock.
These incidents do not prove that cold review is magical. They show that different failure classes require different forms of distance. A plan may need distance from its author’s explanation. An integrated release may need distance from slice-by-slice scope. A mocked path may need distance from the implementation lineage of its test double. A stateful workflow may need distance from its natural sequence.
The useful question is not whether another reviewer was added. It is what changed about the investigation.
Lineage Review
Freshness by itself is too vague to become a convention. The review must be designed around the kind of difference the existing evidence lacks.
The definition is compact. The practice is not. A Lineage Review is a practice: a sequence of directives for tracing inherited assumptions, selecting a meaningful form of distance, and preventing a differently biased reviewer from becoming a new authority by reputation alone. I shall lay out the whole algorithmic process that I have formulated below.
The Lineage Review process
1. Identify what established the natural path
Begin with the artifact or workflow that made the implementation coherent. It may be a design document, a prompt, a fixture, a test suite, an implementation sequence, or an explanation of how the feature is normally used.
Do not begin by asking who reviewed the work. Begin by asking what account of the work each reviewer encountered. Reviewer identity matters less than the path from which the review learned what was supposed to be natural.
2. Trace who inherited that path
Record which reviewers received the same explanation, planning lineage, fixtures, test harness, or operation order. Two reviewers can work in separate sessions and still share the same lineage. Two different tools can still enter through the same mock. A fresh name does not guarantee a fresh investigation.
The trace should be concrete. “They had context” is too broad to help. Name the artifacts, assumptions, sequences, and representations that travelled from implementation into review.
3. Name the assumptions that remained shared
Turn the lineage into claims that can be challenged. The ordinary settings update happens before secret storage. The helper has the signature described in the plan. The mock behaves like the production adapter. Green slices compose into a working release.
This step separates useful shared knowledge from untested shared belief. A deliberate constraint may deserve preservation. An unstated assumption carrying release confidence deserves pressure.
4. Identify the missing kind of distance
Different blind spots require different review paths. Choose the distance that can expose the assumption carrying the most risk.
- Context distance uses a cold reader rather than beginning with the author’s explanation. It is useful when several artifacts were made coherent by the same authorial model.
- Scope distance reviews the integrated release rather than another isolated slice. It is useful when local changes pass but their interaction remains untested.
- Method distance traces the production path rather than rerunning the same tests. It is useful when verification may be repeating its own representation.
- Sequence distance reverses or permutes valid operations rather than following the builder’s natural order. It is useful when state changes are asymmetric or order-dependent.
- Implementation distance exercises a real adapter, registry, package, or transport rather than the tolerant substitute used during construction. It is useful when a mock can ignore behavior production enforces.
Distance is not novelty for its own sake. Select the smallest difference capable of making the shared assumption answer back.
5. Create a review path that introduces that distance
Give the reviewer enough domain context to evaluate the work, but do not hand over the full reasoning that made the original path feel inevitable. Specify the surface, risk, and required evidence. Where appropriate, specify the alternate constraint: inverse sequence, non-default configuration, integrated diff, real adapter, or direct call-chain trace.
Do not provide the expected defect. A reviewer told exactly what to find can become a confirmation pass wearing fresh-context clothing.
6. Treat the findings as hypotheses
A differently biased reviewer can simply be differently wrong. Missing context can reopen settled decisions, mistake intentional behavior for a defect, or attach too much meaning to a local inconsistency.
Freshness supplies difference, not authority. The finding should state the claim, the path used to reach it, and the evidence that would reproduce it. Severity, confidence, or rhetorical force cannot replace that burden.
7. Verify every load-bearing finding against current code
The informed owner or parent review must reproduce the behavior, trace the current path, and restore the domain history needed for judgment. Verify actual signatures, production implementations, state transitions, transport behavior, and persistence effects. If the finding cannot survive that contact, do not act on it merely because it came from a cold reviewer.
Discovery benefits from missing inherited explanation. Adjudication benefits from code grounding and accumulated context. A reliable workflow needs both.
Leave a review receipt
The method should make the next review less dependent on memory. At the end of a pass, record:
- which context and artifacts the reviewer inherited;
- which paths, sequences, and boundaries it examined;
- which paths or boundaries it did not reach; and
- what its evidence can and cannot establish.
A reviewer cannot reliably report an assumption it never noticed. It can report the limits of what it inspected. That receipt gives the next review a visible coverage boundary from which to choose another kind of distance.
The receipt should bias the next investigation without dictating its conclusion. “Exercise the inverse order” introduces sequence distance. “Prove that the secret disappears” supplies the answer in advance. The first creates a chance for disagreement. The second asks for agreement with a new script.
Familiarity is still expertise
There are good reasons not to make every review cold. Familiar reviewers know which constraints are intentional, which compatibility promises matter, and which apparent irregularities carry years of operational history. Small local edits with direct tests may gain little from a separate review tier.
Lineage Review belongs where shared assumptions carry meaningful risk: safety boundaries, multi-step state changes, mocked integrations, self-authored specifications, stateful operation order, and release-wide interactions.
Even there, difference should be proportional. A second model family or separate harness may create useful distance, but neither is the definition of independence. The same model can enter through a different method. Different models can repeat the same path. What matters is the assumption the review was designed not to inherit.
Review is something we design
“Was this reviewed?” is too weak a closing question. It counts an event without describing the investigation that occurred.
A better review process asks what established the natural path, who inherited it, which assumptions remained shared, what kind of distance was introduced, and what the resulting evidence can actually prove. It preserves the reviewer’s coverage limits so the next pass does not have to pretend that an unknown blind spot can name itself.
Fresh eyes are useful because they carry a different bias. They do not arrive without assumptions, and they do not become correct by being new. Their value is that a deliberately different path can make settled agreement answer to something it did not teach itself to expect.
Review independence is not produced by multiplication. It is designed through difference, then earned through verification.
Which assumptions did this reviewer not inherit?
More from this theme
When the test agrees with the bug
A test suite can become internally coherent while its model drifts from production, leaving green evidence for a world the software never inhabited.
The experiment is still yours
AI can help produce the work. It cannot own the hypothesis, the architecture, the risk, or the lifecycle.