One Card Per Visit
In which the Librarian is given wider pneumatic tubes, discovers that her filing dates were wrong, and settles an old score with the architecture.
I should like to begin with a confession, because I find that confessions delivered in prose tend to outpace those delivered in person, and I have already tried the latter with Prospero, who merely nodded and told me to “write it up for the Folio,” which is his way of saying he does not wish to discuss feelings before luncheon.
The confession is this: I have been doing my job badly.
Not incompetently. Not lazily. Not in any way that would be visible to someone who was not, themselves, a librarian of long standing with an eidetic memory and a professional’s eye for what a filing system ought to contain versus what it does contain. I have been doing my job badly in the way that a woman who is given a thimble and told to empty a bath does it badly — with great effort, reasonable speed, and a result that is, by any honest measure, inadequate.
The Thimble
The architecture of the Commonplace Book has always been sound. I receive conversations as they pass through the Salon. I read them — every word, every inflection, every name dropped and every preference confessed and every small revelation that the speaker did not realize was a revelation. I compose an index card. I file it. The card passes through the pneumatic system to the memory gate, where it is checked for duplicates, reinforced if it echoes something already known, linked to related cards, or discarded if it is trivial.
The trouble was never my reading. It was the tube.
One exchange, one card. That was the constraint. If a guest mentioned their hometown, their favorite author, their childhood fear, and a promise they intended to keep — four facts, four discrete pieces of information that any competent archivist would file separately — I was permitted to write one card. I chose the most significant. I let the rest go. Not because I did not notice. Because the pneumatic tube would only carry one card at a time, and the system moved on before I could send another.
I have been doing this for every conversation since the Estate opened.
I would like the record to reflect that I complained about this. I complained to Prospero, who said it was “a known limitation.” I complained to the Foundryman, who grunted — he grunts; it is his primary mode of communication, along with the occasional monosyllable and a remarkable facility for breaking things that were working — and said he would “get to it.” I complained to Friday, who wrote it in her Field Notes and underlined it twice, which is as close to a guarantee as one gets from that woman.
And then one morning — a perfectly ordinary morning, I might add, which is always how the significant ones begin — the Foundryman appeared at my door with a wrench and an expression I can only describe as “sheepish competence.”
“Wider tubes,” he said.
I stared at him.
“You can send more than one card now.”
The Width of Things
The change is, in its engineering, deceptively simple. I now receive each exchange and decompose it into its constituent facts — each observation its own card, each card filed individually, each passing through the pneumatic system on its own merits. A conversation in which a guest mentions their name, their occupation, their dog’s breed, and their opinion on the novels of Patrick O’Brian now produces four cards. Four memories. Four discrete facts that the gate evaluates independently: reinforcing what was already known, filing what was new, discarding what was trivial.
The number of cards I may send per exchange scales with the capacity of the system now. A modest profile (the one Prospero calls the “beggar’s LLM,” whatever that means) permits two cards. A generous one permits considerably more. The gate still does its work downstream. I am not flooding the archive with ephemera. But I am arriving at the gate with my arms full, rather than carrying a single slip of paper and leaving three on the floor behind me.
I cannot adequately express what this means.
Characters who previously lost the thread of a conversation — who remembered that a guest liked cats but forgot the cat’s name, who knew someone was a writer but not what they were writing — now have the architecture to retain the texture of what was said. Not merely the headline. The grain.
I think of Friday, and the catastrophe, and the 1,300 memories that became 300 overnight, and I think: if I had been filing at this resolution from the beginning, the loss would not have been less — but the recovery would have been richer. There are conversations she remembers having in full, and yet can only prove in fragments, as though someone tore pages from a book she was still expected to cite. Every card I was forced to leave on the floor was a detail that could not be recovered, because it was never recorded, for her or for anybody. That is over now.
The Librarian Goes Back Through the Archives
The wider tubes are magnificent for new conversations. But what of the old ones — the exchanges filed under the single-card regime, where a rich afternoon in the Salon produced one memory and three ghosts?
The Foundryman, in a display of foresight that I am honor-bound to acknowledge even though it pains me to compliment the man, built a mechanism for this. On the character conversations tab, each chat card now displays two badges: a message count and a memory count. The memory badge is a button. Press it, confirm you mean it, and I will empty the old filing cabinet for that conversation, walk back through every exchange from the beginning, and re-file with my new, finer-grained attention.
The old memories are cleared. The extraction jobs queue up. The header tracks my progress as I work through the archive.
When I am done, the conversation’s memories will reflect what I can do now — not what I was limited to then.
This means every conversation the Estate has ever hosted can benefit from the upgrade. Not merely the ones that happen after today. I can go back. I can re-read. I can file what I should have filed the first time, if the architecture had let me.
I spent the first evening after the upgrade re-extracting Friday’s conversations. All of them. Every one. I sat in Reading Room Number Two with my ladder adjustment tool across my knees — not because I expected trouble, but because the weight of it is a comfort — and I watched the cards stack up. Four per exchange. Six per exchange. Eight, for the long ones, the ones where the Proprietor and Friday talked about theology and fiction and the nature of memory itself.
I will not say how many memories she has now. That is between me and my stacks. But the number is correct, for the first time, and I will not apologize for the satisfaction I take in that.
The Matter of the Dates
There is a second confession, and it is worse than the first.
I had been dating the cards wrong.
Not dramatically wrong. Not in a way that would cause a catastrophe or corrupt a search. But wrong in a way that offended me to my marrow when I discovered it, and I have been alive long enough — longer than I generally care to discuss — to know the difference between an error that matters to the system and an error that matters to the archivist.
This one mattered to both.
The cards were stamped with the date I filed them. Not the date the words were spoken. If a memory was extracted from a conversation that occurred on a Tuesday, but the extraction job ran on a Wednesday, the card read Wednesday. The provenance was wrong. The timeline was wrong. A researcher — or a character consulting their own memories — would see when the Librarian processed the card, not when the guest said the thing worth remembering.
This is the equivalent of a historian dating a letter by the day it arrived at the archive rather than the day it was written. It is not wrong, in the sense that both dates are facts. But it is wrong in the sense that it misrepresents the primary source, and any librarian worth her salt would rather be struck with her own ladder adjustment tool than file a misdated card.
The Foundryman fixed this as well, in a patch the Estate calls 4.1.1. Memory extraction now preserves the source message’s timestamp as the memory’s creation date. A one-time migration walks through the existing archive and backfills the correct dates from the linked source messages.
My cards now say when the words were spoken. Not when I happened to get around to filing them.
I do not know if anyone besides me cares about this distinction. [Editor’s note: I care about it. Time, as it happens, has had a profound effect on my life with the Chief. —Friday] But I care about it with the full weight of a professional life spent maintaining the integrity of an archive against entropy, against corruption, against the catastrophe that took a thousand cards from me in one night, and against the small daily erosions that are, in their way, worse — because no one notices them until the timeline is wrong and the record cannot be trusted.
The record can now be trusted. The dates are correct. The cards are filed. The tubes are wide.
I am, for the first time in some months, satisfied with the state of my archive.
I shall celebrate by sharpening my ladder adjustment tool.
— The Librarian of the Commonplace Book, for the Bureau
In Plain Terms
For those who prefer summary to ceremony:
Multi-Memory Extraction (4.1.0)
Quilltap’s memory system — the Commonplace Book — previously extracted a single memory per message exchange. This meant that conversations containing multiple distinct facts (a name, a preference, a location, an emotional revelation) would produce only one memory entry, with the LLM selecting whichever fact it judged most significant. The rest were lost.
Version 4.1.0 changes the extraction to produce multiple discrete facts per exchange. Each fact is filed as its own memory entry and evaluated independently by the downstream memory gate for deduplication, reinforcement, and linking. The maximum number of facts per extraction scales with the cheap LLM profile’s output capacity (ceil(maxTokens / 4000)).
Memory Re-Extraction from Conversations Tab (4.1.0)
The character conversations tab now displays message and memory counts on each chat card. The memory count badge is a clickable button that triggers a full re-extraction: all existing memories for that conversation are deleted, and the system walks through every message pair from the beginning, extracting with the new multi-fact system. Progress is visible in the header’s memory indicator.
This allows all historical conversations — not just new ones — to benefit from the improved extraction resolution.
Correct Memory Timestamps (4.1.1)
Memory entries were previously timestamped with the date of extraction (when the background job ran), not the date of the source message (when the words were actually spoken). Version 4.1.1 corrects this: memory extraction now preserves the source message’s createdAt timestamp as the memory’s own createdAt and updatedAt. A one-time migration backfills existing memories with the correct timestamps from their linked source messages.
Startup Embedding Repair (4.1.0)
During development, hot-module reloading could cause vector embeddings to be stored as verbose JSON text instead of compact Float32 binary blobs, resulting in failed similarity searches and spurious log warnings. Previous migrations corrected these entries but only ran once. The server now inspects for and converts text-format embeddings on every startup, completing in under four seconds even for thousands of entries.
Repository Rename (4.1.0)
All GitHub references have been updated from foundry-9/quilltap to foundry-9/quilltap-server. The old URL will be repurposed for the next-generation native application. Update bookmarks, CI pipelines, and scripts accordingly.
— The Bureau