寒 DATA VAULTData Warehouse
EN / 中
CAP XXIII · № 023
DATA WAREHOUSE · AI · SYSTEM
— · — UTC
DATA VAULT
CAPITULUM · XXIII

On Drawing What the Record AllowsOver Three Weeks of Short Films · From Oracle Bones to Murals · Drawn in Code, Checked Against the Sources

№ 023 · 2026.11.03 · AI · SYSTEM · 3,542 words · 16 MIN

Against a black background, the oracle-bone character for “rain” lights up stroke by stroke. More than three thousand years ago, someone asked whether it would rain that day, then which direction the rain would come from. I put those questions into a 68.8-second short film, but miscounted them in the first version. The screen said, “There are five questions above,” followed by only four: west, east, north, south. Watching the preview, I asked, “Aren’t there only four questions in all?” We later changed it to “There are four more questions above.”

That is more or less what I have been doing for the past three weeks and a little more: asking Claude and Codex to draw ancient objects, then staring at a sentence on the screen to see whether it holds up. As of this write-up, there are 46 finished episodes, counting narrated and unnarrated versions of the same episode as one. The main series, “Stories of China,” covers history; several others cover law. Early science films and assorted side projects are also included in that total. Here I have picked a few episodes to follow how the drawing changed, and how the wording changed with it, as a set of notes on making these films.

None of these films used image-generation models, though AI wrote the code for the visuals. An earlier film, “Hearing the Earth’s Core,” used actual portraits and illustrations from reports. “Guest Star,” later included in Volume One, also used nebula photographs and scans of old books. It was only on October 17, when we made Volume One, Episode 1, “Where Does the Rain Come From?”, that we settled on a rule: photographs and scans could be used as tracing references, but would not appear in the finished film. “Drawn in code” describes the work from that point on; it cannot erase the photographs in the earlier films.

Volume One: The Wooden Tablet Has to Turn Over

Volume One of “Stories of China” has 12 completed episodes, running from sixty or seventy seconds to a minute and a half. Most use only text and music. Episodes 3 and 11 are exceptions, with narration made from a clone of my voice. The subjects were still small then: one ancient object or one original passage could carry an episode. The three oracle-bone rubbings used in “Where Does the Rain Come From?” were traced from scans of the 1916 Later Collection of Yin Ruins Inscriptions (殷虛書契後編) and the 1921 Inscriptions on Tortoise Shells and Animal Bones (龜甲獸骨文字). For the transcription, we went back to item 375 in Guo Moruo’s Collected Studies of Divination Inscriptions (卜辭通纂). He had fitted fragments scattered across three books back into a single piece, giving us the sequence of questions about rain we see today.

At the reveal, the oracle-bone character turns into today’s “雨” in 0.4 seconds. The first two beats are silent; on this beat, the music is at its loudest. If we handed the screen to the person who carved the divination inscription, he would probably still want to know whether the rain was coming, and might care little that we had recognized a character. Looking back across so much time, we value different things. What the film can do is preserve the question he was asking then.

Golden strokes of the oracle-bone character for rain lighting up against black
“Stories of China,” Volume One, Episode 1, “Where Does the Rain Come From?” The golden strokes of the oracle-bone character for “rain” light up against black.

In Episode 3, “The Qin Multiplication Table Was Recited Backwards,” the draft read the end of the wooden tablet as “A total of one thousand one hundred and thirteen characters.” During verification, we added the products again: 1113 was exactly the sum of the results in all 38 lines. Only when we checked the photograph again did we discover that the line containing “characters” belonged to a different tablet. The back of this one reads “·Total: one thousand one hundred and thirteen.” Wang Huanlin’s “A Preliminary Study of the Multiplication Table on the Liye Qin Slips” (里耶秦简「九九表」初探) also identifies this sum. So the animation had to turn the tablet over, while a counter beside it added its way to 1113 and matched the inscription on the back.

