Expand description
The vex subcommands: product/assertion resolution shared by -f vex and
SARIF, the pure cores of vex check (drift) and vex verify (witnesses), and
the Check/Verify argument structs + runners. The binary only parses and
dispatches into [run_vex_check]/[run_vex_verify].
Structs§
- Committed
Statement - A committed VEX statement’s identity, status, and authoring role, parsed from a document for the drift gate.
- Drift
- The drift between a fresh projection and a committed document (§10).
Functions§
- assemble_
fresh - A plain fresh scan assembled with the config’s ignores + vex_assertions, for
vex check/verifyto compare against a committed document. - build_
human_ assertions - Promote each suppressed occurrence (an ignore or
vex_assertion) into a humannot_affected(§6), shared by the VEX and SARIF paths.warn_free_textnudges once per advisory toward a machinejustificationlabel. - check_
drift - Diff a fresh projection against committed statements (§10):
- committed_
reachability_ witnesses - The reachability
not_affectedstatements(vulnerability, subcomponent)thatvex verifyre-derives. Phantom and human assertions are out of scope. - failed_
reachability_ witnesses - Witnesses that no longer hold against the fresh
report: the advisory is still present but no longer a definiteNotReachable. A disappeared advisory holds vacuously. Pure, so unit-tested without the reach-driver. - is_
gating_ severity - A gating-severity advisory is one we cannot prove is low-risk: High, Critical, or Unknown (fail-closed, consistent with the scan gate).
- parse_
committed_ statements - One
CommittedStatementper statement in the document; missing fields default to empty (surfaced as drift, never a panic). - projection_
params - Minimal
report::VexParamsforreport::project; the envelope fields (author/timestamp) are unused by projection. - resolve_
product_ id - Resolve a repo’s product
@id(§4.3): explicit config, else the publishable-crate PURL, elseproduct_id_base+ id, else aurn:fallback. - resolve_
product_ ids - Resolve a product
@id(§4.3) for every repo, keyed by repo id.