← All needs

retro: candidates reach the user unchecked, so most of each run is noise

## Problem `retro` lists categories to look in and ends with "Present these candidates to the user, in order of severity." Nothing in it asks whether a candidate holds up before it's shown, and nothing says an empty result is acceptable. Each category's "_Use when_" is ordinary friction that every real session has: - the session took a long time to find something; - the agent made a mistake; - the agent made an expensive tool call. So every run produces a list, and the user ends up checking it by hand. ## What we've seen We run `retro` at the end of most sessions (v1.3.1, same text as `main`). - **It's checked by hand every time.** Over two weeks, 17 retro runs across 12 sessions were each followed directly by the user asking the agent to prove the candidates were needed: 15 of 17. In one session, three of five candidates fell to a single check each, and one held up. - **One check usually kills a candidate.** In one session, a list of five fell entirely to one query each: a `git log`, a transcript count, or a docs read. - **Counting recurrence doesn't fix it.** When the agent filtered candidates by "does this pattern recur?", one survived: a command shape seen 7 times across sessions. The question that actually decides it is "did it ever cost anything?", and one more query showed no recorded harm. Measuring how often a pattern happens is not the same as measuring what it cost. ## What correct looks like For that last session, the retro presents nothing, plus one line per dropped candidate naming the check that dropped it. When a candidate does survive, it's shown with the check that held it up. For example: "a commit with this trailer fires the hook, and the same commit without it doesn't." ## Suggested change Add a step before "Present": for each candidate, state what you'd observe if the change were needed. Then run the narrowest check against the session logs, the repo or `git` history that could show it isn't, aimed at consequence (did it cost something, will it again) rather than occurrence. Present only survivors, each with its check and result. Zero survivors is a complete retro. We currently work around it by passing exactly that instruction as arguments to `/retro`. It helps, but it belongs in the skill, since anyone running `retro` bare gets the noisy version.