Claude Code Revived KBEmacs in About Six Hours, and Three of Its Six Self-Tests Still Fail
Software / news
Claude Code Revived KBEmacs in About Six Hours, and Three of Its Six Self-Tests Still Fail
A 26 October preprint by Jeff Shrager, Kent Pitman and Mia Golec reruns Simon’s 1961 Heuristic Compiler and MIT’s 1984 editor, and lists what did not work.

Jeff Shrager, Kent Pitman and Mia Golec say they got Herbert Simon's 1961 Heuristic Compiler and MIT's 1984 KBEmacs running again, with about 1,500 calls to Claude Opus 5.5 and roughly six hours of machine time. Their preprint, submitted to arXiv on 26 October 2026, also reports that KBEmacs passed three of its six self-test sequences, and only one of those reproduced its 1984 output.
The paper, Executable Archaeology of Programs That Model Programming, is licensed CC BY 4.0. Its argument is that the old systems carried explicit, inspectable theories of programming that "are largely absent" from today's AI coding assistants. The more useful reading for working programmers is the account of what the reanimation took, and where it fell short.
Where the code came from
The Heuristic Compiler survives as a line-printer listing headed "HEURISTIC CODER 7/16/61" in the Herbert A. Simon Papers at the CMU Archives. It runs to about 94 pages and 4,470 cards, according to the paper. The start card and one routine came from RAND memorandum RM-3588-PR, which the authors obtained from bitsavers.
KBEmacs, the editor in MIT's Programmer's Apprentice project, comes from a January 1985 four-volume printout of Zetalisp code that Pitman kept. About 87 files were transcribed, mostly by ChatGPT, into roughly 34,500 lines. Scans are in Pitman's netsettlement repository, and the transcription is in jeffshrager/kbemacs.

What the model did
The hardware was never available. The authors write that the CADR (usim) and Symbolics Open Genera emulators were not usable with this release, and Open Genera is not freely available. KBEmacs instead runs on SBCL under a Zetalisp compatibility layer that Claude assembled and debugged.
The paper lists the work done by Claude Code. It corrected transcriptions by running the code against the scans, extended an IPL-V interpreter with eleven primitives, adapted Common Lisp ports of Flavors and LetS, built a test harness and wrote a first draft of the paper, which the authors then revised heavily. Shrager directed the project and checked results. Pitman supplied the scans, and Golec searched the archives.
The effort figures are the paper's own: about 1,500 calls to Claude Opus 5.5, about 1,600 tool invocations and about six hours of active machine time. They exclude the ChatGPT transcription.
The self-test results
| KBEmacs self-test | Result in the paper |
|---|---|
| HASH | Passed |
| SQRT | Passed, output equal to 1984 |
| SUMLIST | Passed |
| BUCKET | Failed |
| DELETE | Failed |
| MEMQ | Failed |
The paper says only SQRT was reproduced, generating code equal to the December 1984 output, with (mysqrt 2.0) returning 1.4142157. It does not, in the sections read for this piece, explain why HASH and SUMLIST count as passes but not as reproductions.
The repository README is quieter. It gives one command, sbcl --script runtime/run-test.lisp sqrt, and says nothing about which sequences fail. It also carries no licence, though the code is a transcription of listings preserved by Pitman.
One repair, and one gap
The Heuristic Compiler needed a judgement call. The listing described routine J3 both functionally and as a state, and the executive preferred the functional description, which failed. The published result appeared only after the authors removed J3's functional description, a step they call a repair. The English front end was not reanimated at all, because the input sentences are not in the listing.
Simon's own 1963 paper, as quoted in the preprint, made "no claims" for these procedures "as practical approaches". Of KBEmacs, the paper quotes Waters, whose 1985 and 1986 papers the README lists, saying it knew "only a few dozen cliches" where a practical tool "would need to know many hundreds". Waters also reports that "well over half of all the effort expended on KBEmacs went into implementing an analyzer and coder."
What it does not show
The authors call the links to modern tools "conceptual continuities, not architectural equivalences". Coding agent harnesses share the means-ends loop, they write, but the operators and difference tests are still conventional programs. Their conclusion is that "we cannot reason about what is not represented".
That is a claim about design, not a measurement, and the paper reports no quantitative comparison. Readers weighing the SRE deskilling argument or Cisco's unlimited-token rewrite will find no data here on whether explicit theories would help. The next concrete check is the repository: KBEmacs' three failing sequences, BUCKET, DELETE and MEMQ, are the open work.
Sources
More in Software
- 01Python 3.15 Ships a Built-In sentinel After Five Years of PEP 661The new type replaces the object() idiom with a one-line constructor that survives copying, pickling and type checking, but a Python 3.15 floor is the price of using it.
- 02Lightpanda 1.0 Passes 80% of Chrome's Web Tests, by Its Own CountThe Zig-built headless browser left beta on Oct. 2, and its own benchmarks put it ahead of two Rust rivals on a 940-page crawl, with no hardware listed.
- 03Claude-Mem Hits 107,900 Stars, and Its Own Pages Disagree on LicenceThe Claude Code memory plugin has gained about 35,500 stars since May, but a May write-up says AGPL-3.0, the repository now says Apache-2.0, and the README describes an optional cloud sync that earlier coverage did not.
- 04Jepsen Found 96 Issues in ParticleDB 1.1.4 and Tells Users to Halt DeploymentKyle Kingsbury’s 31 October report, funded by vendor Orkes, finds lost writes and ignored constraints in healthy single-node runs.