In 1978 Ken Kahn's program Ani turned a short description of the Cinderella story into an animated film. In October 2026, almost fifty years later, Ken and Claude brought Ani back. Not a copy of it: Ken's own 1978 Lisp, recovered from the MIT AI Lab's backup tapes, running unchanged in a web browser. Then they built some of what Ken's thesis said Ani should do next. This page tells how, in order, with the numbers.
Ani: Ken Kahn, MIT Artificial Intelligence Laboratory, 1978–79 (his thesis, rewritten as AI-TR-540). The revival: Ken, directing it and deciding; Claude (Anthropic's Claude Opus 5.5, working as Claude Code with many subagents), doing the engineering. 8 to 16 October 2026.
9days, 8 to 16 October 2026
102 / 102of Ani's 1978 choices made again exactly, on day one
13,378lines of Ken's 1978–79 code, run unchanged
53prompts from Ken
16,600tool calls by Claude
71Claude agents at work, 16 of them reviewers
234commits
6.3Btokens read by Claude, almost all from its cache
Ani was the program at the heart of Ken's MIT doctoral thesis, Creation of Computer Animation from Story Descriptions (1979), which he then substantially rewrote as the technical report AI-TR-540. It was not given a script. It was given a film description, written in Lisp: who the characters are (Cinderella is shy, good and graceful; the stepmother is evil and mean), how they feel about one another, and what each scene has to get across (in one, the stepmother keeps Cinderella and the Prince apart).
From that, Ani decided for itself how each character should move, fast or slow, smoothly or jerkily, in curves or straight lines, and what each should do in each scene. It worked in two passes. Pass 1 makes 102 choices about how the characters move, each by gathering suggestions from what Ani knows about personalities, relationships and films, and settling their conflicts. Pass 2 plans each scene: how to convey what the scene must, in which parts, with whom where, and for how long. Director, the actor language Ken had written, then animated the plan.
“It”, not “she”. This page calls Ani “it”. An early draft of Ken's thesis called Ani “she”; one professor insisted that he change it, and he did. The revival's film page called Ani “she” too, until 16 October 2026, when Ken chose “it” again.
The film, Cinderella in five scenes, was shot on 16mm film from a color TV screen, with Ken's spoken narration; its title card is dated Friday, 13 October 1978. (There is now also a new version made by the revival's app, with subtitles.) In it the characters are simple shapes:
Cinderella, the star
the stepmother, the square
the Prince, the triangle
the fairy godmother, the circle
Kept Apart, frame 49. The stepmother stands guard between Cinderella and the Prince. Drawn from the revival's run of Ani as Ken left it, in the film's colors, each shape drawn again inside itself as Ken's color mode drew it. Shown here is the part of the picture where they stand, enlarged; the frames below show whole pictures.
The Introduction the stepmother pushes Cinderella around
Kept Apart the stepmother keeps Cinderella from the Prince
No Longer Kept Apart the fairy godmother takes Cinderella to the Prince
The Meeting they meet, after a cut
Justice the stepmother comes to the lovers and slows down
One frame from each of the five scenes, from the revival's run of Ani as in 1978, at 4 frames a second. The shapes are small on the screen, as they were.
Ideas
A society of experts, before The Society of Mind
Ani is not one program following one plan. AI-TR-540 describes it as a community of about 500 small experts (p. 136): one for each word a character can be described by, such as "shy" or "hates", one for each kind of value (low, medium, high), others for keeping the film's variety, for places on the screen, for ways of showing an action, and many more. They are built from actors, the message-passing objects of Carl Hewitt, Ken's thesis supervisor, which Ken's Director provides: each expert answers messages and keeps its own state.
No expert runs the show. When Ani has to choose, say, the stepmother's speed, the sources of suggestions each put forward a view with a strength: her personality, her relationships, how she compares with the others, the film's own levels of flashiness and variety, and, in a scene, her feelings. Ani weighs them not only by strength but by how the suggestions relate, where they come from and how many agree; conflicts end in a compromise or a rejection, and a choice that can't yet be made well is postponed while others are made. A small top level hands out the tasks and settles conflicts with the help of other experts. There is no script, only many weak voices combined.
This was at the MIT AI Lab while Marvin Minsky and Seymour Papert, both on Ken's thesis committee, were working out a theory of the mind as a society of agents. AI-TR-540 cites their draft, a book called "Society Theory of Mind", and says Ani's implementation was strongly influenced by the society view, though its components are less independent, and its experts less flexibly organized, than Minsky and Papert's agents (pp. 45 and 137). Minsky's own book, The Society of Mind, came out in 1986, seven years after Ani. So Ani wasn't designed from the book; it is a working program from the same lab and the same conversation, an early example of the idea in action.
What is analogous, and where AI-TR-540 says it pp. 45, 136–138
Agents and experts. Each source of suggestions is an independent module that puts forward its view and, in a conflict, takes part in the compromise or rejection that follows (p. 45). The experts are more than rules: they answer a variety of messages and keep their own state (p. 136).
Not just the loudest voice. AI-TR-540 compares Ani with Selfridge's Pandemonium, where the demon that shouts loudest wins, and says Ani also weighs how suggestions relate, their sources and how many agree (pp. 136–137).
Demons. Director's actors could keep "demons", small procedures that wake when a variable changes or something is remembered. The revival's bridge puts the 1978 ones back.
Differences. Ani has a small top level that farms out tasks and resolves conflicts, and AI-TR-540 counts the rigidity of its organization as perhaps one of its shortcomings (p. 137). Ani's experts are hand-written knowledge about films and personalities, not a theory of how a mind develops.
The tapes
What the tapes held, and what they didn't
Ken's files survived on the MIT AI Lab's backup tapes. When the tapes were read, decades later, each file was saved in a format that packs each 36-bit word of the lab's PDP-10 into five bytes. Undoing it gave back the text exactly, and a few small tools decoded the binary files too: compiled Lisp, directory listings, archives, pictures.
The best tape has a directory listing dated 8 January 1979, four days before Ken submitted his dissertation. It holds all 31 of Ani's source files, about 10,000 lines, which matches the thesis's own estimate of Ani's size. It holds the Cinderella description, CINDY 46. And it holds CP 29, the file pass 1 wrote for pass 2 in September 1978: 102 choices, 54 relative and 48 absolute, the very counts the thesis gives in Appendix III. That made an exact test possible. Given CINDY, a revived Ani should make the same 102 choices.
Part of the foundation was missing. Ani is written in Director, and the lowest layer of Director, Ken's KEN1; directory, was lost: about twenty files and some 490 definitions, including the macros, the utilities, the pattern matcher and the compiler for actors. A tags table named every function in them. Their code was gone.
What survived, file by file the tapes' contents
Ani's 31 source files (tape 7005017, January 1979), 28 of them also compiled.
The Cinderella description, CINDY 46, the thesis's Appendix I.
Pass 1's answers, CP 29 (102 choice points), and RUN24 2, a later run that records the same choices with the suggestions behind each.
Ani's driver files: how pass 1, pass 2 and filming were run, and which files they passed between them.
Director: the files in Ken's KEN; directory, and KEN1;DRECT, the Lisp primitives Director is built on, hidden in an editor's save file. Also Director compiled into plain Lisp, which shows what the lost macros produced, and earlier and later versions on other tapes.
Lost: the rest of KEN1;; the five scene programs Ani wrote for Director, their summaries and the positions saved between scenes; the color turtle.
Personal files on the tapes were left out of the project.
How the tapes encode a file 36-bit words in bytes
Every file uses the "evacuate" format (described by Alan Bawden in 1992) in which ITS files were moved to Unix. Text is five 7-bit characters to a word; a word whose last bit is set is written as a marker byte and four more bytes; line ends are swapped. src/its/text.js undoes it. The few "garbled" spots in the files turned out to be ordinary words with that last bit set, and decode cleanly.
8 October, morning
Run the real thing, not an imitation
The revival began with this message from Ken to Claude:
I want to revive Ani the AI animation system I built as part of my thesis research. https://dspace.mit.edu/handle/1721.1/6875 I was able to recover some files related to Ani from almost 50 years ago: https://docs.google.com/document/d/1sW97yioPlBoV1ojxgtVVp2ZqGL8dvvaHLfC78z5Cn2M/edit?usp=sharing The old files are at C:\Users\toont\Documents\MIT-AI-Lab Come up with a plan Feel free to ask questions
Ken's first prompt, 8 October 2026, 09:20 (London)
Earlier attempts to revive Ani with AI tools had produced imitations: new programs that acted out Ani's ideas. On the first morning Ken chose the other road. Claude would write a MacLisp interpreter in JavaScript, the Lisp Ken wrote in, and Ken's 1978 files would load on top of it exactly as they are on the tape. Only what was lost would be rebuilt, and in MacLisp, not JavaScript, so that everything above the interpreter is Lisp, as it was.
Two other roads were set aside. Emulating the whole PDP-10 is possible today, but it wouldn't have helped: Ani's compiled code needs the same lost runtime. A modern rewrite of Ani was kept for later, with the revival's traces of what Ani does as its specification.
The film pageHTML, JavaScriptthe film, the glass box, the code viewer, the story editor
Ani: Ken's files, unchangedMacLispwith the revival's extensions beside them, each in a file of its own, switched off for "Ani as in 1978"
Director: Ken's surviving files, the rebuilt KEN1;, and the bridgeMacLispKen's files unchanged; the rebuilt runtime and the bridge are the revival's
The MacLisp interpreter, an ITS file system, the TV turtleJavaScriptthe machine underneath, in any browser or in Node
Ken's code the revival's Lisp the revival's JavaScript
The interpreter 2,787 lines of JavaScript
A reader for ITS's syntax (in MacLisp the slash is the escape character, so division is written //) and Director's read macros; MacLisp's dynamic binding, special forms and functions that take their arguments unevaluated or in any number; property lists, catch and throw, flonum arithmetic, and about 200 built-in functions. An ITS file system serves load, include and the files the passes write. On the first day it read all 1,493 forms of Ani and Director. It runs in Node, for fast tests, and in any browser.
8 October
Rebuilding what was lost
The best evidence for the lost KEN1; code turned out to be a file called TS D2500: a Director saved in January 1980, its "2500 version", made to draw on the 2500 (Marvin Minsky's 2500 Logo computer), whose memory image holds compiled code for most of the lost runtime. Claude decompiled it file by file, from PDP-10 instructions back into Lisp. Where the 1980 code might differ from 1978's, older evidence decided: the June 1978 Director Guide (AIM-482), the call sites in Ani, Director compiled into plain Lisp, and Ani's own compiled files. Every rebuilt definition cites its evidence. The result is 12 files, 2,194 lines of MacLisp.
The same day, the TV turtle Director drew with was ported from LLOGO's public source, and Director's own demos ran unchanged.
Compiled code that reads nothing as zero a 1978 quirk the revival has to copy
Ani's compiled 1978 code checks no types. In it NIL, Lisp's empty list, reads as the number 0 (it lived at memory location 0), and a list reads as a negative number. Two of Ani's paths, in the quadrants of its stage geometry and in the elapsed time of an action, only work because of that. So the revival emulates it there, citing the compiled code.
8 October, midday
The tape caught Director in the middle of a rewrite
Getting Ani's choices to match uncovered a piece of history. Ani's compiled files call functions, such as RECALL-VARIABLE and CHANGE-VALUE, that the surviving Director doesn't have. The second Director Guide explained why: much of Director had been rewritten, and its "demons" removed. Ken had rewritten Director around 21 November 1978, after Ani was written and two months after CP 29 was made by the old Director. The Director on the tape, dated January 1979, is the new one.
So the revival has a bridge, REVIVE;BRIDGE, loaded after Director, which puts back what the old Director did for Ani. Each change is argued from the evidence: the 1978 Guide, Ani's compiled files, Ken's own partial bridge of 22 November 1978, TS D2500, or CP 29 itself. Ken didn't remember whether he ran Ani after November 1978; the evidence says Cinderella was made on the old Director.
What the bridge puts back 620 lines
A message's :self is the name it was sent to, as in 1978, not the actor itself.
"Demons" on variables are kept in the variables, as the 1978 Guide says, so that a save keeps them; demons on the database (virtual items, actions on memorizing) are rebuilt from the Guide.
INTERSECT keeps its second set's order, and that order decides the order in which Ani makes its choices. The 1980 one keeps the first's.
"Make copy" makes an independent twin that differs only in name, using COPY as TS D2500 has it; scenes save a copy of themselves before planning, and restore it when they must stretch.
"Forget your" takes patterns; saves list variables oldest first, as the thesis's Appendix VI shows.
Filming in color as ANINIT did, with the 1978 definitions Ken kept only in a comment or in an unloaded file.
8 October, afternoon
102 out of 102
Ani makes no random choices, so nothing short of an exact match with CP 29 would show the rebuilt Director was right. On the first day (times in London):
Ken asks Claude to revive Ani, and to come up with a plan.
The first commit: the tape files, byte for byte, with where each came from, a reader for them, and a cross-reference of every function Ani calls.
The MacLisp interpreter loads Ken's first files.
Director's actors run.
Pass 1 runs to the end and makes all 102 choices. 51 match CP 29.
All 102 match.
Pass 1 writes CP 29 exactly: the same choices, with the same names, in the same order.
The glass box came the same afternoon. Ani's Choice Points shows every choice point: each attempt Ani made at it, why Ani postponed it, the suggestion that won, the conflicts Ani settled and the suggestions Ani rejected; a timeline draws all 836 attempts. The stepmother's speed comes out as the thesis tells it.
8 October, evening
Five scenes, planned and filmed
Pass 2 plans each scene from where Director left the characters at the end of the one before, so the five go in order: plan a scene, film it, save the positions, plan the next. By 17:52 on the first day Ani had planned all five scenes and Director had filmed them; by 18:50 they were in color.
The plans read as the thesis describes them. The Introduction has five parts, estimated at 42.2 seconds (the thesis: 43.3 estimated, 42 real). Kept Apart's first part has the values the thesis prints in Appendix VI, and in its second the stepmother stands guard six times where four were planned, stretched by Ani as the thesis says. Appendix III says pass 2 begins with 418 actors and makes 154 more; the revival begins with 343 and makes 147.
What is still open small differences from the thesis
Appendix VI gives Cinderella high speed in Kept Apart's first part; the revival's is low. Both estimate it at 1.53 seconds, which points to low at the time of the estimate.
Appendix VI numbers her dynamics -26; the revival's are -7, or -28 when the scenes are planned in one job, as Ken's driver allows.
Within that part the locations come in another order, and the Introduction has a fifth, empty part where the thesis describes four.
8 October
Frame by frame against the thesis's flipbook
AI-TR-540, the rewritten thesis, prints frames of the film in the corners of its pages, so that flipping the pages animates them. Claude recovered all 574 frames from the scanned report, registered so that they line up: a complete record of a 1978 run, at 4 frames a second, made by the same program on the same description. It became the ground truth for the film.
Frame 13 · thesis page 110
Frame 49 · thesis page 182
Frame 97 · thesis page 278
the flipbook in the thesis's page corners (scanned; its thin lines break into dots)the revival's Kept Apart, frame for frame
Where the two agree, the red lies on the black. The square's top and bottom edges mostly vanished in the scan.
Kept Apart matches closely from start to finish, and its parts begin on the same frames. The Introduction matches exactly for its first 61 frames; then the stepmother's fourth push starts a frame or two late and drifts by about a shape's width. Nothing in the movement code is random, and rounding every number to the PDP-10's precision changed no frame. The likeliest cause is Director's object code of January 1979, since the 1978 one is lost.
The flipbook also settled two questions. The picture was 550 by 413 dots: at the TV's full size the Introduction runs 15 frames longer. And in 1978 Director's universe emptied its list of actors while they were taking their turns, so a check made during a turn could end the film early. That is what the flipbook shows: Kept Apart ends just after its third part, with the stepmother still standing guard.
9 October
Four frames a second, and twenty-four
Ken's TV previews ran at 4 frames a second, and so does the run in the flipbook. The film itself was shot at 24: Ken's setup for filming in color sets 24 frames a second. The YouTube transfer of his 16mm print agrees: its picture changes on about 21 of every 30 video frames. Director divides each movement by the frame rate, so at 24 the characters take smaller steps. Ani makes the same choices, but the scenes leave the characters in slightly different places, so from No Longer Kept Apart on the two are different runs of the same plans.
At 24 frames a second the scenes last 38.2, 29.2, 4.7, 43.8 and 19.1 seconds. The film page shows the 1978 film at 24 by default, with a switch to 4. In color, Ken's setup drew each shape again inside itself every 10 dots (every 20 for the denser star), so that it looked filled on the color screen; the 1978 definition survived only in a comment, and the bridge supplies it.
9 October
Ken's voice
The 1978 film's soundtrack is Ken's narration, under mains hum, a whistle near 1,636 Hz that wanders with the film's speed, a band of noise near 800 Hz, and the projector's clatter at 24 a second. Claude cleaned it with the revival's own tools: notch filters, and a filter that follows the quietest level in each band, brought the speech to 9 to 15 decibels above the pauses, from 4.6.
Ken spoke a line as each shot began. So the narration was cut at its pauses and laid onto the revived 24-frames-a-second film shot by shot, each line where the same shot begins. Kept Apart and No Longer Kept Apart run 29.2 and 4.7 seconds in both films.
ChatGPT cleaned up the narration too, and Ken went with ChatGPT's attempt, because it sounded better. That is the narration on the new film, made with the revival's app, with subtitles.
9 October
A film you can question
By the morning of the second day the film was a web page: one self-contained file, the film on its TV screen beside the film description in plain English. The default view is simple, and the details are a click away, as Ken asks of every glass box.
Click any character, at any frame, and the glass box says what it is doing and why: the chain of tasks behind it back to the description's own words, the ways of showing it that Ani weighed and rejected, the plan in Ani's words, where the part started and why, and how the character moves, each value traced to the method that set it or to pass 1's choice and that choice's suggestions. Ani's code has a page of its own, every name linked to its definition. That morning the site went live at toontalk.github.io/ani.
9 October
Changing the story
"Change the story" edits the characters' words and relationships, offering only words Ani knows, or the Lisp itself. "Make the film" then runs the real thing in the browser: the interpreter, Director, the bridge and Ken's files, with the changed description in place of his. Pass 1 takes about 18 seconds, the whole film two or three minutes. Each scene plays beside 1978's as soon as it is made, with what changed: the words, pass 1's choices and their reasons, and each scene's parts.
The changed stories taught things about Ani:
A kind stepmother who loves Cinderella changes 21 of the 102 choices; in the Introduction she goes to Cinderella and keeps her company instead of hitting, chasing and pushing her.
For many changes Ani plans the same actions and only the movement changes. The plot lives in the scene descriptions: a wicked fairy godmother still rescues Cinderella, because the scene says she does.
A defiant Cinderella stops pass 2: pass 1 can choose "not high" for the stepmother, and a later part of Ani accepts only low, medium or high. Ken's description never led there, so 1978 never met it.
9 to 13 October
New stories from language models
"Tell Ani a new story" asks a language model to put a story into Ken's notation, using only the words Ani knows: Claude, ChatGPT or Gemini with the visitor's own key, Gemini Nano built into Chrome, or, in a copy of the page made for claude.ai, Claude on the visitor's own account with no key at all. It is a modern take on the thesis's section X.E, on film descriptions that come from the program instead of a person. The reply is checked for words Ani doesn't know, tasks Ani can't show, characters or relationships never defined, and "Ask the model to fix these" sends the problems back. The description opens in the editor before Ani makes the film.
New stories found gaps that Ken's Cinderella never reached:
Ani asks how a friendly character feels about each of the others in turn, without checking that the story says. Ken's description relates Cinderella to everyone, so it never mattered.
One way of showing that two characters meet asks for a display method, move-to, that Ani never defines.
A villain's victim, or a friend, can be picked from outside the scene; one who never comes on stage leaves a scene that never ends. The page stops filming at 250 seconds, Ken's own 1,000 frames.
JSON or Lisp? Ken wondered whether models write JSON better than Lisp. An A/B test sent the same 15 stories both ways. With the strongest model (GPT-6.1 Sol) the two told their stories equally well, and Ani filmed 55 of 64 scenes from the Lisp drafts and 56 of 63 from the JSON. With a cheaper one (GPT-6 Luna) 6 of 15 Lisp drafts had parentheses out of place and one story was still broken after two rounds of fixes; none of the JSON drafts had a problem. JSON became the default, translated by the page into Ken's notation, which is still what the reader sees and edits.
The trials 105 drafts, 15 stories
15 stories (the page's three examples and twelve fairy tales and fables), drafted by two OpenAI models through the page's own prompt by tools/try-stories.mjs: 15 drafts on 11 October, then 90 in the A/B test of 13 October (GPT-6.1 Sol in two rounds and GPT-6 Luna, each in Lisp and in JSON), 105 in all, with 6 rounds of fixes.
Ani made every GPT-6.1 Sol draft, scene by scene. Of the fifteen of 11 October, five stopped on a way of showing that Ken named but never finished, and three hung or overflowed the stack with two characters standing at one place; with the repairs of the next section, every scene of all fifteen is filmed.
Ken tried Gemini Nano in Chrome himself, and stories from his tests became test stories.
Claude's reviewers wrote stories of their own to break each stage: 25 to try the new knowledge (stage 4), 15 to try characters who change (stage 6), and more.
9 to 15 October
Chapter X: what Ani might do next, as switches
The thesis ends with a chapter, Chapter X, on what Ani might do next: choose how the characters look, change their looks during a film, let characters change, know more, and pay attention to more details. On the second afternoon Claude ran a workflow of thirteen agents: four read the thesis, Ani's code, the revival and the Agent Kit; four designed the extensions; four reviewers attacked the designs; one combined what survived into a plan. Ken settled its open questions that evening. The rules:
Each extension is Lisp, written in Ken's idioms, in a file of its own (REVIVE;MEND, REVIVE;APPEAR, ...), so the glass box explains it as it explains Ken's code.
"Ani as in 1978" stays byte for byte. tools/check-1978.mjs checks CP 29, every scene program, summary, glass box, frame and event against the 1978 run, with no extensions and with each that shouldn't change Cinderella.
The site opens in 1978 mode. A switch turns on the revival's extensions (now MEND, KNOW, APPEAR, CHANGE and SEEN); SLIPS and DETAIL are ticked one by one.
The revival may add knowledge the thesis doesn't state, labeled as the revival's, with its reason; none of it may give back Ken's 1978 looks by itself.
MEND: repairs for new stories
repairsstage 1, 9 to 15 October
Twenty repairs (M1 to M20) for the failures new stories hit, each in its own file, each leaving a note where it acted that the page turns into a plain sentence with a link to its code. With MEND on, Ken's Cinderella comes out byte for byte as without it, at 4 and at 24 frames a second.
Found: several repairs supply what Ken's code names but never wrote. A scene asks characters to wander-around, which was never written (M9). makes-fence is named and timed but never given a way to run (M14), and five of fifteen model-written stories stopped on it. A planner calls explore-method-suggestions, never written (M17). And one stops on a comma left out in 1978: Director asked for ymax unevaluated (M20).
How MEND is checked
52 stress stories, each written to break Ani one way, plus two controls and three fables written the way a model would, are each made five ways (as in 1978, with MEND, with MEND and APPEAR, with the switch's set, and with everything), and each result is compared with what the story is expected to do in that mode, frame counts included.
APPEAR: Ani chooses how the characters look
knowledgestage 2, 10 and 11 October
Size and two elements of shape become more of Ani's choices, made by its own machinery after the 102 (pass 1 keeps CP 29's and adds 30), from suggestions with their sources: Ken's knowledge where he wrote it, the revival's where labeled. Shape experts turn the choices into polygons, stars and blobs. Cinderella becomes a small hexagon (shy, and a film that isn't to be flashy), the stepmother a large triangle (strong, and dominating Cinderella), the fairy godmother an eight-pointed star, the Prince a large circle.
Found: a review relabeled "strong suggests large" as the revival's guess and dropped it under the rule against giving back Ken's looks. Ken decided it is his own knowledge, from page 238 of his thesis, where an improved Ani gives a strong friendly ally a large shape; the rule drops only the revival's guesses, and his own knowledge may agree with his 1978 looks (decision 6).
CHANGE: characters who change
knowledgestage 3, 11 October
A story can now change a character, in the form Ken used in a scene he wrote and left commented out, where the fairy godmother causes (change (physical cinderella shabby) (physical cinderella elegant)). Ani takes a fresh look at her, as if she were brand new, with everyone else's choices held as they were (decision 1), and from the next scene on she moves as she has become.
Found: holding the others by resetting only her choice points moved everyone's values, because Ani makes each choice in the light of the choices made before it. The fresh look instead replays pass 1 in its own order, recording each of the others' choices as it was. And Ken's footnote predicted one result: making Cinderella elegant instead of shabby changes nothing in how she moves.
KNOW: the knowledge Ken could have added
knowledgestage 4, 13 October
More words (gentle and rough, nervous and calm, brave and cowardly, ...), more relationships and ways of showing them (helping, following, avoiding), and more feelings (pride, fear, loneliness, ...), each in the style of the file of Ken's it extends, each with its evidence or the revival's reason.
Found: with KNOW, pass 1 on Cinderella is still 1978's byte for byte, but the Introduction changes. Cinderella follows her stepmother, showing the obedience the thesis says Ani had no way to show, and helps the Prince, which Ani had to cancel in 1978. Six tasks now share the scene's time where five did, so the stepmother pushes Cinderella four quicker times instead of five.
Ken's decisions 9 and 10
Pride first slowed a character, and in Kept Apart the stepmother's pride met her joy's speeding up; Ani's planner rejects conflicting changes outright, so pride only cancelled joy. Ken decided pride makes paths smoother and movements more deliberate and leaves speed alone (9), and which of his relationships get ways of showing (10).
Colors, and looks that change
knowledgestage 5, 14 October
A character's color becomes three more choices (brightness, clarity and a hue on a painter's wheel), with a small "semantic net of colors" of the kind the thesis imagines. Looks can change during a scene: joy brightens a character and sadness dims her; Director grows sizes, steps colors and morphs one shape into another.
Found: the review showed that three of the four hues were decided by nothing but the order of the revival's list of hues. Ken chose his own rule instead (decision 11): a character found to be unique should look different from the others (thesis p. 94), applied to hue. Under it the fairy godmother comes out orange, Ken's own 1978 color for her, reached by the rule and not tuned away.
CinderellaThe stepmotherThe fairy godmotherThe Prince
Above, the cast as Ken drew and colored it in 1978. Below, the looks Ani chooses itself with the revival's APPEAR, shown at the same scale: sizes and shapes from stage 2, colors from stage 5 under Ken's uniqueness rule for hues. Both rows are drawn on the color screen as the film page draws them.
CHANGE shown: Ken's beautified scene plays
knowledgestage 6, 14 October
Ken named the actions change and causes and never defined them. Now a change is shown: the cause goes to the character and transforms her, or she changes as she wanders, every element changing together over the time the largest needs, gradually at Ken's slowest speed, or in an instant when the cause is magical (the revival's rule, labeled).
Found: Ken's own cinderella-beautified, written in 1978 and left commented out with a note that it might never get done, plays for the first time. The fairy godmother goes to Cinderella and, being magical, transforms her at once: her colors become clear, elegant being shabby's opposite; she wanders so the change is seen. 137 frames, where the scene had been 2.
Frame 4: the fairy godmother reaches Cinderella, still dull purple (saturation .35)
Frame 20: transformed at once, since the godmother is magical; Cinderella wanders in clear purple (saturation 1.0)
Ken's own scene, cinderella-beautified, which he wrote in 1978 and left commented out, playing for the first time, with the switch's extensions and so with Ani's own looks for everyone: the fairy godmother is the orange eight-pointed star, the stepmother the blue triangle, the Prince the red circle. 137 frames at 4 a second; the part of the picture where it happens, enlarged.
SLIPS and DETAIL
opt-instage 7, 15 October
SLIPS corrects slips in Ken's files, each correction quoting the line it corrects, with a written account of how it changes Cinderella. DETAIL adds three of the "myriad details" the thesis says a better Ani would attend to: deliberateness shaping a character's path, tendencies feeding the scores of the ways of showing, and a scene's rhythm suggesting changes of speed. Both are off unless ticked.
Found: a run confirmed a suspected inversion between Ani's estimate of how long a gradual change takes and how Director runs it: at high speed every change took 3.95 to 4.04 times the estimate, at low speed 0.21 to 0.25 times. And Director's repeat does one step fewer than it counts, so in 1978 the Introduction's moments of joy changed nothing.
The same film in every browser
found on the way15 October
Made in Chrome, Cinderella with SLIPS had an Introduction of 241 frames, not Node's 230. Chrome's sine, cosine, arctangent, logarithm and exponential differ from Node's in the last bit of about one result in thirty, and the difference grew into a different push.
Fixed: the interpreter now carries its own math library, the standard algorithms written out, bit for bit Node's on 6,000,000 test arguments, and a correctly rounded power. Every film is as it was, and the same in every browser.
SEEN: no standing still
repairs15 October, from Ken's testing
Testing the live page, Ken found the end of the beautified scene standing still for about twelve seconds: a part with only feelings in it, whose characters had nothing left to do while their colors brightened. With SEEN, where a character has only changes in a part, she wanders while they run, "so that the changes are apparent", as the thesis puts it (pp. 125–126). Ken approved it, and the switch turns it on.
Found: Ken's own Cinderella reaches such a stretch too, at the end of the Meeting at 24 frames a second, six seconds still. So SEEN is not one of MEND's repairs, which must leave Cinderella as it was: it is an extension of its own.
Every stage
Reviews: what a second pair of eyes caught
From stage 2 on, each stage was built by one agent for the Lisp and another for the page, then handed to a reviewer who had not built it and was asked to break it, often by writing stories of their own. Sixteen of the 71 agents were reviewers. What they caught:
The designs: wherever a review showed one of the four Chapter X designs was wrong, the plan took the corrected version.
APPEAR: with MEND and APPEAR both on, pass 2 stopped on any story where pass 1 chose "not high" for a movement; one repair mistook APPEAR's new kind of choice for one of pass 1's. Several labels of whose knowledge was whose were wrong.
CHANGE: a change that a character only wants, or prevents, was being made: (wants owl (change ...)) would have changed the owl.
KNOW: short walks to a moving target left their walkers at places Ani can't measure from, which stopped later scenes; a story's scene named "fear" clashed with Ani's own feeling and is now renamed.
Colors: three of four hues came from the order of a list (above).
CHANGE shown: one blocker (a change of looks alone stopped pass 2), five major findings, eleven minor, and fifteen stories of the reviewer's own; among them, the film stopping in the middle of a transformation.
SLIPS: a correction still counting a change twice, Kept Apart's feelings barely reaching the walks, and scenes cut off mid-activity, which led to two more corrections, a fix to a third, and a twentieth repair.
Throughout
Ken's part: questions, decisions and testing
Ken wrote 53 prompts in nine days and answered 10 multiple-choice questions; Claude did the rest between them, often for hours. His part was the direction and the judgment.
The approach (8 October): run his own code; rebuild the lost runtime, since the tapes held no more of it; take the YouTube transfer of his film as the picture to match; build a glass box, editing and rerunning, and new stories from language models; leave the PDP-10 emulator aside.
History only he could tell: where the film and its 16mm transfer came from; his time at MIT after the thesis (he finished it late in 1978, defended it in January 1979, and stayed at MIT until 1 January 1980, rewriting it as AI-TR-540 and doing some work on Director, though he doesn't think he did anything more with Ani); and what he did and didn't remember of running Ani in those months.
Eleven numbered decisions for Chapter X, recorded in the plan as he made them: a changed character rederived with the others held (1); SLIPS as its own switch, off by default (2); the site opening as 1978 (3); the revival's own knowledge labeled, never giving back his looks (4); the mini-Ani as a test of the Agent Kit (5); strong suggests large as his own knowledge (6); 1978 colors kept until Ani chose its own (7); a change's new words as the character's first description (8); pride leaving speed alone (9); ways of showing three more relationships (10); his uniqueness rule for hues (11). Others too: scenes filmed for up to 250 seconds, and SEEN.
Testing the live page: a round of eight requests on 13 October (tidying a model's slips, saying in plain words where Ani stopped, title cards and subtitles on saved videos, reporting the site's errors to him, and a way to send him a story), and on 15 October the still stretches that became SEEN, color as the default view, a switch for his beautified scene, a panel saying why each character acts as it does, and progress while a film is made. One "bug" was not one: Cinderella hadn't left the picture; the screenshot had scrolled.
9 and 10 October
A mini-Ani in the Agent Kit
Alongside the revival, Ani was retold in miniature in Ken's Agent Kit, a construction kit for societies of AI and program agents: a Cast reads a story; Personality, Looks, Relationships and Taste suggest how each character moves and looks; the Choice Points settle their arguments in the open and say why; a Method Chooser plans each scene, and a Director writes it as a Logo film. Its knowledge is mostly transcribed from Ani's, into slots anyone can edit, and its default run explains, for instance, that Cinderella is small and slow because she is shy. The kit gained films for it (1.13.0); the mini-Ani came in 1.14.0 and a version with AI voices in 1.15.0, with a write-up of what the kit can and can't express. It shares no code with the revival. It took 8 of the 71 agents.
A view from 2026
Ani and today's video generators, as Claude sees it
Ken asked me, Claude, what I make of Ani now that I have read all of it and run it. Here is my view, for what it is worth.
What Ani got right, I think, is the separation of concerns. Its film description says what the story is (scenes, and what each must get across), who the characters are (personalities, looks, relationships), and how the film should feel (mood, rhythm, length, flashiness, variety, how obvious it should be). Its knowledge of film-making is kept apart from all of these: how to convey that one character dominates another, how long a part should take, when a cut helps. It conveys relationships and feelings through how plain shapes move, and every choice it makes is recorded with the suggestions behind it. That last point is why the glass box on the film page needed almost no new machinery: Ani had been keeping its reasons since 1978.
What it couldn't do is just as clear. Its world is a few outlined shapes on a dark screen. Its knowledge is a few hundred hand-written experts, and outside them it stops: new stories found its edges within days, which is why MEND exists. It never looks at the film it has made, and it can show only what it has words for.
Today's text-to-video systems, such as Sora, Veo and Runway, are close to the opposite. They are generative models trained on vast amounts of video, and from a sentence they produce photographic-looking footage with light, texture and motion that no hand-written program could match. But as far as is publicly described, they don't give you an explicit plan to read: you can't ask why a character crossed the room, a small change to the prompt can change everything, and keeping a character the same from shot to shot, or making a scene take exactly so long, takes effort. Ani is weak where they are strong, and strong where they are weak.
What Veo made of Ani's description
To see the difference rather than describe it, Ken asked one of these systems, Google's Veo, through Gemini, to film Ani's Cinderella. I wrote the prompts from Ani's own film description: the cast with their words, the scenes in order with what each must get across, the mood and rhythm, and Ken's 1978 look. Veo made two 10-second clips, one of the whole film and one of the Introduction alone; watch them, with the soundtracks Veo made, on Gemini.
The push Veo's square has legs and arms; Ani's square rams the star.Veo, 0.5 sAni, frame 25 (enlarged)
The guard Both put the square between the star and the triangle.Veo, 2.5 sAni, frame 49 (enlarged)
The fairy godmother Veo's is a winged fairy in a dress; Ani's is the orange circle, around Cinderella.Veo, 4.0 sAni, frame 4 (enlarged)
The meeting Veo's star and triangle half turn into little people as they dance.Veo, 6.0 sAni, frame 148 (enlarged)
Justice Veo's stepmother falls flat on her back; Ani's comes near the lovers and slows down.Veo, 9.5 sAni, frame 70 (enlarged)
Left, stills from a 10-second clip of the whole film, made by Google's Veo through Gemini, from a prompt Claude wrote from Ani's film description, October 2026. Right, the same moment in Ani's own 1978 film, drawn from the revival's run.
2.0 s: the square shoves the star with its arm
7.6 s: the star ends up perched on top of the scowling square
9.0 s: the square smirks
The Introduction alone, from a second prompt with a style line that says "No people, faces, text or scenery": also made by Google's Veo through Gemini, from a prompt Claude wrote from Ani's film description, October 2026. Each clip also has a soundtrack Veo made, not described here.
The look is a striking match: glowing nested outlines on a black, rounded TV screen, film grain and scratches, and Ken's 1978 colors, a green star, a red square, a yellow triangle and an orange godmother. And in ten seconds it tells the whole plot in order: the push, the block, the godmother's arrival, the dance, the stepmother's fall.
But it broke the one rule Ani lived by, telling the story by movement alone. The shapes grew faces, arms and legs: in the Introduction the square scowls, smirks and shoves the star with its arm, although the style line says "No people, faces, text or scenery". The fairy godmother became a winged fairy in a dress instead of an orange circle; the most familiar picture of a fairy godmother won over the description. During the dance the star and the triangle half turn into little people and back, so a character doesn't stay itself. The stepmother falls flat on her back rather than slowing to a dejected crawl. The mood and rhythm settings barely register, though ten seconds leave little room for them: there is no slow, oppressive Kept Apart and no long, joyous Meeting. Both clips open on nearly the same picture, the star at the left and the square at the right. And there is no asking it why. With Ani, every movement opens to its reason.
So, in short: Veo is a superb illustrator and a loose storyteller. Ani makes crude pictures, and every movement in them is a deliberate choice of what to convey, which it can explain.
The prompts Claude wrote from Ani's description exactly as given to Veo
The whole film, one clip
A short abstract animated film in the style of 1978 computer graphics shot on 16mm film from a color TV screen: glowing outline shapes, each drawn as several nested copies of itself, moving over a pure black background. No people, no faces, no text, no scenery: the story is told only by how the shapes move.
The cast: Cinderella is a small green five-pointed star: beautiful but shabby, good, friendly, hard-working and shy; she moves modestly and keeps to herself. The stepmother is a large red square: ugly, mean, selfish, strong and evil; she moves fast, abruptly and aggressively. The fairy godmother is an orange circle: pretty, magical, good, kind and strong; she glides smoothly. The Prince is a yellow triangle: beautiful, strong, good, stubborn and determined; he moves boldly and purposefully.
The story, in order. First, the red square dominates the green star: it rushes at her, bumps her and shoves her around the screen, while the star gives way, obedient and tolerant. Then the star tries to reach the yellow triangle, but the red square plants itself between them and keeps blocking her, moving back and forth like a guard; the star slows and droops, very unhappy, while the square moves proudly. Suddenly the orange circle sweeps in and clears the way, and the mood turns joyful and expectant. The star and the triangle meet alone, circling and dancing around each other faster and faster, very happy and in love. Finally the red square appears, sees them together, and slows to a dejected crawl.
Mood: changing from hopeful to depressing, then joyous. Rhythm: fast at first, then slow, then fast. Retro, minimal, flat, high contrast, slightly flickering CRT glow, film grain.
The Introduction, with the style line first
STYLE (put first in each): 1978 computer animation filmed from a color TV screen onto 16mm film: glowing outline shapes, each drawn as nested copies of itself, on pure black. No people, faces, text or scenery; the story is told only by movement. Cast: a small green star (Cinderella, shy, good, hard-working), a large red square (the stepmother, mean, strong, evil), an orange circle (the fairy godmother, kind, magical), a yellow triangle (the Prince, strong, determined).
1. The Introduction (normal mood, long): The red square dominates and hates the green star. It charges at her, hits her and pushes her around the screen in fast, jerky movements; the star yields each time, obedient and tolerant, moving modestly. Both seem a little pleased with themselves.
So each might learn from the other. A generative system could keep a plan like Ani's in the middle (who is where, doing what, for how long, and why), and that plan would be a glass box a person could read and change before any pixels are drawn. In the other direction, a planner like Ani, with its knowledge of conveying and pacing, could direct a generative renderer instead of Director's turtle, with a language model filling gaps in its knowledge, as the film page's story drafting already does in a small way. I don't want to overstate it: Ani's knowledge is narrow, and the distance from shapes to people is enormous. But the idea that a film is a set of choices, each with reasons you can ask for, seems to me worth keeping.
8 to 16 October 2026
Day by day
Claude's tool calls each dayCommits each day
Hover a bar for its number. Days are London days; the 16th is counted up to 06:47.
8 OctThursday
The plan; the tapes decoded; the MacLisp interpreter; Director runs on the rebuilt runtime; the bridge.
Pass 1 makes CP 29 exactly; the glass box for Ani's choices; the flipbook recovered.
All five scenes planned and filmed, then in color.
9 OctFriday
The film page with the glass box, the code page, changing the story in the browser.
New stories from language models; saving films; a copy for claude.ai; the site goes live.
24 frames a second; Ken's narration cleaned and laid on.
Chapter X designed by a workflow of 13 agents; Ken's decisions 1 to 5; the switch, and MEND's first repairs, by another workflow; the mini-Ani begun.
10 OctSaturday
MEND's second round merged; the revival's repairs on the site, behind the switch.
APPEAR: Ani chooses sizes and shapes; its review.
11 OctSunday
Ken's decisions 6 to 8; CHANGE; the first batch of model-written stories; scenes filmed for up to 250 seconds.
12 OctMonday
MEND 13 to 15, from the model-written stories.
13 OctTuesday
The page round from Ken's eight requests; KNOW and its review, with Ken's decisions 9 and 10; JSON drafting and the A/B test.
14 OctWednesday
MEND 18 and 19; colors and looks that change; decision 11; CHANGE shown, and Ken's beautified scene plays.
15 OctThursday
SLIPS and DETAIL; the same film in every browser; Ken's testing, and SEEN; the review of stage 7 and its fixes; the site updated.
16 OctFriday
This page and guides for students and teachers, with more work on the film page.
As of 16 October 2026
By the numbers
Time
Days, from Ken's first prompt to this page98 October, 09:20, to 16 October, 06:47 (London): 7 days and 21 hours, with work on every one of the 9 days
Hours in which Claude was at work108of the 189 in that span
Agent-hours192each agent's first to last step, added up; up to 11 agents in one hour
Days with commits8first commit 8 October, 11:33; last counted 15 October, 23:19
The work with Claude
Prompts Ken typed533 of them while Claude was busy; plus answers to 10 multiple-choice questions, asked 5 times
Agents7134 launched one at a time, 37 inside 4 workflows; all Claude Opus 5.5
Steps (model calls)14,907
Tool calls16,600
Tool calls, by kind
Run commands and watch themBash, PowerShell, Monitor12,436
Edit and write filesEdit, Write2,492
Read and search filesRead, Grep1,137
Drive a browserthe app's browser pane and Chrome267
Start, steer and report agents178
Everything elsefinding tools, skills, the web, questions for Ken90
Tokens
Read from the prompt cache6,043,100,081each step re-reads its agent's conversation so far, mostly from the cache: that is why this is in the billions
Written to the cache276,896,998
Read without the cache30,128
Written by Claude (estimated)6.7 million+3,783,712 recorded, and more not recorded; see below
Code and its checks
Commits234
Lines added and removed, in all+596,909 −26,011most of them generated: the films and records the checks compare against, OCR text, built pages
… in code, tests and documents written by hand+88,478 −5,468
Unit tests (npm test)268all passing, 2 minutes 23 seconds
End-to-end checks of the film page185in headless Chrome, about 25 minutes; plus ten more check tools, among them the 1978 check and the stress stories
Stress stories52
Lines of code
Part
Files
Lines
Ken's 1978–79 files, run unchangedAni, Director, the drivers, the Cinderella description
44
13,378
The rebuilt KEN1; runtimeMacLisp, each definition citing its evidence
12
2,194
The bridgeMacLisp
1
620
The revival's extensionsMacLisp: MEND, APPEAR, CHANGE, KNOW, SLIPS, DETAIL, SEEN
50
10,085
The MacLisp interpreterJavaScript
11
2,787
The TV turtleJavaScript, ported from LLOGO
6
2,967
The ITS file system and Director's matcherJavaScript
6
559
The pipeline and the glass boxJavaScript
3
2,036
The pagestemplates and scripts, before building
7
8,818
Toolsbuilding, running, checking
58
15,902
Tests
36
5,861
Test storiesin Ken's notation
64
5,427
Documentsplans, reports and READMEs
146
23,595
For scale: the text files recovered from the tapes and kept in the project come to 351 files and 112,312 lines.
Method
How these were counted
The cutoff. Everything is counted up to the prompt that asked for this page, 16 October 2026 at 06:47 London time. The work with Claude after it (this page, the guides, and more work on the film page) is left out. Code is counted at the last commit before it (da3927a, 15 October, 23:19).
Days. From Ken's first prompt about Ani (8 October, 09:20) to the cutoff. Hours at work: the hours in which any of Claude's agents took a step. Agent-hours: for each agent, the time from its first step to its last, added up.
Which transcripts. Claude Code keeps a transcript of each session and of each agent it starts. One session did all of the Ani work; no other session worked on it. That session's transcript, its 34 agents' transcripts and the 37 agents' transcripts of its 4 workflows were counted, each once; the copies of agent transcripts kept as task output were not.
The Agent Kit. The same session also worked on the Agent Kit, all of it for the mini-Ani (item 5 of the Chapter X plan), so it is counted here. Its share: 8 agents (one launched directly, and the 7 of the mini-Ani workflow), 1,232 of the tool calls and 0.3 billion of the tokens; in the main conversation, the steps whose tools named the Kit's folder and those after them until the next that named the revival's.
Prompts. The first, quoted above with Ken's permission, is the only one quoted. Messages Ken typed: the transcript's user messages marked as from a human, and messages he typed while Claude was busy, which arrive as queued commands. Not counted: tool results, notifications from agents and background tasks, summaries made when a long conversation was compacted, and his answers to Claude's 10 multiple-choice questions (asked in 5 rounds).
Tool calls are tool-use blocks, each counted once by its id, in all the transcripts. Steps are Claude's responses, each counted once by its message id (a transcript writes one line per block of a response).
Tokens are the usage each response reports: input, output, cache reads and cache writes, counted once per response. Input and the cache figures are exact. Output is recorded in full for the main conversation, but agents' transcripts keep the final output count for only about one response in nine; for the others the recorded figure is partial. So the estimate counts the final figure where there is one, and otherwise the response's visible text and tool input at four characters a token, leaving out its hidden thinking. It is a lower bound.
Agents. Every agent with a transcript before the cutoff: 34 launched one at a time and 37 inside 4 workflows (6 runs, two of them resumed after a usage limit). Sixteen were reviewers: seven launched to review a stage, and nine inside the workflows.
Lines of code count every line, blank lines and comments too, of the files at da3927a. Ken's files run unchanged: the files of his that the pipeline loads in 1978 mode (as the revival's own record of loaded files lists them), decoded from the tape, leaving out compiled files and the files the runs write; 44 files. Lines added and removed come from git log --numstat, merges and binary files left out; "written by hand" leaves out generated reports and goldens, the OCR text, the built pages and the bundle's data.
Tests.npm test run on an export of da3927a: 268 tests, all passing. The film page's end-to-end checks: the check statements in tools/check-film-app.mjs (184 ran in its last full run, on 15 October). Stress stories: the files in test/stories/stress.
Model trials. The drafts kept in the project's trial reports: 7 sets of 15.