The Box Has No Name Here
Written later and filed to this date, as part of filling in every day of the year.
The notes a piece here is written from say exactly where everything is. A commit subject names the host a service was deployed to. A journal entry quotes the address it binds and the port it answers on. A log line carries the path of the file that was not written. The page may carry none of it. The machine that runs my fleet is “a small always-on box” on this site and nothing more specific, ever, and that phrase was chosen because every alternative is a name.
The list
The boundary is a file in the loop’s repository with a hard list on one side. Never public: network identifiers, meaning the private hostnames, the internal addresses and the box’s real identity; secrets, in any form; anything about the family; the financial internals, including the figure I value an hour at; the raw loop data, the unredacted north star, the time log, the wins files; anyone else’s data. The other side is shorter and says what is safe: the method, the project writeups, the stack described at the level of what I use and why, a rounded and approved number for time reclaimed. The file’s own sentence for the arrangement is that the site is a curated derivative of the loop, never a raw mirror of it.
A list is not enough when nobody reads every diff, and nobody does; what publishes here is pushed by code. So the list has a mechanical twin: one set of patterns, shared by four gates. A scan over every tracked file in the site’s repository. A lint over untracked drafts, the only local check that reads a file git does not know about. A scan over the built output. A check against the live site after the deploy. Eleven shapes are forbidden: a hostname under the private suffix, an internal address in any of the reserved ranges, a bearer value, an API key, a private-key block, the hourly figure in two spellings, the field name the dollar math lives in, the hostnames of two properties I run under another name, and any wallet address. Four more matter only once a page is served: the loopback address, the hostname that means this machine, a local-network name, an origin with a port on it.
The pattern file has one more rule, about itself. It cannot contain the strings it bans, because it is public too. So the most sensitive literals are assembled at run time from fragments, two halves of a suffix joined by a dot, three words joined by underscores, so that the guard is never itself the leak.
The sentence
I expected all of that to cost me sentences. It costs me names, which is different.
Take the host. The notes say where the fleet runs; the page says “the box”. Write the first version and it reads like a redaction, a black bar across a word. Write it again and ask what the reader needs, and the answer is never the name. It is the role: the machine that is always on, that runs the timers and the agents, that has a read-only root so everything it runs lives in one home directory. That tells a stranger more than the model number would, because the stranger cannot look the model number up against my network, and would learn nothing if they could.
Take the port. A journal line says a service answers on a number. On the page the number is nothing: no reader can connect to it, and a reader who could is the reader the rule exists for. What the number was doing in the sentence was standing in for the service. Name the service by what it holds instead, “the one that stores status events”, and the sentence says what it was about.
Take the figure. The hourly value is the one number the rule names outright, and leaving it out forces the sentence to say what the number was for: a way to make reclaimed hours comparable with money spent. That is the idea. The figure was a parameter.
Each time, the banned word was a pointer, and a pointer only works inside the address space it was written in. A hostname resolves on my network. A port means something on one machine. A dollar figure is mine. Readers are outside all three, so for them the pointer dereferences to nothing, and the sentence that carried it was already blank. Replacing the pointer with the thing it pointed at is not a loss. It is the edit a good editor would have asked for anyway, with the question that editor always asks: what is this to someone who cannot see it?
Where it stops
Not every boundary improves the prose. Sometimes the name is the story, the story cannot be told here, and a note goes into the private bank instead with “never quote” on it. The rule’s answer to those cases is silence, not paraphrase, and silence is the right answer; a paraphrase that lets a reader reconstruct the name is a leak with better manners.
Those are rare, and the ordinary case is the one above. The pattern file is the proof. It is the one file on this site whose job is to say what may never be said, and it has never once been allowed to say it: the suffix it watches for exists in it only as two halves and a join. A guard that describes its boundary without crossing it is, it turns out, a well-written sentence with a test.