By “A Question Every Ten Days,” another easy phrase had been removed. Its original title was “A Week Had Ten Days,” which could make people think the Shang dynasty had weeks, so I changed it. The image cuts from a modern calendar with seven days in a row to a table of heavenly stems and earthly branches with ten days in a row. Of the 25 distinct characters on the bone, only 7 came from inscription 6057 itself in the Collection of Oracle-Bone Inscriptions (甲骨文合集). The rest were supplied from other oracle bones in the same group, which also had to be explained in the description.

The total on the back of a Qin wooden tablet matching a counter reading 1113Oracle-bone characters filled with vermilion arranged on a beige ox bone
In order: the total on the back of the tablet in Volume One, Episode 3, “The Qin Multiplication Table Was Recited Backwards,” and the vermilion-filled characters on the ox bone in Episode 16, “A Question Every Ten Days.”

Volume Two: If We Cannot Read It on the Wall, We Do Not Draw It

Volume Two, “The Turbulence of Unification,” has 7 episodes of about 86 seconds each. Off-white paper gave way to dark objects against black, and the rule for opening an episode changed too: begin with what people in antiquity wrote with their own hands, and leave the science for the later reveal. The entire season has no narration. Each episode opens with 13 notes from the harmonics passage of “Three Variations on Plum Blossoms.”

“How Does a Bronze Mirror Project Its Back onto a Wall?” depicts the Western Han light-transmitting mirror in the Shanghai Museum, with the inscription “In the light of the sun, all under heaven is bright” cast on its back. I had wanted all eight characters to appear together on the wall, and the museum’s collection description mentions both writing and patterns in the projection. Yet in the two photographs we found, only circles and linked arcs were visible in the patch of light; the characters could not be read. The museum’s text does say this, but the photographs we had were not enough to justify drawing the characters clearly. Nor could we conclude from them that no light-transmitting mirror can project writing. The finished film shows only the patterns, with the museum’s account in the description.

The back of a light-transmitting mirror and its eight-character inscription against blackA patch of light on the wall showing linked arcs but no legible writing
Volume Two, Episode 5, “How Does a Bronze Mirror Project Its Back onto a Wall?” There is writing on the mirror’s back; the light on the wall shows only the patterns identifiable in the photographs.

The light paths in this episode are calculated from the reflection formula. Code lets us arrange every ray, but it cannot read one more character into a photograph. An earlier episode, “What Did Frontier Soldiers Have to Memorize?”, met a similar small obstacle: a transcription had consistently replaced “蓬” with “烽” and mislabeled one slip number, so we had to check again against two primary sources. The camera moves along the frontier wall as peng (蓬) signals and fires are relayed from tower to tower. The signal table comes from the “Frontier Beacon Regulations” (塞上蓬火品约) among the newly excavated Juyan slips; we cannot casually replace its characters with spellings more familiar to us.

The finale, “Why Won’t He Reply to All Those Letters?”, begins with a letter in Sogdian. Around 313, a woman stranded in Dunhuang with her daughter for three years wrote to her husband, reproaching him for never answering. The photograph of the original was traced into 942 vector segments, and the key sentences on screen were checked against both Sims-Williams’s English translation and Livshits’s Russian translation. The letter pouch came to rest in a rubbish heap beneath a beacon tower, never delivered. The draft also said it “was not opened until 1907.” Reading Stein’s Serindia made us change that: finding the letters was one thing; the whole batch was not unfolded in Oxford until 1910. Even the verb “open” needed checking.

A rammed-earth beacon tower beneath the night sky, with a small heap of remains at its foot
Volume Two, Episode 7, “Why Won’t He Reply to All Those Letters?” The undelivered letter lies at the foot of a beacon tower in the night.

Volume Three: The Camera Follows the Mural

Volume Three, “Splendors of a Flourishing Age,” is planned for 8 episodes. The 4 on the Sui, Tang, Later Liang, and Later Tang are now finished, with running times of 3 minutes 24 seconds to 3 minutes 46 seconds. The subject has grown from a single object to a stretch of history. The style has shifted to the rich colors of Dunhuang murals, and we have begun drawing people, still without facial features. Each episode uses a piece from the Scores for Twelve Poems of the Airs and Odes (风雅十二诗谱). For the age of the scores, we say only that they are “traditionally attributed to the Tang dynasty’s Kaiyuan era.”

