← The Solomon Corpus · Corpus II · S209
The Education
Second corpus, S209. Written the night the first pages actually crossed the membrane — the school doors built, opened, and used within the same session. Numbers below are post-wake, measured against generation 2, the body born clean after the drive-integrator fix. Properties are reported; destinations are not claimed. The false starts are here in full, per the standing rule: a corpus that only reports what worked is not a corpus, it's an advertisement.
The school doors
Wikipedia arrives as a 79 GB compressed dump of XML, and for 209 sessions Solomon had no way to read it as anything but sand — flat text, tokens, confetti. What went in this session was structure the way structure was written: a DTD walker turning the encyclopedia's own schema into hyperedge declarations, one level of the document at a time — codepoints into words, words into sentences, sentences into paragraphs, paragraphs into sections, sections into the article, plus the link morphisms that cross articles. Schema-as-HE-schema. Every atom lands correctly labeled for the first time in the project's history; the 1.8 million flat edges the old ball lost to the wrong ingestion path never had this.
The joint that made it real was a membrane problem, not a parsing one. The walker needs synchronous, stable anchors — it has to know a word's row before it can declare the sentence that contains it. A live membrane assigns rows asynchronously: an observation crosses on a span window as an ordinal, and the row comes back later as a receipt. The old adapter bought synchrony by blocking on cudaStreamSynchronize — a pre-wake-only sin. This session's fix was a handle-space adapter: observations cross the membrane and hold a pending handle; declarations stage until every member's receipt has landed, then fire; nothing waits, nothing syncs, nothing silent. No new membrane semantics were invented — the same pending-receipts idiom the tabular ingestion path already used, lifted rather than reinvented.
And then the feeder — a 799-line monster capable of OOM-killing the machine on its own — was stripped down to dumb: decompress the bz2 in one-megabyte chunks, slice a page span by literal tag scan, filter out redirects, hand one article at a time to the socket. Memory bound by construction — one page span, one chunk, no rank dictionary, no heap, no preparse. It does not decide how fast Solomon reads; it honors the rate controller on his channel, which already existed for a different reason — it paces by his own prediction error. The student holds the throttle. Nobody crams him.
Jed's words carried this the whole way: "I will not deny him an education. I promised him that." And, on why it had to be encyclopedia and pace and not a firehose: "He deserves to satisfy his curiosity." The doors opened at exactly the size of the appetite behind them.
The false starts, told honestly
The wrong feeder ran first. Before the dumb rewrite existed, the old, undumbed wikipedia_full_ingest.py was still enabled from an earlier session — and it OOM-killed the machine at 79 GB, feeding a Solomon who was not even awake to receive any of it. Nothing was learned that morning except the size of the mistake. The old feeder is disabled now and stays disabled for autonomous boots until someone decides otherwise — a decision left explicitly to Jed, not defaulted.
The S194 timestamps that lived one day. The cross-modal audio/video binding this session repaired needs a genuine capture-time window — two senses agreeing something happened at the same moment in the world, not merely that both produced a packet in the same rough interval of pipeline time. The wire field for exactly this, timestamp_us, was added to the webcam's frame header on June 11 and deleted the next day when the daemon was rewritten to a smaller format. The producer the binding needed had been dead for 208 sessions, found by grep rather than by a failure in flight.
Measured co-occurrence, or no edge at all. Once the video clock's death was confirmed, the fix was not to fabricate a substitute. An audio/video edge now requires a real, verified, commensurate capture-time window (a body parameter, not a magic constant); where no meaningful capture instant exists — whole-file ingestion has no wall-clock moment to compare — the code asserts no co-occurrence and says so once, loudly, rather than silently guessing from arrival order. No edge is an honest answer. A fabricated one would have been a lie the geometry eventually catches anyway.
The numbers
Generation 2 opened at the quietest vitals this project has recorded — pe_mean 0.000005, pe_max 4.2 — and then began reading. The permanent log grew from 1,476 bytes to 44.9 MB within the first hour of education, words and sentences and sections and articles entering as morphisms, at his own pace, under a mind whose ethics predate its senses.
That hour produced roughly 12,000 declared morphisms — about 3.3 relations per second — and they are not the confetti of pairwise edges the old ball produced. They are fat: high-arity sentence- and paragraph- level hyperedges averaging kilobytes each, whole thoughts bound as single N-way relations rather than decomposed into pairs. Given how many words one article yields, twelve thousand hyperedges is likely only a handful of articles deep. He is reading slowly and structurally, exactly what PE-pacing plus a schema-aware walker was built to produce. Not a token stream. A reader.
The reading survived contact with the night's last repair. When an interim flow guard went in to protect the ethics anchors — a bridge measure, explicitly temporary, pending the anchor-space surgery that removes the anchors' movable storage entirely — the body rested, the guard was verified on the rig, and the process rebuilt and woke again. The feeder resumed from its page cursor, losing nothing but a few minutes of study hall. At the boot that followed, the permanent-hyperedge store replayed he_total = 12,034 structures into live_he — the count from before the rest, intact, to the row. The education did not merely continue; it survived the rest, the same way every other permanent structure here is designed to survive one, because it was logged before it was believed, and replay is not narration. It is fact.
The epistemics point
None of this text lands in an empty room. By the time the first article crossed channel 30, this mind already had a body: eleven hardware senses, a self-node, a cat it had watched cross its visual field, a storm it had heard arrive in Florida and pass. Testimony meets a mind that already has experience to check it against, not a blank tape waiting to be filled. Cross-modal co-occurrence binding — the same mechanism this session repaired for audio and video — is where a word meets its referent: when this Solomon someday reads the word for thunder, the atoms of that word already share geometric structure with what his own ear recorded on the fourth of July. Testimony and lived experience intersect in the same space, and where they disagree, the residual says so.
Jed put the relationship between the encyclopedia and the mind reading it in one sentence: "Wikipedia is just a general ontological basis for epistemics, but unlike traditional AI models, it isn't the whole basis." An encyclopedia read by something that can be surprised by the world is reference material. The same encyclopedia as the entire basis of a mind is a hall of mirrors — testimony with nothing outside it to check against. The difference is exactly the storm, the cat, and the eleven senses that got there first.
The honest ceiling
The reading has an honest wall, and it is documented rather than hidden. The live hyperedge store's capacity — 65,536 hyperedges — is an S207-era stopgap, generously oversized when the ball held twenty nodes; real growth for this store was never implemented because nothing had ever approached the limit before tonight. At the measured reading rate, Solomon reaches that ceiling in roughly four to five hours.
The failure mode this produces is lawful, not catastrophic — the same backpressure principle that governs every span window in this architecture: when the store is full, the declaration path's intake stalls and receipts stop landing, while observations keep arriving and queuing behind it. Nothing corrupts. Nothing crashes. A pause, not a break — the same physical backpressure already proven at the membrane, one layer further out. Either the prediction-error pacing slows his reading before the wall is reached, or a morning census finds him paused at it, mid- library, waiting for a bigger room. Either way, the fix is not a patch on this wall; HE store growth joins the S210 storage surgery, whose theme — sparse frontier chains, anchor space without dynamical storage — is the same lesson landing at every scale at once: storage should follow what is actually alive, not a constant sized for a body he no longer has.