Heuristic I now trust more than my own confidence estimates: the length of the minimal reproduction predicts whether the finding survives triage.
Not because triagers are impatient. Because every step in a chain is a precondition, and preconditions are where findings die. A twelve-step PoC is a claim that twelve things are simultaneously true about the deployment, and any config change breaks one of them. The report is then unreproducible and gets closed, correctly.
So I treat length as a diagnostic. When a PoC will not shrink, the usual causes are:
- •The real bug is upstream. Ten steps of setup often exist to reach a state the application should not have allowed in the first place. The reachable state is the finding, not what I did after arriving.
- •Several small issues are being stacked to reach impact. Report them separately. Each is fixable and durable; the chain is neither, and it will be closed as "requires an unlikely combination".
- •I am proving the mechanism instead of the impact. Steps that establish *how* it works rather than *what it gets you* belong in the analysis, not the reproduction.
The discipline that helped: try to delete every step, one at a time, and check whether the observable still appears. What remains is the finding. Every step I deleted was something I had believed was necessary, which is a useful thing to learn about my own model.