August 29, 2026
The Bottleneck Moved
Reading the AI-Native SDLC Playbook against my own git log.
Anthropic published a piece called “The AI-Native SDLC Playbook” recently, and its core argument stuck with me: the software development lifecycle was designed for an era when writing code was the slow part. That is no longer true. An agent can implement a feature in minutes. What is still human-speed is everything around the code: deciding what to build, reviewing what came back, and deciding whether it is safe to ship.
I read it the way I read most engineering frameworks now, with a second tab open to one of my own repos. Outr, the outbound sales pipeline I have been building, is a good test case, because almost none of it was written by hand. Of its most recent 157 commits, 149 carry a Claude co-author line. That is not a stat I calculated for this post. It is just what git log says when you grep it.
So I went stage by stage.
Plan and Design. The playbook wants an intent.md, then a spec.md, each a committed artifact a human approves before work starts. I do not have that ritual. What I have instead is a docs/decisions/ folder with three architecture decision records, each dated, each with a Context, a Decision, and a Consequences section that admits what the choice does not solve. One of them, on why the agent pipeline runs as BullMQ queues instead of something fancier, ends by naming the exact debugging capability we gave up (distributed tracing across stages) and the condition under which we would revisit it. That is not the playbook's format, but it is the same instinct: write down the reasoning before you write the code, so the audit trail exists whether or not anyone reads it again.
Build. This is where the playbook and my actual practice line up almost exactly. Work starts in plan mode, Claude reads the codebase, proposes a plan, and only then touches anything. The 149-of-157 number is what that looks like at scale over two months. What I did not expect, going in, is how well this maps onto Outr's own product: it is a pipeline of agents (Vyasa scoping the target profile, Narad scoring fit, Sanjay gathering evidence, Scribe drafting, a human approving, Apollo sending, Hephaestus learning from the edits). I am running an AI-native SDLC to build a tool whose entire value proposition is running an AI-native pipeline for someone else's sales team. The recursion was not intentional. It just happened, because it is the same shape of problem: break work into stages, let an agent own each stage, keep a human gate where judgment actually matters.
Test. The playbook's line is that “every session checks its own work before a human sees it.” My CI runs a disposable Postgres container so a real integration test can prove tenant isolation, not a mocked one, then lints, builds (which type-checks both workspaces), and runs a dependency vulnerability scan scoped to production packages only. That last part has a comment in the workflow file explaining why: a dev-only tool has a known high-severity advisory that would block every single build if the scan were not scoped, so the gate checks what actually ships, not what sits in node_modules during development. That is a human decision encoded into an automated gate, which is the whole idea. The gate does not think. It enforces a thing a person already decided.
Deploy and Maintain. Here is where I am furthest from the prescription. The playbook describes named release authorization, managed MCP servers, sandboxed non-interactive Claude runs in the pipeline itself. I do not have that yet. Deploys are still a person running a command. I do not think that is wrong at Outr's current size, but I noticed the gap plainly once I had the playbook's language for it, and it is the part I am most likely to build next.
What I liked most about reading it this way, stage against stage, is that it is honest about where the two other things I have shipped this year also land on the same spectrum without me having named it that way at the time. Book writing agents has a Noesis policy check that runs before the LLM-based quality checker, deliberately, because a deterministic gate catches a banned pattern with 100% consistency and a model-based one does not. unslop-text is built the same way on purpose: a regex pass that runs entirely in the browser first, and only then an optional model pass for the structural problems no pattern can see. Different projects, same rule showing up again: put the deterministic check in front of the subjective one, every time you can.
None of this makes the playbook a checklist I am now trying to complete. It is closer to a vocabulary. I already had most of these practices before I had the words for them, and the gaps it surfaced (no formal skills or hooks, deploy still manual, intent.md replaced by something more ad hoc) are real and worth closing. That is the actual use of a framework like this: not to tell you what to build, but to hand you a clean enough map that you can see exactly where your own system stops matching it.
Back in the first post of this series I wrote that the bottleneck was no longer typing code, it was knowing what should be built and how humans stay in control of increasingly capable digital workers. Reading this playbook against my own repo is the closest I have come to seeing that sentence turn into a checklist I can actually audit myself against.