2.9 KiB
2.9 KiB
VEX Override Predicate System (Signed Justifications with Proofs)
Module
Attestor
Status
IMPLEMENTED
Description
Full VEX override predicate system with builder, parser, serialization, validation, decision models, evidence references, and tool info. Supports "not_affected" claims with structured proof bundles and signed justifications.
Implementation Details
- VEX Override Predicate:
src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/VexOverride/VexOverridePredicate.cs-- data model for VEX override predicates containing decision, justification, evidence, and tool metadata. - VEX Override Decision:
VexOverride/VexOverrideDecision.cs-- decision model with status (not_affected, affected, fixed), justification text, approver identity, and decision timestamp. - VEX Override Predicate Builder:
VexOverride/VexOverridePredicateBuilder.cs(with.Build,.Serialize,.WithMethods) -- fluent builder:.WithStatus(),.WithJustification(),.WithEvidence(),.WithToolInfo()..Buildfinalizes the predicate,.Serializeproduces canonical JSON. - VEX Override Predicate Parser:
VexOverride/VexOverridePredicateParser.cs(with.DecisionValidation,.ExtractMetadata,.FieldValidation,.Helpers,.ParsePredicate,.Validation) -- comprehensive parser with multi-layer validation:.ParsePredicateextracts the predicate,.DecisionValidationvalidates decision semantics,.FieldValidationvalidates required fields,.ExtractMetadataextracts metadata. - Evidence Reference:
VexOverride/EvidenceReference.cs-- reference to supporting evidence (type, URI, digest, description). - Tool Info:
VexOverride/ToolInfo.cs-- information about the tool/human that authored the override (name, version, vendor). - Tests:
__Tests/StellaOps.Attestor.StandardPredicates.Tests/VexOverride/
E2E Test Plan
- Build a VEX override via
VexOverridePredicateBuilder.WithStatus("not_affected").WithJustification("Vulnerable function not in call path").WithEvidence(ref).Build()and verify the predicate is complete - Serialize the predicate via
.Serializeand verify canonical JSON output - Parse the serialized JSON via
VexOverridePredicateParser.ParsePredicateand verify round-trip fidelity for all fields - Validate decision semantics: create a not_affected override without justification and verify
.DecisionValidationrejects it - Validate field completeness: create a predicate missing the tool info and verify
.FieldValidationreports the missing field - Create an override with 3 evidence references (scan report, backport proof, manual review) and verify all are serialized/parsed
- Build an override with status="fixed" and verify no justification is required (fixed status does not require justification)
- Parse a malformed VEX override (invalid JSON) and verify the parser returns structured errors via
.Validation