Notes
Why this environment is set up the way it is.
Each note is one problem that took a while to understand, and what the repository does about it now. They are here because the answer lives in several files at once — a config, a script, a CI job — and none of those files is the right place to explain it.
The numbers are measured. Most of them come from The machine, so you can tell which would hold on yours; where a note measured somewhere else, it says what it measured on.
A config that has to be generated
GlazeWM reads one file and supports no includes, so keeping part of it out of a public repository means building the file before the window manager sees it.
A guard that reads the command line only guards the command line
Keeping a particular line out of commit messages. Checking just before the tool call catches the -m case and nothing else: a message passed with -F, an --amend, or a commit written on another machine and pulled in all go straight through.
A mouse that disconnects, and the wrong branch
No device-arrival event in the log ruled out the cable, the port and the socket. What remained was the radio link or the power policy above it, and a Windows update landing on the same day made the second one look obvious. It was the first one.
An irreversible action is not authorised by a yes in the conversation
An agent asked to push, or to delete, has the call refused by the approval classifier — and having agreed in chat beforehand changes nothing. Only a choice made through AskUserQuestion counts, and this turned out not to be about push at all.
Finding windows that are visible and drawn nowhere
GlazeWM hides an inactive workspace by cloaking its windows through DWM. A crash, a monitor plugged in, or presentation mode toggled leaves the cloak without the manager — a window that reports itself visible, on screen, and belonging to no workspace.
Invariants written once, run two ways
Neovim can freeze while the configuration is correct, because what is wrong is the state of the machine rather than anything in the repository. The assertions live in one module and are called from both :checkhealth and the headless CI probes.
Launching mise tools without the shims
A mise shim is three process creations, and a console process that stays between the terminal and the tool for the whole run. Here that turned a 15 ms tool into 127 ms and left bat unable to hand the prompt back.
On 8 GB you end up with one model per job
Fully resident on the GPU is 73–113 tok/s; one layer over and it is 7–21. Which side you land on is decided by how the KV cache grows, not by the size of the weights — and the model that holds a long context could not call tools.
One icon, and every column after it is off
The width Neovim computes comes from the Unicode East Asian Width property. The width the terminal paints comes from the font. Nerd Fonts put glyphs where those two disagree, and setcellwidths is where the font's answer is written down.
One register, five providers
Where a yank to `+` ends up is decided by an external command, and which command depends on WSL, Windows, Wayland or X11. The same tool also has to be asked for opposite line-ending conversions in each direction.
The PATH budget
Windows has 8191 characters for PATH, mise spends most of them, and running out breaks commands that are installed and on disk.