OpenVEX¶
ca9 can generate OpenVEX statements from reachability verdicts.
Verdict mapping:
| ca9 verdict | OpenVEX status |
|---|---|
REACHABLE |
affected |
UNREACHABLE (static) |
not_affected |
UNREACHABLE (dynamic) |
under_investigation |
INCONCLUSIVE |
under_investigation |
Test non-execution is limited to the supplied report and test inputs. It cannot justify a not_affected statement. Strict mode therefore keeps such results inconclusive; balanced mode can retain a scoped dynamic heuristic, but OpenVEX still emits under_investigation with no justification. The original ca9 verdict and explanation remain in the statement's ca9 metadata.
Coverage evidence is preserved in ca9.evidence_summary, including coverage_scope, coverage_measured_files, and coverage_unmeasured_targets. A reported scope records the presence of statement evidence for each selected affected target; it does not attest to complete instrumentation or matching source/build identity. See coverage analysis and proof standards.
Accepted-risk and baseline findings are still emitted as OpenVEX statements with ca9.policy_ignored metadata, so downstream review can see the finding even though it did not affect ca9's exit code.
Continuous VEX¶
Compare previous and current OpenVEX output:
vex-diff exits non-zero when vulnerabilities become affected or newly require attention.