2.9 KiB
2.9 KiB
Explainability with Proof Extracts
Module
Policy
Status
IMPLEMENTED
Description
Verdict rationale rendering with full explainability system, reachability explanation UI with "why" drawer for interactive proof browsing.
Implementation Details
- VerdictRationaleRenderer:
src/Policy/__Libraries/StellaOps.Policy.Explainability/VerdictRationaleRenderer.cs(sealed class implementsIVerdictRationaleRenderer)- 4-line template rendering with structured evidence, policy clause, attestations, and decision sections
- Evidence section includes reachability details: vulnerable function symbol, entry point, path summary
- Attestation section references: path witnesses (reachability proofs), VEX statements, provenance attestations
- Each attestation includes Id, Type, Digest, and Summary for browsing
- Content-addressed RationaleId (
rat:sha256:{hash}) enables proof linking - Multi-format output: PlainText, Markdown, canonical JSON (RFC 8785)
- VerdictRationale model:
src/Policy/__Libraries/StellaOps.Policy.Explainability/VerdictRationale.csRationaleEvidencewith ComponentIdentity (PURL, name, version, ecosystem) and ReachabilityDetail (VulnerableFunction, EntryPoint, PathSummary)RationaleAttestationswith PathWitness (reachability proof reference), VexStatements (list of VEX attestation references), ProvenanceRationaleInputDigestswith VerdictDigest, PolicyDigest, EvidenceDigest for full proof chain
- PolicyExplainTrace:
src/Policy/StellaOps.Policy.Engine/Materialization/PolicyExplainTrace.cs-- trace objects for materialized explanations - Counterfactual paths:
src/Policy/__Libraries/StellaOps.Policy/Counterfactuals/CounterfactualEngine.cs-- "what would fix this" paths linked to rationale - Verdict attestation:
src/Policy/StellaOps.Policy.Engine/Attestation/VerdictAttestationService.cs-- DSSE-signed verdicts that rationale references
E2E Test Plan
- Render verdict rationale for finding with reachability proof; verify Evidence section includes vulnerable function symbol and entry point
- Render rationale with path witness attestation; verify Attestations.PathWitness.Id and Digest are populated
- Render rationale with 3 VEX statements; verify all 3 appear in Attestations.VexStatements
- Render rationale with provenance attestation; verify Provenance.Type and Summary are set
- Verify RenderMarkdown output includes clickable attestation IDs in Attestations section
- Verify InputDigests.VerdictDigest matches the actual verdict's content digest
- Verify InputDigests.EvidenceDigest matches the evidence bundle digest
- Render rationale for finding without reachability; verify Evidence.Reachability is null and FormattedText omits reachability details
- Verify RenderJson output can be re-parsed and matches original rationale structure
- Verify content-addressed RationaleId is stable across serialization roundtrips