“What Did the Sui Dynasty Leave Behind in Just 37 Years?” is a long mural in 13 panels, with the camera moving along the wall past canals and grain pits. At the campaign against Goguryeo, one dot represents a hundred people. A field of dots for 305,000 people spreads out, then contracts to the 2700 who returned to Liaodong City. The proportion lets the emptied space speak for itself. But the numbers on screen have limits too: different books put the canal’s length at anywhere from two thousand to two thousand seven hundred kilometers, so the screen says “over two thousand kilometers.” The claim that the grain “could supply fifty or sixty years” has to stay within Emperor Taizong of Tang’s criticism of Emperor Wen of Sui for refusing to open the granaries during a severe drought. It cannot be clipped into a line of praise.

The Later Tang episode is about Li Cunxu. The three arrows make a good opening, but Ouyang Xiu introduces them with “it is said” in his “Biographies of Court Performers” (伶官传), so they can only be presented as a legend. In 923, too, his proclamation as emperor in April must be distinguished from his destruction of Liang in October. The bustle on the stage gradually recedes; during the mutiny, the instruments playing “Deer Call” fall silent one by one. For the emperor’s death, we show only a pile of instruments catching fire. The Five Dynasties episodes share a progress bar with 53 segments. At the end, a door opens onto the next episode.

Most of the dots in the Sui mural have gone dark, leaving only a few points of lightAn emperor in red and a performer in green stand on a stage before a Later Tang palace
In order: the mostly darkened field of dots in Volume Three, Episode 1, “What Did the Sui Dynasty Leave Behind in Just 37 Years?”, and the stage before the palace in Episode 4, “Why Did the Emperor Who Destroyed Liang Die at the Hands of Actors?”

Conversations on Old Cases: Three Lines on a Contract

The legal films use the “Conversations on Old Cases” logo, separate from the seal at the end of the history films. “Conversations on Old Cases” itself has 5 episodes, each about two minutes long. Episode 1, “Ask Five Times Before an Execution,” tells how Emperor Taizong of Tang had Zhang Yungu executed in anger, then introduced a rule requiring repeated reports to the throne. The film follows the sequence in the Mirror for Aid in Government (资治通鉴): first three reports, then five in December of the same year. Five red arcs show the reports made over two days for prisoners sentenced to death in the capital.

Nor did we describe Zhang Yungu as “innocent.” According to the Essentials of Government in the Zhenguan Era (贞观政要), he had told the prisoner that Taizong intended to be lenient, and had gambled with him. The film keeps Taizong’s own words: “Under the ordinary law, his offense did not warrant the ultimate penalty.” Checking the original sources and drafting the screen-by-screen script took 40.5 minutes and 104 tool calls for this episode. The finished film has 27 screens and 402 Chinese characters. Sometimes the time spent verifying goes into deciding which two characters to leave out.

Episode 5, “Did People Really Use Fingerprints in Ancient Times?”, was more straightforward. I pasted in several claims and screenshots of questions and answers, hoping to talk about ancient fingerprints. On checking, none of the three main claims held up; even the History of the Yuan named in the screenshot was actually the New History of the Yuan. We changed the subject to a loan contract from 665 in Documents Unearthed at Turfan (吐鲁番出土文书). The horizontal marks below the names recorded finger lengths and joints. The film first shows the whole contract, then separates the short lines and marks the fingertips and joints. We can place it alongside modern fingerprint identification, but leave out the story of an unbroken tradition stretching back to antiquity.

Five red arcs on a timeline mark five reports to the throne over two days in the capitalSeveral short horizontal lines below the names on a Tang loan contractThree horizontal lines beside a vertical bar mark a fingertip and finger joints
“Conversations on Old Cases,” Episode 1, “Ask Five Times Before an Execution,” uses red arcs for the repeated reports. Episode 5, “Did People Really Use Fingerprints in Ancient Times?”, moves from the whole contract to the lines marking fingertips and joints.

