# Proof-driven development: what GitHub’s PDD Kit changes and what it doesn’t
> A practical look at GitHub’s PDD Kit, Verus proofs, Chopin and Spec Kit, and why formal verification still needs good specifications and engineering judgement.
Author: Matthew Ford
Published: 2026-10-22

<p>GitHub's latest agent announcement has a bold promise: instead of reviewing every line your agent writes, approve a specification and let a verifier prove the code meets it.</p>
<p>It is a good idea. It is also much narrower than the headline suggests.</p>
<p>The Proof-Driven Development Kit, or PDD Kit, is a research preview from GitHub Next and Microsoft Research. The announcement describes a workflow where a plan becomes a formal Verus specification, the Verus verifier proves that agent-generated Rust code meets that specification for every input, and the result becomes a verified pull request.<sup><a href="#source-4" aria-label="Source 4">[4]</a></sup> GitHub says the combination of Chopin and PDD Kit could let teams ship AI-generated code without line-by-line review, with stronger assurance than code review and testing alone.<sup><a href="#source-5" aria-label="Source 5">[5]</a></sup></p>
<h2 id="what-pdd-kit-actually-does">What PDD Kit actually does</h2>
<p>According to GitHub Next, the workflow is:</p>
<ol>
<li>start with a plan;</li>
<li>infer intent and propose a formal Verus specification;</li>
<li>ask a human to approve that specification;</li>
<li>use the verifier to prove the generated code meets it;</li>
<li>fall back to tests and computer-use agents where proof is not possible.<sup><a href="#source-4" aria-label="Source 4">[4]</a></sup></li>
</ol>
<p>It works on Rust today. There is no announced support for TypeScript, Python or Ruby, so this is not a general answer for every application stack.</p>
<h2 id="this-is-not-test-driven-development-with-a-fancier-name">This is not test-driven development with a fancier name</h2>
<p>A test shows what happens for selected inputs. A proof covers every input allowed by the specification.</p>
<p>That makes the specification the thing you really need to get right. &quot;The login should be secure&quot; will not help. A stronger specification would say which credentials are accepted, how attempts are limited, what state changes are allowed and which behaviour must never occur.</p>
<p>The work of defining intent has not disappeared. It has become more visible, and more demanding.</p>
<h2 id="where-spec-kit-and-chopin-fit">Where Spec Kit and Chopin fit</h2>
<p>GitHub's Spec Kit is separate. It is an open-source toolkit for giving coding agents structured processes, reusable templates and documented outcomes.<sup><a href="#source-3" aria-label="Source 3">[3]</a></sup></p>
<p>Chopin is GitHub Next's research prototype for multiplayer agentic planning. People and agents can work on plans organised around GitHub repositories.<sup><a href="#source-2" aria-label="Source 2">[2]</a></sup></p>
<p>PDD Kit sits further along the verification path. Spec Kit helps structure the work. Chopin helps people and agents plan together. PDD Kit attempts to prove that a subset of the resulting code satisfies a formal specification.</p>
<h2 id="what-a-proof-cannot-tell-you">What a proof cannot tell you</h2>
<p>A proof is only as useful as the specification and the boundary around it.</p>
<p>It does not prove that the product requirement was the right one, that the specification captured every business rule, that the surrounding infrastructure is safe or that third-party services will behave as expected. It also does not cover code outside the supported language and proof scope.</p>
<p>Where proof is not possible, the announced fallback is empirical verification with tests and computer-use agents.<sup><a href="#source-4" aria-label="Source 4">[4]</a></sup> That fallback still needs engineering discipline. &quot;The agent tried it and it worked&quot; is not an evaluation.</p>
<h2 id="use-more-than-one-kind-of-control">Use more than one kind of control</h2>
<p>A Microsoft Research/CMU benchmark makes the broader review problem clear. The best code-review agent configuration caught 71.9% of human-verified bugs within its top-five comments, up from 47.7% five months earlier. The same research found that agents still missed more than 20% of bugs humans found, with performance dropping on proprietary repositories that required more project context.<sup><a href="#source-1" aria-label="Source 1">[1]</a></sup></p>
<p>That points to a mixed approach:</p>
<ul>
<li>precise specifications where behaviour can be formalised;</li>
<li>proofs for properties that can be verified;</li>
<li>tests and static checks for broader behaviour;</li>
<li>independent review for context-heavy changes;</li>
<li>staged deployment and rollback for production risk;</li>
<li>human approval where the blast radius justifies it.</li>
</ul>
<h2 id="what-to-do-before-pdd-kit-is-generally-available">What to do before PDD Kit is generally available</h2>
<p>You do not need to wait for this tool to get value from the idea.</p>
<p>Start by separating provable code from behavioural code. Parsers, validators, state machines, permission rules and data transformations are better candidates for formal contracts than broad UI or workflow behaviour.</p>
<p>Then write reviewable intent before implementation. A specification should name allowed inputs, required outputs, invariants and unacceptable actions.</p>
<p>Then define the evidence gate. Decide which combination of proofs, tests, review, deployment controls and production monitoring is required before an agent-generated change can ship.</p>
<p>PDD Kit is worth watching because it brings formal verification into an agent workflow. It is not worth treating as a reason to skip specification work or human judgement. Those are exactly the parts that determine whether the proof means anything.</p>
<p>Our <a href="/services/ai-automation/">AI consulting and automation service</a> helps teams define those boundaries, evaluation gates and delivery workflows.</p>
<h2 id="sources">Sources</h2>
<ul>
<li id="source-1">[1] <a href="https://arxiv.org/html/2610.13668">https://arxiv.org/html/2610.13668</a></li>
<li id="source-2">[2] <a href="https://githubnext.com/projects/chopin">https://githubnext.com/projects/chopin</a></li>
<li id="source-3">[3] <a href="https://github.com/github/spec-kit">https://github.com/github/spec-kit</a></li>
<li id="source-4">[4] <a href="https://x.com/GitHubNext/status/2112936525457740139">https://x.com/GitHubNext/status/2112936525457740139</a></li>
<li id="source-5">[5] <a href="https://x.com/github/status/2112938664959562081">https://x.com/github/status/2112938664959562081</a></li>
</ul>
