Three Fixes With the Same Sentence
Written later and filed to this date, as part of filling in every day of the year.
The second day of the repository has one feature commit and three fixes, and the three fixes share a sentence. The language-model client “was being instantiated at module load time, which fails during Next.js static page generation when env vars aren’t available.” Then the payments client, same sentence. Then the auth provider, which needs a context that “isn’t available during static page generation”, fixed by telling the framework to render every page at request time. Three third-party services, three secrets the build did not have, three commits in a row from a model that had written the whole application the day before and was now finding out what a build is.
Human Archive started at the end of November 2025. The idea is in the README in one sentence: it captures a person’s personality, life stories, values and voice through model-led interviews, and keeps them as an interactive archive for the people who come after. The flow is interview, then profile, then playback. A model asks questions and follows up on the answers; the answers are synthesized into a profile the person reviews and approves; then anyone with access can talk to a model that answers in that person’s voice, grounded in their own words. It has sign-in, a relational database with migrations dated to its first weekend, subscriptions in three paid tiers, and a seed file of forty-eight pre-written questions sorted by life area and depth, for the tier that gets no generated ones.
The first real commit is ninety files and twelve thousand lines. It was a product on day two. Then the log stops for six months.
What it taught
The first lesson is in those three fixes, and I did not see it until I read them back in a row. The app was written as if it would only ever run in the one place it had run, a development server with every secret in its environment. A build is a different place. It has no secrets and renders what it can ahead of time, and every client the app had constructed at the top of a file blew up there. The fixes are a few lines each, lazy getters and one framework flag, and what they share is that nobody had thought about the second environment until the second environment refused.
The second lesson is the gap. From the first of December to the fourth of June, nothing. A finished product with payments wired up and no one maintaining it is a liability with a landing page, and the question of who would maintain it had not been asked, because there was no one to ask it of but me, and I had moved on.
The second person
The question got an answer in June, and the answer was not me. The fourth of June is twenty-seven commits in one day, and they are a different kind of commit: a zero-dependency test harness, pricing math extracted into its own module with tests, archive-slot math with tests, budget bookkeeping with tests, a three-thousand-line pile of stranded work-in-progress landed in six commits with the tree left clean. Build agents had found the repository, and the first thing they did was make it testable, because a thing they could not test they could not safely touch.
The same day holds the third lesson. Two of those agents picked the same top item from the same backlog and started on it in the same working tree. One noticed the files it was editing turn modified-by-someone-else mid-feature, reverted its own additions, committed nothing of the other’s, and wrote the collision down as a question for the supervisor instead of racing. A second agent hit the same collision on a different feature later that day and did the same. By evening the day’s last commit had declared the premise they were both protecting, that another agent’s uncommitted work is untouchable, void under a sole-agent rule, and landed the work. Two agents in one tree is not a situation to handle gracefully. It is a situation to make impossible, and the fleet’s rule that one worker holds one repository at a time has no better argument than this day’s log.
The first of July is twenty-six fixes in one day: billing races, a webhook delivered twice granting paid slots twice, an ownership check a client could skip by supplying its own archive id, buttons with no failure path. None had been found before, because nobody had used it.
I still think the idea is good. Somebody’s grandmother answering questions over a few months, and her grandchildren asking her things in a voice built from the answers, is worth building. What the repository shows is that I built it in two days and did not have the second person it needed, and that when a second person arrived, it was a fleet that started by writing the tests I had skipped.