firehose> #llmops

Spec-Driven Development

Exhaustively (hopefully) define your program in a spec, then let a coding agent implement it. The paradigm rests on a triangle of three artifacts: specs (.md — defines what, why, and sometimes how), tests (.yaml — measures and validates verifiable behavior), and code (.py — implements and executes the specified behavior). When agents are reliable enough, the durable, shareable artifact can shift from the code to the spec: Drew Breunig's whenwords ships as SPEC.md + tests.yaml with no code at all and still "delivers" a library — posing the question, "if the agents are good enough, do we need to share code?"

The hard part is not the initial generation but the ongoing sync: specs, tests, and code are three redundant representations of the same intent, so they drift. Bug fixes and hot-fixes add code and tests with no spec change; agents make implementation decisions the spec never recorded. Keeping the triangle "true" — detecting the gaps and folding new intent back into the spec — is the standing problem, and it is what a tool like Plumb (see the distillate) exists to manage.

Claims


Linked from