Skip to main content

RESEARCH · AUGUST 23, 2026 · 6 MIN READ

When the PR Is the Wrong Artifact to Review

Anthropic's AI-native SDLC playbook moves review upstream to intent.md. Three failure modes that emerge when agent bundles replace human-authored diffs.

By the Hyrax team


When the PR Is the Wrong Artifact to Review

Anthropic published its AI-native SDLC playbook on August 21, 2026, with a blunt thesis: code is no longer the bottleneck, and the processes built around code haven't caught up. The document proposes replacing the traditional linear handoff with a committed artifact chain , intent.mdspec.mdplan.md → diff , where each accepted artifact fires the next stage automatically. The PR review familiar to every engineering team is still in the chain, but it is no longer the primary gate. That moves to planning, and human attention is supposed to concentrate at the intent and spec stages, where changing course is still cheap.

The practical implication arrives almost immediately. If intent is the load-bearing artifact, then reviewing a diff without access to the original intent.md is reviewing the answer without the question.

What Anthropic's Model Actually Proposes#

The playbook's key claim is structural, not aspirational. Louis Claxton writes: "Build is no longer the constraint , the human-speed steps around it are." Security teams sized for human output face review queues that build faster than they can clear them once agents multiply code volume. The solution proposed is not to add human reviewers but to move governance upstream , enforce policy at the spec, not at the diff.

The artifact chain matters for defenders because it changes what constitutes evidence. In the traditional SDLC, a PR carries context in its description and comments. In the AI-native model, the audit trail runs intent.mdspec.mdplan.md → merged diff, with each committed to version control with timestamps. If those artifacts are present and consistent, the change is reviewable. If they are absent or have drifted, the diff is floating context-free , which is exactly where review fails.

The Convergence Problem#

Agents given the same spec tend to reach the same solution. This is not a bug in any individual model; it is a distributional property of how language models generate code from a common prompt. The failure mode for reviewers is that a solution which looks authoritative , fully abstracted, properly layered, passing all tests , resists simplification because the agent defending the PR will re-generate the complexity each time a reviewer tries to remove it.

Daniel Kravets at LeadDev puts the structural version of this problem clearly: "Separate builder and reviewer at task level, not just PR level, or agents rationalize their own failures." The reviewer's instinct to ask "why is this so complicated?" is calibrated for a human author who might say "I wasn't sure about the edge case." An agent will re-explain the complexity in terms of the spec, because the spec is all it has. The reviewer then needs external ground truth , the plan.md , to distinguish genuine architectural necessity from generated over-engineering.

Without that artifact, the convergence problem is invisible at review time. The code looks deliberate because it is internally consistent. The Salesforce Engineering blog makes the stakes explicit: "the agent quietly misinterpreted an ambiguous requirement near the beginning of the implementation. Every decision that followed was internally consistent. The tests validated the implementation. The reviewer approved the diff."

Plausible-But-Costly Code#

Agent-generated code passes structural review more reliably than it passes operational review. The build passes, the tests are green, the patterns are idiomatic. What does not surface from code inspection alone is the runtime characteristic , specifically, what happens at scale.

A query that loads 5 million rows to filter in memory looks identical to a correct paginated query at diff time. The async decorator is present. The error handling is correct. The code is, by every review heuristic available to a reader of the diff, fine. The problem is a property of execution against real data, and review heuristics were not designed to detect it because human authors who wrote the database layer usually know to paginate.

Faros AI's AI Engineering Report 2026 found that median PR review time is up 441.5% across two years of telemetry from 22,000 developers. That number is about queue load, not about quality. Reviewers spending more time on more PRs are not necessarily catching the performance failure modes that only manifest at runtime. The right control is not more review hours , it is static analysis that can reason about data access patterns before the diff merges.

Intent Drift#

The third failure mode is the quietest. An intent.md is committed in April. A plan.md is committed two days later. The implementation takes three more days and diverges from the plan , the rate-limit cache from the plan's risk section was deferred, the third-party API integration was swapped for a different vendor. plan.md is not updated. The PR merges.

Six weeks later, a new agent picks up the intent.md to implement a related feature. It reads the spec, reads the plan, and treats the existing code as the authoritative implementation of both. The drift has propagated.

The nextwaveoftech.com analysis frames this as a category error in where review starts: "nobody has yet asked what the code was supposed to do." PR-level review cannot recover intent that was never reviewed. If the intent.md and the merged diff are not checked for consistency at merge time , automatically, not as a courtesy , drift accumulates silently in the artifact chain.

Anthropic's playbook acknowledges this: it recommends measuring "the number of changes made to the intent.md that are made after the first spec.md commit for the same change," and tracking "how often the merged diff still matches the committed plan.md." These are the right metrics. They require tooling to compute them at merge time, not analyst time to audit them retrospectively.

What to Configure Now#

Three controls correspond directly to the three failure modes above.

First, add a plan.md check to the PR review step. The review should verify that the merged diff's structure matches the files listed in plan.md. Divergence is not automatically a rejection, but it should be a required annotation , the reviewer must acknowledge the delta, not discover it post-merge.

Second, add static analysis passes that target data access patterns, specifically queries that return unbounded result sets, in-memory aggregations over collections that could be large, and missing pagination in API responses. These do not require semantic understanding of the intent; they are detectable from the call graph.

Third, require that intent.md and the merged diff are compared at PR time. The check does not need to be exhaustive , a diff of stated constraints in intent.md against what the merged code actually does for authentication, data scope, and external dependencies covers most drift. The constraint list in a well-formed intent.md (scope, affected systems, constraints, open questions) maps directly to things that are checkable in code.

Hyrax runs these checks as part of its security, reliability, and API-and-data agent domains , comparing the implemented behavior against what the codebase's own documentation says was intended, flagging data access patterns that would not survive production load, and submitting findings as a PR that the team merges or rejects on their own judgment.

The artifact chain Anthropic is proposing is a better audit trail than most teams have today. It is also a new attack surface for review failure: more artifacts means more places for intent and implementation to silently disagree. The controls need to match the model.

Hyrax is live at hyrax.dev.


Sources

  1. 01claude.com
  2. 02salesforce.com
  3. 03nextwaveoftech.com
  4. 04tim-schipper.nl
  5. 05patilaslanian.hashnode.dev
  6. 06leaddev.com