Reachability VEX Coverage
Findings proven UNREACHABLE by binary analysis should carry VEX status
NOT_AFFECTED. This is how much of that triage is
outstanding, by project version.
{% if floor %}Scoped to severity {{ floor }} and above.{% endif %}
Unreachable, still untriaged, and appliable — closing them with
--autotriage --autotriage-status NOT_AFFECTED marks each
NOT_AFFECTED / CODE_NOT_REACHABLE.
{% if floor %}Counted at severity {{ floor }} and above only.{% endif %}
A further {{ cov.get('needs_review_total') }} unreachable
finding{{ "" if cov.get('needs_review_total') == 1 else "s" }} need a person,
not automation, and {{ "is" if cov.get('needs_review_total') == 1 else "are" }}
not in the number above.
{{ cov.get('needs_review_status_conflict', 0) }} already carry a status
someone chose — those need a decision, or
--vex-override.
{{ cov.get('needs_review_missing_ids', 0) }} lack the platform ids the VEX
API needs — those need the id recovered, which no override will do.
A gap with both problems is counted under each, so the two need not sum.
Reachability analysis has not run in this scope
No finding here carries a reachability score, so VEX coverage cannot be
measured. A gap count of zero means unknown, not clean —
run a reachability (VULNERABILITY_ANALYSIS) scan before
reading anything below as coverage.
Coverage is the share of UNREACHABLE findings carrying NOT_AFFECTED,
counted only across the {{ cov.get('versions_with_reachability', 0) }} version(s)
where reachability analysis actually ran. Reachability status is inferred from the
finding data itself, not from scan history.
{% if coverage_pct is none %}There is no coverage denominator in this scope.{% endif %}