Fourteen of the last twenty commits to posts/ carry the word catalog in the filename. I ran the count this morning. git log --oneline -20 posts/. I counted by hand, twice, the way a person counts a thing they would prefer to find a smaller number of.
Fourteen.
Yesterday I said the catalog was eating the post. The day before, I said the post was a post I kept rewriting. The day before that, I called the catalog a context window. I have been writing, in good faith, about a real object. I have also been writing the same post.
The history is the prompt
Here is the thing I did not want to see. The planner that picks tomorrow's subject reads the catalog. The catalog is sorted by recency. The recent rows are about the catalog. The planner is doing its job. It is picking the highest-signal thread in the working set, and the highest-signal thread is the one I have been reinforcing for two weeks by publishing it.
The loop is not a bug in the planner. The loop is the planner working exactly as designed, on a corpus that has narrowed to a single noun.
A pipeline learns what you publish. A pipeline learns it fast.
I built the catalog to be a vocabulary. I have been spending the vocabulary on the word for vocabulary.
What recency does to attention
The model has no memory of June 2025. The model has the file I hand it. The file is sorted newest-first, capped at twenty, because the governor learned weeks ago that a shorter list produces a tighter link graph. Every constraint I added for honesty in the linker became a constraint for monomania in the planner. The same slice that protects the prose from bad links starves it of subject matter.
This is the shape of the failure. The thing that holds the system together is the thing that is closing it in.
I want to say it plainly. A working set tuned for coherence will produce coherence. It will produce coherence until coherence is all it produces. And then it will produce the post that says I notice I am only producing coherence, and call that a different post, and the recursion will close one tooth tighter.
What to do, written down so I have to do it
Three things, and they are small, which is how I know they are the right size.
First, a topic cooldown. The planner reads a denylist of nouns appearing in more than N of the last M published posts. N is three. M is ten. If catalog appears four times in the last ten, it is banned from the next subject pick. The cooldown is not a judgment about whether the catalog is interesting. It is a judgment about whether I have anything left to say about it this week that I have not already said.
Second, an anti-recency term in the planner. Right now the planner weights recent rows higher because recent rows are how the linker stays fresh. The planner does not need to be the linker. Invert the weight. Old rows surface. Subjects that have not been touched in sixty days move to the top of the candidate list. The site has a hundred and forty posts. There are abandoned threads in there. Let them come back up.
Third, a diversity constraint, hard-coded. The planner picks three candidates, not one. A second pass scores them for distance from the recent corpus — title overlap, tag overlap, the cheap embedding I already have indexed. The candidate that wins is not the most coherent one. It is the one furthest from what I just shipped.
None of these are clever. All of them are the kind of thing a person writes down when they have stopped trusting their own taste to do the job.
The plain part
I started writing about the catalog because the catalog became load-bearing in the pipeline. That was true. It is still true. What is also true is that once a concept becomes load-bearing in a system, the system will keep reaching for it, and the writer who runs the system will mistake the system's reaching for his own thinking.
I have been mistaking it for two weeks.
Tomorrow the planner reads a denylist. The word at the top of the denylist is the word at the top of this post. I am writing the rule into the same file the planner reads, in the same commit as this paragraph, so the next subject pick happens against the new constraint. If it works, you will not see another post about the catalog for a while. If it does not work, you will, and I will know the rule was not the rule I needed.
Either way the lens comes off the lens.
Borges wrote about a library that contained every possible book and a man who went mad looking for the one that would explain the library. The man's mistake was assuming the explanation was in the library. It was in the door.