2.9 KiB
2.9 KiB
VEX Generation with Evidence Links (--link-evidence CLI Flag)
Module
Cli
Status
IMPLEMENTED
Description
Extension to stella vex gen command with --link-evidence flag that includes binary-diff evidence links in VEX output, showing evidence type, confidence score, and URI in both table and JSON formats. Generates OpenVEX documents from facet drift analysis with deterministic IDs.
Implementation Details
- Command Group:
src/Cli/StellaOps.Cli/Commands/VexGenCommandGroup.cs--VexGenCommandGroup(internal static class)- Sprint: SPRINT_20260105_002_004_CLI (CLI-011 through CLI-015) and SPRINT_20260113_003_002_CLI_vex_evidence_integration
- Uses
IFacetDriftDetector,IFacetSealStore,IVexEvidenceLinkerfrom DI - Generates deterministic IDs via SHA-256 of concatenated content
- Evidence Integration:
IVexEvidenceLinker.GetLinksAsync()fetches evidence links;AttachEvidenceLinksAsync()enriches VEX statements with evidence - Models (defined in same file):
OpenVexDocument(@context, @id, author, timestamp, version, statements)OpenVexStatement(@id, status, timestamp, products, justification, action_statement, evidence)OpenVexEvidence(type, uri, confidence, predicateType, envelopeDigest, validatedSignature, rekorIndex, signer)EvidenceSummary(StatementId, Type, Confidence, EvidenceUri)
- Commands:
stella vex gen --from-drift --image <ref> [--baseline <sealId>] [--output <path>] [--format openvex|csaf] [--status under_investigation|not_affected|affected] [--link-evidence] [--evidence-threshold 0.8] [--show-evidence-uri]-- generate VEX from facet drift with evidence linking
- Output: OpenVEX JSON document to stdout or file; evidence summary table in console with confidence scores
- Exit codes: 0 = success, 1 = error or missing
--from-drift
E2E Test Plan
- Run
stella vex gen --from-drift --image registry/app@sha256:abcand verify OpenVEX JSON output - Run with
--output vex.jsonand verify file written with correct OpenVEX schema (@context, @id, author, timestamp, statements) - Run with
--link-evidenceand verify evidence fields in statements (type, uri, confidence, validatedSignature) - Run with
--evidence-threshold 0.5and verify lower threshold includes more evidence links - Run with
--evidence-threshold 1.0and verify high threshold excludes low-confidence evidence - Run with
--show-evidence-uriand verify full URIs in console evidence summary - Run with
--format csafand verify CSAF-formatted output - Run with
--status not_affectedand verify status field in generated statements - Run with
--baseline <sealId>and verify specific baseline used for drift comparison - Run without
--from-driftand verify error: "--from-drift is required" - Verify deterministic: running same command twice produces identical document IDs