What changed
Microsoft Research has announced the release of PDD Kit, a new tool designed to integrate formal methods into the development process of software created by AI agents. The tool allows developers to turn their intent into a formal specification and then prove that the code generated by an AI agent meets that specification for every input. If a proof cannot be generated, PDD Kit falls back to testing. The tool was tested on a full-stack web app called Pet Store, written in Rust, where it successfully verified the login logic and uncovered existing bugs.
What this means in practice
PDD Kit works within GitHub Next’s Chopin, a real-time, multiplayer planning environment, where team members and agents can collaborate on a shared document. The workflow involves two main steps: first, team members review the intent in plain language, and PDD Kit asks the questions a careful reviewer would ask, explaining the relevant code as it goes. The answers are recorded in an intent artifact, which bridges the user’s intent with the formal specification or tests. The parts of the intent that can be formalized are converted into formal specifications, while the rest are converted into informal specifications for tests. PDD Kit automatically generates proofs that the code satisfies the derived formal specs and high-quality tests for the informal specs. Developers do not need a formal methods background to use PDD Kit.
Limitations and availability
PDD Kit is currently available as a tool within GitHub Next’s Chopin environment. It uses Verus, a proof language for Rust co-developed by Microsoft Research and several academic institutions, for formal verification. The tool is designed to work with Rust code and is intended for use in full-stack web applications. The supplied announcement does not specify the exact release date or availability outside of the Chopin environment. The tool is meant to address the challenges of scaling review as AI agents generate increasingly large amounts of code, ensuring that the code aligns with the user’s intent and specifications.
