A Sufficiently Precise Spec Has Already Become Code
Agent loop PRD stories are specs — if they're vague enough that the implementor agent makes decisions, the spec was already code that ran wrong
Gabriella Gonzalez makes a deceptively simple argument: the distinction between “specification” and “program” isn’t categorical — it’s about precision. Push a spec toward completeness and at some threshold, the document that describes a computation is a computation. You haven’t avoided writing code. You’ve just chosen a worse editor.
The case study is OpenAI Symphony, which she takes apart as pseudocode in prose costume. Natural language framing doesn’t dissolve the underlying rigor requirement. If your spec is unambiguous enough to execute, it has all the failure modes of a real program — logical errors, edge cases, contradictions — with none of the tooling to catch them. No type checker. No static analysis. No compiler screaming at you before you ship. The prose costume is doing real damage by making the problems invisible until runtime.
The Borges thread is the sharp one. In “On Exactitude in Science,” the imperial cartographers build a map so detailed it becomes the same size as the territory — and the map IS the territory. A spec that describes a program completely has the same informational content as the program. The question isn’t whether you wrote a spec or code. The question is how you plan to execute it. Dijkstra’s narrow interfaces argument lands here too: you can’t define a precise interface without understanding the problem at a level that makes the implementation almost inevitable. Precision isn’t a property you add at the end. It’s the substance of understanding.
This hits directly at how agent loops handle PRDs and stories. The stories fed to an implementor agent are specs. If a story leaves any decision to the agent — architecture choice, naming, behavior at an edge — the agent becomes an unacknowledged co-author, and the spec was already code running in a context where there’s no diff to review. That might be the right call sometimes. But it’s worth naming.
Key Ideas
- A spec precise enough to leave nothing ambiguous is computationally equivalent to a program — same information content, different syntax
- OpenAI Symphony called out as pseudocode in prose: all the brittleness of code, none of the tooling that makes code manageable
- The Borges map-territory problem: a perfect map IS the territory — a complete spec IS the program
- Dijkstra’s narrow interfaces: you understand a problem when you can specify its interface precisely; vague interfaces reveal vague thinking
- Agent loop implementors operating on underspecified stories are de facto co-authors — which is a feature or a bug depending on whether you meant it
- The failure mode of natural language specs is identical to the failure mode of bad code: ambiguity that defers decisions to execution time