Lines to read the collection across
A record began showing the relations written about it and drawing its neighbours; an empty tags field became a closed vocabulary of twenty lines that takes "foundations" apart; ten duplicate entities merged, and the last record off the axis went onto it.
The afternoon of 21 September was about things the collection already knew and did not say. Almost none of it added data; it showed data that was already in the repository.
A relation is written on one end
A relation between records is written only on the record it starts from. The record it points at does not carry it. The record page drew only its own links, so 44 records that others cite told the reader their precursors were still being researched. Back-propagation said so with fourteen records pointing at it.
The axis knew better: its card collects both ends and marks the incoming ones, and the note under it sends the reader to the record page for the explanation. It was sending them to a page that dropped half. The page now shows the same two groups as the card, with explanations and sources, and “relations are being researched” is left for what it was written for: a record with no relation in either direction. There were 32 of 484 then.
In a second step the card learned to swap its two lists of relations for one ring of neighbours. Not as a third toolbar mode and not as a sixth figure on the front page: a graph needs a selected record before it has anything to draw, so a global switch would have opened onto nothing. Depth one, measured rather than guessed: 484 nodes over 639 edges fall into 52 components, one of them 380 nodes, and the hub has fifteen neighbours, several of which have ten of their own. Opening a neighbour redraws the ring around it, and that is the walk further out. Nodes are buttons over a decorative layer of lines, so the accessibility audit passed with no ARIA added, and the topic’s colour and shape came from the axis marks along with the fact that they already survive a greyscale reading.
An empty field that became a vocabulary
The tags field was declared in the schema and empty in all 485 records. It now holds a closed vocabulary of twenty lines, and every record has been through it: 452 carry a line, 33 carry none.
It exists because “foundations” is not a topic, it is a residue. It held 256 of 485 records, and four in five in every decade before 2010, because everything that is not language, an image, a robot or several modalities at once lands there: theory, hardware, data, money, law, chips, benchmarks. More than half the marks on the axis had one shape, and the shape did not say what those records were. There are five topics because the axis draws a topic as colour and shape together; a line is never drawn there, so the cap does not apply, and a record may carry up to three.
The vocabulary is closed rather than free for a reason this repository has already written down: role is free text, grew to fifty-four values and is therefore shown nowhere. An open tag would get to the same place in two research passes. So the lines are an enumeration beside topic and type, their names and definitions live in the interface dictionaries whose completeness a gate already checks, and the validator refuses a line no published record carries.
What the split found: learning theory 123, embodiment 50, evaluation 47, law and policy 46, compute 41, money and markets 40, symbolic AI 36, search and reasoning 36, speech 35, openness 32, data 28, science 25, safety 24, tools 24, defence 21, generative media 16, autonomous driving 16, agents 14, work 9, harm 4. Search and reasoning had nowhere to live before: Logic Theorist, MYCIN, Deep Blue, AlphaGo, o1 and R1 are one argument, and the atlas could only call all six “foundations”. Work at nine and harm at four are not noise either; they are two of the eight gaps this month’s audit named, now measured.
The lines shipped nearly invisible: a reader saw one only by opening a record or by scrolling a catalogue of 485 cards down to the single link at its foot. The catalogue card, the axis list card and the opened record now carry a row, “Lines: …”, labelled because three vocabularies stacked without labels read as one list of five words. The lines ride in the deferred part of the data rather than in the document, since none of them is needed to place, colour or name a mark. And the row’s height is held by the base class rather than by the waiting state, because 33 records answer with an empty list, and a card that held its height only while waiting would jump by a row exactly when the answer arrived. A shift caused by the guard against shifting.
The editor got its share: it offered three vocabularies and all three had drifted from the schema. Types lacked policy, topics lacked images and robotics, so a record about an image, a robot or a law could not be filed there at all, and tags were a comma-separated text field. All three are lists in one place now, and a test reads them out of the editor’s code and fails as soon as they part from the schema.
One entity, one row
Ten entities were duplicates of eight. UC Berkeley existed four times, and the copy with a Ukrainian name was not the one most records pointed at; Allen Newell, Peter Norvig, Sebastian Thrun, Siri, Baidu, Mistral AI and GPT-6 Astra each existed twice. Every index row for them was cut in half, and a reader following a name saw part of the work with no hint that the rest existed. Fifteen records now point at the copy that carried something the others did not, or at the lower id.
The same pass found the last record off the axis: the Netflix Prize was published and missing from the list of what the axis draws. That was a forgotten line, not a decision. Fixing it made two things false that had been true: the catalogue promised, in both languages, records the axis does not show, and a unit test required the collection to be strictly larger than the selection. The test had held only because of the oversight. It now checks what the axis actually promises: every id it draws leads to a published record.
Dates already sitting in the source
An outside review of the atlas was read against the data. Of the twenty-eight events it names, twenty-seven were already here. What it did find was records placed on the axis more coarsely than their own source is dated. The perceptron moved to November 1958, back-propagation to October 1986, LSTM to November 1997, ImageNet to June 2009. Three of those months were already sitting in the source record, unused.
Three attributions from the first batch, which gave every record exactly one entity, were fixed at the same time: LSTM was credited to Hinton, and it is Hochreiter and Schmidhuber; AlexNet and the 2015 diffusion paper were credited to Google, and they are Krizhevsky, Sutskever and Hinton, and Sohl-Dickstein at Stanford. The record of OpenAI’s founding got the founders already named on the page it cited.
A test that passed while proving nothing
The README said “from 1943 to 2026”, the axis heading said “1940 — 2026”, and the records page opened on a 1942–1949 section. Three numbers for one edge, and two of them measured something: the earliest record is an interval from September 1940 to a 1942 report, so the axis range opens at 1940 and the mark stands on 1942. 1943 was neither.
What mattered more than the README was a find in a test. Under reduced motion it clicked a period and checked that the heading no longer contained “1943”. Once the range opened at 1940 that string was not there before the click either, so the check passed the same before and after and proved nothing. The test now reads the heading first and checks that it changed. It is the same defect that broke three axis tests in the entry about ways that led nowhere, in its quiet form: there the test failed and was noticed, here it kept passing.
Entry written September 23, 2026
Commits this entry accounts for
d14241ae50bf5d943fd2b311eed87e9e03e674938c4e2767d144846e