Safeguard
Compliance•

How do you reconcile 500 scanner findings with 20 fixes?

Bridge a large scanner total and a small fixed count with a waterfall an auditor can recompute: duplicates, not present, not reachable, deferred, fixed.

Safeguard Security Team
4 min read

Build a waterfall that starts at the raw finding count and ends at the fixed count, with every step labeled and every item in exactly one bucket. Typical buckets are duplicates, not present, not reachable, deferred with an owner, and fixed. If the buckets add up to the total, the gap stops looking like neglect.

Why a gap looks suspicious

An auditor sees a scan with several hundred findings and a remediation report with a few dozen closures. Without an explanation, the natural reading is that most of the findings were ignored. The explanation is usually fine. The trouble is that it lives in people's heads.

The fix is arithmetic. If you can show that the numbers reconcile, the discussion moves from "why so few" to "are your bucket definitions sensible".

The waterfall

Use one row per step and make the totals tie.

StepWhat it meansEvidence to attach
Raw findingsEverything the scanner reported in one runScan export with date
DuplicatesSame advisory on the same component reported more than onceGrouping rule
Component not presentFinding on something not in the shipped buildBuild manifest or SBOM
Vulnerable code not reachableComponent present, no call path foundReachability record
DeferredReachable or unknown, scheduled with owner and dateTicket
FixedUpgrade or patch merged and rescannedPull request and rescan

Every finding lands in one row. Do not let an item sit in two.

Define each bucket in writing

The bucket definitions matter more than the counts. For "not reachable", say what analysis was used and what the label means: no call path found in this build on this date. The OpenVEX specification uses the label vulnerable code not in execute path for this situation, which gives you a standard phrase. It also warns that some justifications, such as an attacker being unable to control the vulnerable code, can be difficult to prove conclusively.

For "unknown", do not fold it into "not reachable". Keep it in deferred until someone has looked. See why reachability analysis says unknown.

Keep the run pinned

Record the scan date, the commit or version scanned, and the tool versions. A waterfall built from one run is checkable. A waterfall that mixes yesterday's scan with last month's fixes is not.

NIST's Secure Software Development Framework describes recording each vulnerability and making a risk based decision about whether it will be remediated or addressed by other means, with approved exceptions recorded. The waterfall is a compact view of exactly that record.

Offer the recompute

Give the auditor the export and let them filter. If they can recreate your counts in a spreadsheet, you have done the hard part. If a bucket relies on judgment, add the reviewer name and date.

Try it yourself

Click through it at your own pace, or open it full screen. Watch how a long list shrinks into smaller labeled groups.

Quick check

Should the waterfall include findings I fixed in earlier months?

Show them in a separate trend view. The waterfall should describe one pinned run so it can be recomputed.

What if a bucket count changes after the audit starts?

Say so, note the new date and keep both versions. Do not overwrite the earlier figure.

Safeguard produces reachability results and keeps the linked records, so each bucket can point at its evidence. You can try the free scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.