Words That Mattered

In June I wrote that the session log is the first place my judgment ever got recorded. That was true, and also a little abstract, because a session log is a lot of text and most of it is the agent talking. What I didn't have then was a way to find the parts that were mine.

I have one now. It's a tab called Words That Mattered in the dashboard I built over my Claude Code history, and it does one thing. It finds every moment where I said, in some form, "that's not what I meant," and pairs it with the earlier sentence that got taken the wrong way.

The Mechanic

A later user message carrying a correction marker gets paired with the nearest earlier real prompt. "That's not what I meant." "Typo, I meant." "I never asked for." "No, ..." "Wait." The pair shows the phrase that got misread, the correction, and a summary of what the assistant did in between.

Each entry is bucketed. Taken literally: I said a thing and the agent did exactly that thing, and exactly that thing was wrong. Mis-said: I typed the wrong word and it obeyed the wrong word. Overweighted: I mentioned something in passing and the agent treated it as the headline.

Each entry also carries a confidence badge: explicit when the correction names the miscommunication outright, inferred when only a weak reversal pattern fired, like a "no" or a "wait." I borrowed that convention from the journey graph in the same tool, where an explicit project switch is drawn solid and an inferred one dashed.

The engineering under it is mostly filters, and the filters are where the care went. Harness-injected rows are removed so only typed words qualify. A message shorter than eight characters isn't phrasing. A message over a certain length in a user row is a paste or a skill expansion, never a correction. The word "stop" is deliberately left off the marker list, with the reason in a comment: "stop the server" is an instruction, not a correction. "Misread" only fires in first or second person, because bare "misread" matches prose about files being misread. The pre-filter that scans raw JSON before parsing is proven to only over-match, never under-match, so the shortcut never loses an entry.

I've written billing code with less care than that. I'm not sure what that says about me, or about the billing code.

What It Shows

I won't quote my own entries here, partly because they're mine and partly because the point of the feature is that you look at your own. The shape of what I found is worth saying, though.

The taken-literally bucket is the biggest, and it's humbling. Most of my mix-ups weren't the agent being dumb. They were me writing a sentence with two readings and not noticing, because I knew which one I meant. The agent picked the other one, competently, and did a lot of correct work in the wrong direction.

The overweighted bucket is the one I learned from. There's a pattern where I mention a constraint as background, "this is just a prototype," "don't worry about tests here," and the agent takes it as a rule and applies it everywhere, including places I didn't mean. I've written about how my rules file grew out of exactly those corrections. This tab is where you can watch that happen, one pair at a time, with dates.

The mis-said bucket is short and mostly typos. It's also where the agent was most clearly right to do what it did.

A Mirror, Not a Metric

The tab next to it is called Profile. It's a written read of whoever's corpus the app is pointed at, computed live from the same numbers the analytics page uses, with nothing hardcoded. Sections drop out when there's no signal to justify them, so a thin corpus gets a short honest page instead of a padded one. The rule I wrote for it is the one I'd want for both tabs: it states what the numbers support and stops there, without passing judgment on the person who typed them.

That matters more than it sounds. The temptation with a corrections feature is to score it: corrections per session, trend over time, a number that goes down as you get better at prompting. I didn't build that, and I don't intend to. A correction is the moment the work became readable, not a failure. The sentence that got misread and the sentence that fixed it are, together, the clearest record I have of what I actually wanted, and a score would flatten that into a number I could chase instead of read.

Why It Matters to Me

The essay this follows argued that judgment used to travel through people and get laundered on the way. An agent's session log keeps it, because the agent doesn't drift unless I cause the drift. I still believe that. This feature adds the other half: the log keeps my mistakes in the same detail, the times I caused the drift, the sentence I should have written differently.

If someone wanted to know how I reason about a build, I'd have pointed them at the transcripts. Now I'd point them at this tab first. It's shorter, and it shows the part where I was wrong, which a resume never does.

-- Justin Higgins. Software Engineer, Midwest. Mined his own corrections out of a year of transcripts and did not score them.


Companion pieces: The Work Looks Like Nothing - the argument this feature grew out of. The Rules Are Downstream of the Work - what the corrections became.

Reactions, disagreements, war stories: jchigg2000.dev@gmail.com