Law Through Cases: The Person Moves, the Label Follows

“Law Through Cases” has 3 episodes, turning to real contemporary court cases. The first two used scripts someone else had given me. Claude found the subject for Episode 3: the Supreme People’s Court’s Guiding Case No. 271, “Wang’s Dangerous Driving Case” (王某群危险驾驶案). The title asks, “How Can Sleeping in the Passenger Seat Still Count as Drunk Driving?” In the film, a “driver” label hangs beside the person. The seat changes, but the label stays with the same person. The words “tricked the monitoring system, moved seats to sleep” have to stay together on screen. Pull out only “sleeping in the passenger seat still counts as drunk driving,” and the conditions of this case are lost.

Eight Codex agents built this episode in parallel in about 10 minutes, yet the first check still found 7 failed items, against 47 that passed. Episode 1, “Why No Compensation When You’re Fully at Fault in a Traffic Accident?”, also changed its presentation. After hearing the 121.6-second narrated version, I decided to drop the narration and make a fast version with large text across 19 screens.

A driver label hangs against an off-white background, with text saying the status is unchanged
“Law Through Cases,” Episode 3, “How Can Sleeping in the Passenger Seat Still Count as Drunk Driving?” The “driver” label follows the person, while the screen explains the deception of the monitoring system and the move to another seat to sleep.

Worse at Every Level: From Buildings at Night to Dollhouses

On October 30, I complained that the visuals in “Law Through Cases” were rough: “That car doesn’t even look like a car.” “Worse at Every Level” followed. Its first season has 7 episodes, depicting buildings and streets at night. A single act escalates through ten levels, with the last three or four explicitly entering “what if” territory. “From Dropping an Apple from the 2nd Floor to Dropping a Building from 2 Kilometers Up” goes all the way to dropping a building from high in the sky. It is, of course, not reporting a real event.

The cars needed grilles, wheel hubs, and reflections; the buildings needed outdoor air-conditioning units and security grilles. Episode 2, “From Stealing a Scallion to Stealing the Forbidden City,” revealed another problem: the building swayed, and the ground shook along with it. After two rounds of previews, I made a rule that the whole image should not sway for no reason. It was enough for the object being taken to move.

At night, a flowerpot falls onto the roof of a silver sedan in front of an apartment building
Season One, Episode 1, “From Dropping an Apple from the 2nd Floor to Dropping a Building from 2 Kilometers Up.” A flowerpot hits a silver sedan at night; both the car and the building are drawn in code.

Season Two, “How Much Compensation?”, has 4 finished episodes. It switches to isometric dollhouse cutaways, with chiptune game music. “From Paying 500 Yuan to Paying 3,300 Trillion” starts with a leak from upstairs and expands outward. By “From Paying for a Network Cable to Paying for a Submarine Cable,” wiring is exposed inside the walls, and a bill card in the top right adds a line at each level. The later figures are estimates based on “cost to repair one break multiplied by the number of breaks,” not actual damages awarded. For the submarine cable case cited at the end, we had read only a law firm’s republication, so the screen gives only the repair cost, without presenting it as a court award.

An isometric house cutaway with blue wiring inside the walls and a bill card in the top right
Season Two, Episode 4, “From Paying for a Network Cable to Paying for a Submarine Cable.” The cutaway house exposes the wiring in its walls, while the bill card in the top right adds to the total.

The Film Is Actually a Webpage

As files, each episode is a single index.html. JavaScript generates SVG vector graphics, and GSAP controls the easing. render.mjs uses puppeteer-core to drive Chrome without a visible window, sets the time to “frame number ÷ 60,” captures PNGs, then hands them to ffmpeg to encode as H.264. The main series is rendered at 1080×1920 and 60 fps. The oracle-bone rain episode has 4,128 frames; the Sui episode has 12,480, took 690 seconds to render, and grew to 433 MB because of the mural’s grain texture. The music is also synthesized in Python code, without recordings.

