Files
git.stella-ops.org/docs/features/checked/policy/proof-studio-ux.md
2026-02-14 09:11:48 +02:00

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.cs
    • ComputeAsync(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-slider component 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
  • 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