4.8 KiB
4.8 KiB
Proof Studio UX (Explainable Confidence Scoring)
Module
Policy
Status
IMPLEMENTED
Description
Backend confidence calculation, verdict rationale rendering, and counterfactual engine exist. The advisory identified frontend proof studio UI as a remaining gap.
What's Implemented
- VerdictRationaleRenderer:
src/Policy/__Libraries/StellaOps.Policy.Explainability/VerdictRationaleRenderer.cs- 4-line rationale template: Evidence, Policy Clause, Attestations, Decision
- Multi-format output: RenderPlainText, RenderMarkdown, RenderJson (RFC 8785 canonical)
- Content-addressed RationaleId:
rat:sha256:{hash}
- VerdictRationale model:
src/Policy/__Libraries/StellaOps.Policy.Explainability/VerdictRationale.cs- Structured rationale: VerdictReference, RationaleEvidence (ComponentIdentity, ReachabilityDetail), RationalePolicyClause, RationaleAttestations (AttestationReference list), RationaleDecision (MitigationGuidance)
- RationaleInputDigests for deterministic replay
- IVerdictRationaleRenderer:
src/Policy/__Libraries/StellaOps.Policy.Explainability/IVerdictRationaleRenderer.cs- Interface + VerdictRationaleInput record
- CounterfactualEngine:
src/Policy/__Libraries/StellaOps.Policy/Counterfactuals/CounterfactualEngine.csComputeAsync(finding, verdict, document, scoringConfig, options)-> CounterfactualResult- 5 counterfactual path types: VexStatus, Exception, Reachability, VersionUpgrade, CompensatingControl
- Each path: type, description, conditions (field/current/required), estimated effort (1-5), actor, action URI
- Policy simulation: creates simulated findings with modified VEX/reachability tags and re-evaluates via
PolicyEvaluation.EvaluateFinding() - Effort estimation: severity-based for exceptions (Critical=5, High=4, Medium=3, Low=2)
- CounterfactualResult:
src/Policy/__Libraries/StellaOps.Policy/Counterfactuals/CounterfactualResult.cs- AlreadyPassing / Blocked factory methods
- RecommendedPath (lowest effort), HasPaths
- 7 CounterfactualTypes: VexStatus, Exception, Reachability, VersionUpgrade, PolicyChange, ComponentRemoval, CompensatingControl
- CounterfactualCondition: Field, CurrentValue, RequiredValue, IsMet
- ScoreExplanation:
src/Policy/__Libraries/StellaOps.Policy/Scoring/ScoreExplanation.cs- Per-factor explanation: Factor, Value (0-100), Reason, ContributingDigests
- ScoreExplainBuilder: AddReachability, AddEvidence, AddProvenance, AddBaseSeverity
- Deterministic output (sorted by factor name + digest)
- DecayedConfidenceCalculator:
src/Policy/__Libraries/StellaOps.Policy.Determinization/Scoring/DecayedConfidenceCalculator.cs- Exponential confidence decay for time-based scoring
What's Missing
- Proof graph visualization: No visual representation of the full evidence graph (ProofGraphNode/Edge/Path) in the UI -- the proof-studio has confidence breakdown but not the graph
- Interactive counterfactual explorer: CounterfactualEngine exists in backend and
what-if-slidercomponent exists in proof-studio, but the full interactive "toggle what-if scenarios" UX may not be fully wired to the backend - Score breakdown dashboard: ScoreExplanation data exists but no dashboard visualizing per-factor contributions with charts
- Confidence timeline: DecayedConfidenceCalculator computes decay but no UI showing confidence over time
Additional Implementation Found
- Proof Studio Container:
src/Web/StellaOps.Web/src/app/features/proof-studio/components/proof-studio-container/proof-studio-container.component.ts-- main container component - Confidence Breakdown:
src/Web/StellaOps.Web/src/app/features/proof-studio/components/confidence-breakdown/confidence-breakdown.component.ts-- per-factor confidence visualization - Confidence Factor Chip:
src/Web/StellaOps.Web/src/app/features/proof-studio/components/confidence-factor-chip/confidence-factor-chip.component.ts - What-If Slider:
src/Web/StellaOps.Web/src/app/features/proof-studio/components/what-if-slider/what-if-slider.component.ts-- counterfactual slider control - Proof Studio Service:
src/Web/StellaOps.Web/src/app/features/proof-studio/services/proof-studio.service.ts-- API service - Proof Trace Model:
src/Web/StellaOps.Web/src/app/features/proof-studio/models/proof-trace.model.ts
Implementation Plan
- Wire what-if-slider to CounterfactualEngine backend API
- Add proof graph visualization using D3.js or similar for evidence graph rendering
- Add confidence timeline chart using DecayedConfidenceCalculator data
- Verify proof-studio-container is fully wired to VerdictRationale API endpoint
Related Documentation
- Explainability library:
src/Policy/__Libraries/StellaOps.Policy.Explainability/ - Counterfactuals:
src/Policy/__Libraries/StellaOps.Policy/Counterfactuals/ - Score explanations:
src/Policy/__Libraries/StellaOps.Policy/Scoring/ScoreExplanation.cs