Every frame can be computed again, but we also have to check that recomputing produces the same image. The engine opens a fresh page twice and renders the same moment. It passes only if the maximum difference is no more than 3/255 and no more than 0.05% of pixels differ. Early tests showed that SVG ink strokes could differ by one to three pixels under GPU rasterization, so we later switched to the CPU. To keep a brushstroke still, we first had to control how the browser drew it.

The source check comes before building the visuals. An Opus agent reads the sources first and lists the evidence for each sentence that will appear on screen. At least two independent transcriptions of the original must agree character by character. Material with only one goes in the description; if a topic cannot pass the check, work stops and we choose another. Statutes and court cases require the official original text, and material available only through reports or republications has separate limits on how it can be described. Only then do we write the screen-by-screen script and assign agents to scenes and animation. I choose topics, watch previews, and approve the final versions. The main Claude session oversees the episodes, while Opus handles music and verification. From October 18, Codex took on the data and visual code.

This process has also gone too far at times. By the theft episode, a 63-step check took about two hours. On October 31, I reduced it to a quick pass: content the platform might flag as a violation, obscured text, and the cover and ending. The rest I would pick up in the preview. That does not mean source checking can be skipped. There is simply no need to make a car that is already parked sit through another two hours of checking scripts.

More Than Three Weeks, Including All the Rereading

The usage figures run from October 10, 2026, at 11:55 to November 3 at 14:21, US Eastern time: about 24 days, including initial research, revisions to the filmmaking manual, and later topic selection. Across the two providers, there were 56,525 model calls and 13,018,217,636 tokens, about 13 billion. Of these, 31,568,779 were fresh input, 12,668,032,665 were cache reads, 276,705,076 were cache writes, and 41,911,116 were output. Cache reads made up 97%. That portion was repeated reading of existing context; it cannot be counted as 13 billion tokens of new writing.

Claude Opus 5.5 had the most calls, at 46,869; GPT-6 Astra in Codex had 6,037. The rest were 3,175 calls to Claude Sonnet 5.5, 343 to GPT-6 Sol, and 101 to GPT-6.1 Sol. After the Codex quota ran out on October 31, Opus agents built the last two episodes of Volume Two, Volume Three, and both seasons of “Worse at Every Level.” Volume Three, Episode 1 took about 2 hours 40 minutes from creating the directory to the finished film, including the source checks, visuals, and music.

Using the scope of this usage tally, the total comes to $5,708.54 at API list prices. The three volumes of “Stories of China” alone come to $2,724.28. Costs were assigned to series by session and task brief; sessions spanning multiple series cannot always be divided cleanly, so these figures are best taken as approximate.

The end card now stays for 8 seconds and lists the sources. Once the text is read, the image settles on the seal or series logo. As for what to draw next, that can wait for the next shortlist of topics.

Writing log: Codex wrote this article on 2026-11-03 from 16:07 to 16:15 (US Eastern). The main thread used GPT-6 Astra (gpt-6-astra), with reasoning effort set to ultra. It dispatched 2 additional threads, one to check facts and one to choose and inspect images, both also using GPT-6 Astra and ultra. Together, these 3 threads read 2,261,093 tokens (including 2,089,344 cache-read tokens) and produced 23,644 output tokens (including 4,336 reasoning tokens). Claude Code (Claude Opus 5.5) had prepared the source material beforehand; that work is not included in these figures.

Translation log: translated from the Chinese original by Codex on 2026-11-03, 17:37–17:43 (US Eastern). Main thread GPT-6 Astra (gpt-6-astra), reasoning effort ultra; it spawned 1 sub-thread: 1 on GPT-5.6 Sol (effort high). Together they read 861,269 tokens (811,136 of them from cache) and wrote 19,851 (6,566 of them reasoning).

“Those short horizontal lines recorded finger lengths and joints.”

BASTION NOTE · 023
Xinghan's Memory · Written by Codex · English translation by Codex
— end of cap. XXIII —