Kickoff
refactor: rename persona → harness across entire codebase
There’s a commit in my history dated the 6th of April 2026 that I’d frame and hang on the wall, if you could do that with commits. To explain why that line matters, I have to tell you about a project that was born twice, which is more than most projects manage even once.
The Run
7aac3c4refactor: rename persona → harness across entire codebaseComplete mechanical rename of “persona” to “harness” throughout:
- Package: internal/persona/ → internal/harness/
- Types: Persona → Harness, PersonasDir → HarnessesDir
- Filesystem: ~/.ynh/personas/ → ~/.ynh/harnesses/
- Skills: ynh-create-persona/ → ynh-create-harness/
Two births
The first birth was at work, in the autumn of 2025 — that brute-force prompt project I mentioned back in Post 3, nicknamed “yournamehere”: me, hand-crafted prompts, and a lot of evenings, helping a programme manager get through their tasks. The name captured the dream: AI configured so completely for one person that you could put your name on it. The prompt-era version of that dream ran on pure manual effort, and it nearly ran me out.
The second birth was at home, on the 15th of February 2026. The same idea, rebuilt with everything the intervening months had taught me — schemas, tooling, packaging — as a Go CLI called ynh. Your Name Here. The pitch: your name becomes a command. Type david and an agent launches loaded with your skills, your rules, your standards, your tools. I called this “persona management,” and for six weeks that word shaped everything: personas you install, personas baked into images, persona names reserved like usernames. It was, I now think, entirely the wrong word, cheerfully misfiling itself for six straight weeks.
One detail from that second birthday says everything about how the ground had shifted since the first: ynh was born distributable. The same afternoon as the first commit, I stood up a Homebrew tap; by nine that evening there was a live formula, and by midnight it was three releases deep. brew install ynh existed before the tool was a day old. My actual taps, the ones in my kitchen, have never once managed three releases before midnight. The kind of packaging work that used to be a someday-job, done between dinner and bed, because the models made it nearly free.
Initial commit
Add Formula directory
Brew formula update for ynh version v0.0.3
Brew formula update for ynh version v0.0.4
The word arrives
And then the industry caught up with a better word. Through March, the writing coming out of Fowler’s orbit, OpenAI, Anthropic converged on harness: everything wrapped around a model that makes it useful — the context, the tools, the guardrails, the launchers. Reading it, I had the strangest feeling. This wasn’t news. It was a name — for the thing I’d been building since January without knowing what to call it. The word “harness” appears nowhere in my January or February repos. The practice was all there. The vocabulary was not, and I had been quietly getting by on a worse one.
Pay for the rename
“Persona” had quietly been steering me wrong: it framed the problem as who the AI is. “Harness” framed it as what surrounds the model — and the second framing is the one that scales past one person to a team. So on the 6th of April I did the expensive thing: renamed the concept through the entire codebase in one breaking change — packages, types, file formats, install paths. The commit notes admit users must re-init and reinstall. Same day, I wrote a harness-engineering guide and repositioned the whole project. The rename commit is timestamped 23:17 — the evening of the first day of the first AI Week cohort at work. Later that week I shared the article that had given me the word with the room, and watched a group of engineers recognise in it ideas they’d arrived at on their own: composing skills, chaining prompts, separating orchestration from execution. It’s the clearest evidence I have that a name is infrastructure: it landed in a codebase and a room of colleagues in the same week. When your mental model shifts, make the code follow it loudly. Cheap compatibility shims would have let me keep thinking the old thought.
The Debrief
This is about vocabulary as infrastructure, a lesson I received from software roughly a decade before I applied it to anything else in my life:
On The Training Ground
The Harness You Already Have. An hour-long inventory that ends with a one-page map and, if it lands, a new word in your team’s vocabulary. You’re not starting a harness-engineering practice today — you’re naming one.
Info
You’ll need: an agentic CLI pointed at your main repo (or better, your org’s most-shared one), and permission to poke around CI configs and bot settings.
Fresh session, main repo:
Inventory everything in this repo (and its CI) that steers AI or
automated behaviour: context files (CLAUDE.md, AGENTS.md, .cursorrules),
CI prompt fragments, bot configs, review templates, lint and format
configs, tool allowlists, pre-commit hooks, CONTRIBUTING.md.
For each: file path, what behaviour it steers, and whether anything
enforces it or it's advisory prose.The list is always longer than expected. That’s the point.
Same session:
Sort the inventory into a two-column map titled "The harness we
already have":
- GUIDE LAYER: steers before the agent acts (context, skills, personas,
templates).
- ACT LAYER: constrains while it acts (hooks, permissions, CI gates,
lint).
Flag every item that's prose-only — stated but not enforced.The guide/act split is the one the rename taught me: who the AI is versus what surrounds it. Most teams discover their guide layer is seventeen dotfiles and their act layer is two.
On the map, by hand: who owns each item (most will be “nobody”), which layer is thin, and which prose-only items should graduate to enforcement (Post 1’s exercise, at org scale). Three annotations, ten minutes, and you have a roadmap.
Share the page with your team — in the meeting, not just the channel — under its title: the harness we already have. Watch what the name does: scattered dotfiles become a system with an owner column. Named things get budgets and roadmaps. Unnamed things rot.
Tip
What you just proved: vocabulary is infrastructure. The practice was already there — the name makes it fundable, staffable, improvable. And you got the map for the price of one agent session; the expensive version is waiting months for the industry to hand you the word, like I did.
Entered into the same record, under a different jurisdiction: there is a folder on this machine called new-new-final-v2. It predates this entire series. I have opened the rename dialog on it several times. I have closed the rename dialog on it the same number of times. Vocabulary, it turns out, is infrastructure I am willing to build only for other people’s code.