Thoughts on “Bootstrapping Coding Agents”

Someone at work shared around this preprint entitled “Bootstrapping Coding Agents: The Specification is the Program”. From the abstract:

A coding agent can bootstrap itself. Starting from a 926-word specification and a first implementation produced by an existing agent (Claude Code), a newly generated agent re-implements the same specification correctly from scratch. This reproduces, in the domain of AI coding agents, the classical bootstrap sequence known from compiler construction, and instantiates the meta-circular property known from Lisp.

I read the paper, and I have thoughts.

If I understand correctly (and I’ve not formally studied compilers since an elective course as an undergrad), once a compiler is “self-hosting”, it is deterministically guaranteed to regenerate itself from its own fixed source code. At any time, rerunning a self-hosting compiler on its own source will regenerate an identical compiler binary. So (and I think this is the point) as the source changes, the self-hosting compiler can create its own reference implementations. The language and the compiler together form one complete package which demonstrates its own expressivity. Here, self-hosting is a meaningful and formally verifiable property of the compiler.

But in this preprint (again iiuc) they use a particular version of the Claude API to regenerate an agent harness from a natural-language (i.e. not formal) specification. (The title and abstract say “agent”, but the paper describes recreating a coding harness, which is the less interesting half of an agent.) This is “bootstrapping itself” only (a) nondeterministically, (b) up to some manually verified conformity of the generated code to the spec, and (c) when it has access to that version of the Claude API. The property is not formal, we just trust the authors that the recreated harness was, in their opinion, close enough to the original on the times they checked. But there’s no guarantee that regenerating from the spec somewhere down the bootstrap chain won’t (with some small but compounding probability) introduce a critical bug in the harness not present in previous implementations in the chain. To me this is — at best — a very weak form of self-hosting.

Their conclusion that “the spec is the stable artefact of record” is, in my opinion, Claude-pilled motivated reasoning, and not warranted in anything but the most informal sense. I’m sure the overwhelming scent[1] of LLM-generated prose throughout the paper is just a coincidence.

I would be Reviewer #2 on this paper.


  1. Here’s a passage from page 4:

    Size and auditability. The 926-word specification used here is small enough to read in a single sitting. A useful budget: keep the specification under 1,500 words, or under 15 minutes of reading time. If a section requires cross-referencing another section to be understood, split or restructure.

    Behavioral completeness. The specification must describe every capability the agent exercises. A practical checklist: for each tool call, API interaction, and error condition in the generated code, ask “is this behavior described in the specification?” Any “no” is a gap. Write the specification first and treat undescribed behavior as intentionally undefined.

    ↩︎