Pathrule
Writing
Engineering
/Sertan Helvacı/7 min read

How Do You Know the Fix Actually Worked?

Fixed and not fixed is a false pair.

A quiet path can be quiet because it is healthy or because nobody walked down it, and pretending those are the same is how a regression comes back as a surprise.

Short answer

Merge is not the answer; runtime is. A task that came from a real incident should keep a state after it ships: watching production, quiet but not confirmed, verified fixed, or issue returned. Quiet deserves its own state, because a low-traffic path can be silent either because it is fixed or because nobody hit it.

Pathrule
Pathrule routes scoped team knowledge into AI coding sessions.

What this covers

  • The states are not verified yet, watching production, quiet but not confirmed, verified fixed, issue returned, and archived after healthy coverage.
  • Quiet is deliberately its own state because a low-traffic path can be quiet either because it is fixed or because nobody hit it, and collapsing those two into fixed is always an optimistic guess.
  • Verified fixed therefore means traffic went through the affected path without the issue returning, not that the room went silent.
  • Issue returned reopens the ORIGINAL card with the evidence attached, so the second attempt starts from what the first one tried instead of arriving as a disconnected new report.
  • Signals is runtime context rather than analytics: there are no users, sessions or funnels in the model, and it is opt-in per workspace with each instrumentation point approved individually.

Comparison

StateWhat it meansWhat it does not mean
Watching productionThe fix shipped and the events are being watchedThat it worked
Quiet, not confirmedNothing came back, but not much went through eitherFixed
Verified fixedTraffic passed through the path without the issue returningThat it can never regress
Issue returnedIt came back, on the original card, with both occurrences attachedThat a new investigation starts from zero

Merging is a claim

A pull request that closes an incident says the problem is solved. It is a reasonable claim and it is still a claim, made by the person least able to be objective about it, at the moment they most want to be finished.

The thing that can actually answer is the runtime that reported the problem in the first place. It saw the failure; it is in a position to say whether it stopped seeing it.

Six states, because two are not enough

A card that came from Signals carries a runtime state that keeps moving after the work is merged. Not verified yet. Watching production, which is where a card sits while the answer is still being earned. Quiet but not confirmed. Verified fixed. Issue returned. Archived after healthy coverage.

The one that justifies the whole design is quiet. A low-traffic path can be quiet because the fix worked or because nobody walked down it that week, and those are not the same sentence. Most tools have two answers, fixed and not fixed, which forces a guess whenever traffic is thin, and the guess is always optimistic because nothing arriving looks exactly like success.

Separating them is what keeps verified worth something. When a card says verified fixed, it means traffic went through the affected path, not that the room went quiet.

Issue returned is the state that pays for the rest

Nobody wants to see it, and it is the reason the loop exists. A fix that regresses two weeks later normally arrives as a fresh report, disconnected from the work that was supposed to have solved it, and the team relearns the problem from the beginning.

Here the original card reopens. The first attempt, the context it ran with, and the runtime evidence from both occurrences sit in one place, so the second attempt starts from what the first one tried rather than from an empty page.

On the board it is a small chip beside the Signals badge with the time it last changed. It is a status, not a notification: nothing interrupts you to say a card is still being watched.

This is context, not analytics

It is worth being precise about what Signals is, because the shape looks familiar. There are no users, sessions or funnels in the model. It does not measure engagement and it is not a product analytics tool that happens to log errors.

It links runtime events back to the code, the rules and the tasks they touch, so that the next agent working in that area knows what the product actually did there. It is opt-in per workspace and propose-first: a read-only scan suggests instrumentation points and only the ones you approve are wired in.

The [runtime verification documentation](/docs/signals/runtime-verification) covers the six states, and [how the loop works](/docs/signals/how-it-works) covers the path from event to task.