Words That Mattered
In June I wrote that the session log is the first place my judgment ever got recorded. That was true and it was also a little abstract, because a session log is a lot of text and most of it is the agent talking. What I did not have then was a way to find the parts that were mine.
I have one now. It is a tab in the dashboard I built over my Claude Code history, and it is called Words That Mattered. 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, 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 is drawn 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 is not 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 absent from 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 no entry is lost to the shortcut.
I have written billing code with less care than that. I am not sure what that says about me, or about the billing code.
What It Shows
I will not quote my own entries here, partly because they are mine and partly because the point of the feature is that you look at your own. But the shape of what I found is worth saying.
The taken-literally bucket is the biggest, and it is humbling. Most of my mix-ups were not the agent being dumb. They were me writing a sentence that had 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 is 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 did not mean. I have 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 is also the one 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 is a written read of whoever's corpus the app is pointed at, computed live from the same numbers the analytics page uses. Nothing in it is hardcoded. Sections drop out when there is no signal to justify them, so a thin corpus gives you a short honest page rather than a padded one. The rule I wrote for it is the rule I would want for both tabs: it states what the numbers support and stops there. It does not pass 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 did not build that, and I do not intend to. A correction is not a failure. It is the moment the work became readable. 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 does not drift unless I cause the drift. I still believe that. What this feature adds is the other half. The log also preserves 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 would have pointed them at the transcripts. Now I would point them at this tab first. It is shorter, and it shows the part where I was wrong, which is the part 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