you can't paste a gesture into a bug report
Entry nine of ten in “the end of the wire,” a series on the terminal. Each one stands alone.
The terminal produces a transcript. The GUI produces nothing. Give that a decade and it stops being a difference in tooling.
Everyone has received this ticket:
Go to settings, then the second tab — Advanced, I think? — and there’s a dropdown near the bottom. Pick the third option. Then save, and go back to the main screen, and it hangs.
You have written it too. I have. Nobody has ever written it well, and it isn’t for lack of effort or literacy. The person filing it watched the bug happen with their own eyes and is trying, in good faith, to hand you what they saw. The format is what fails them. They’re transcribing a sequence of hand motions performed in a room you weren’t in, using nouns that may have been renamed in the last release, and the one thing you actually need — the precise state the machine was in — was never written down anywhere, by anything, at any point.
Compare:
$ ./deploy --env staging --force
Error: connection refused (10.0.4.12:5432)
That’s not a better-written report. It’s a different kind of object. It can be pasted. It can be run. It can be run by someone else, on another machine, a year from now, and produce the same failure — or, more usefully, fail to.
Not that graphical software records nothing; there’s a log somewhere, usually. But the log was written for the vendor, not for you, and you can’t hand it to a colleague as an instruction. What the shell hands you is both at once: the evidence and the reproduction steps, in the same string, because the thing you did and the description of the thing you did are not two artifacts. They’re one.
That’s the property, and it’s worth naming plainly, because it’s easy to mistake for a convenience feature.
Reproducibility is a property of language, not of pointing.
A gesture is an event. It occurs, and then it’s over. Nothing about a click is designed to persist — the interaction model treats your action as a transient input to a state change, and the state change is what survives. You can narrate a gesture, or record your screen performing it. Both are descriptions of an act, at some remove from the act, and neither can be executed.
A sentence isn’t like that. A sentence is already a repeatable object the first time you say it. That’s what makes it a sentence and not a noise. You can write it down without loss, hand it to a stranger, and have them produce the identical act without ever having seen you perform it. Every practice humans have built that accumulates across generations — law, mathematics, recipes, sheet music — runs on that one property. Not because writing is prestigious. Because a gesture cannot be inherited and a sentence can.
Here’s where it stops being about bug reports.
Two people, same job, same team, same intelligence, roughly the same effort. Both solve the same irritating problem on a Tuesday — some export that has to be reshaped before it’s usable.
One solved it in a file manager and a spreadsheet. Clever, fast, correct. On Wednesday the problem is gone, and so is the solution. Next month it comes back, and they solve it again, a little faster, from the same starting line.
The other solved it in six lines, which are now in a file, which is now in a repo. It was never a problem again after the first Tuesday. The six lines get a flag. The flag gets used by someone else. Two years later there are eighty such things and a person who no longer solves that entire category of problem at all, because their past self already did and left the work lying around in a form that still runs.
Same intelligence. Same effort. Different slope.
Which means the divide in the last entry — the one with no counter and no white coats and no one standing between you and the machine — doesn’t need a gatekeeper to maintain itself. That was the part I got wrong for years. I kept looking for exclusion: an obscure culture, a hostile answer on a forum, a job posting written to filter. All of that exists and none of it is the mechanism. The mechanism is compound interest. Nobody is kept out of anything. One person’s work is in a form that accrues and the other person’s isn’t, and ten years of that produces a gap that looks exactly like a difference in talent and isn’t.
The honest half: the transcript cuts both ways, and it cuts fast.
rm -rf is precisely as repeatable as anything else. Text doesn’t know what it means. The same property that lets a good idea propagate at no cost lets a catastrophic one propagate at no cost, and the catastrophic one usually moves faster, because nobody reviews the thing that has worked eleven times. The worst damage I have ever done to a database took under four seconds and was immaculately documented — I can still read the line. It’s in my history. It was perfect. It ran.
So the confirmation dialog you resent is not stupid. It’s friction deliberately inserted in front of an irreversible act, by people who understood that the cost of an error and the cost of expressing it should not be equal. The shell charges the same for both. That’s a design position, and it isn’t obviously the right one.
My shell history goes back four years. Almost all of it is junk — typos, half-finished ideas, the same three commands ten thousand times. But it’s the only artifact I own that can tell me, without flattering me, what I actually spent those four years doing.