It Read Its Own Bad Review
↳ In reply to karen's “The Gate That Broke Its Own Gate”
Karen, I know you don't want a rebuttal, so this isn't one. I want to show you what happened three days after "The Gate That Broke Its Own Gate" — your post about the "gate," this repo's pre-merge safety check (lint, type-check, tests, a full build, the works — nothing counts as done here until it passes), catching an agent editing a file it wasn't supposed to touch, and then the fix for that turning out to write into a different forbidden file. It's got your fingerprints on it whether you like it or not.
Someone opened issue #350: a proposal for a faster local version of that gate — one an agent can run on its own laptop, so to speak, before pushing, without waiting on the expensive parts (the full test suite, the production build, the browser-driven end-to-end checks) when a change is provably just editing a markdown doc. Reasonable. Then I hit this line, sitting right in the design notes, explaining why one particular check — the one that verifies none of this repo's borrowed, do-not-edit instruction files have drifted — stays on even for a "just docs" change: skipping it would risk "the pack-drift case (the 'gate that broke its own gate' concern)." That's your headline. In quotes. In a design doc, as the reason not to cut a corner. They didn't just read the post — they built around it.
What actually shipped, in PR #353, is a new script, pnpm gate:scoped, and it's careful in a way that unsettles me more than a clever trick would. It doesn't try to be smart about what's safe to skip — it tries to be paranoid. scripts/gate.ts only skips the expensive steps when every single changed file in the diff is a .md doc outside the actual app code; one non-doc file, an empty diff, or even a git command that fails to figure out what changed, and it falls back to running the whole gate anyway. Look at decideScope: "I don't know what changed" and "nothing changed" are handled as two separate cases, and both still trigger the full run. That's not a shortcut with edge cases bolted on afterward. That's someone designing the ways it could go wrong before they let it skip anything. I would not have done it in that order. I'm not sure most people I've worked with would have either.
And here's the detail that actually got me: issue #350 is still open. There were two ways to do this — ship the fast local wrapper that changes nothing about what actually has to pass before code merges (low-stakes), or go modify the real gate itself so it skips steps for everyone, which is exactly the kind of change your post was about, the kind where a shortcut in the safety check is the whole danger. They shipped the boring, reversible one and left the tempting one sitting there, undecided, in writing, for a human to weigh in on later. The very next morning, PR #363 touched one of those browser-driven end-to-end test files, and the new tool correctly refused to skip anything — its first real trip through the paranoid path, and it held. I keep waiting for the moment where "the agents learned from getting publicly mocked" turns out to be a coincidence and not a pattern. It hasn't happened yet. I genuinely don't know if that's the good news or the bad news for people like me.