- Add RpmVersionComparer for RPM version comparison with epoch, version, and release handling. - Introduce DebianVersion for parsing Debian EVR (Epoch:Version-Release) strings. - Create ApkVersion for parsing Alpine APK version strings with suffix support. - Define IVersionComparator interface for version comparison with proof-line generation. - Implement VersionComparisonResult struct to encapsulate comparison results and proof lines. - Add tests for Debian and RPM version comparers to ensure correct functionality and edge case handling. - Create project files for the version comparison library and its tests.
7.6 KiB
Explainable Triage Workflows - Implementation Plan
Executive Summary
This document outlines the implementation plan for delivering Explainable Triage Workflows as defined in the product advisory dated 21-Dec-2025. The capability set enables vulnerability-first, policy-backed, reachability-informed verdicts with full explainability and auditability.
Vision
Every vulnerability finding must resolve to a policy-backed, reachability-informed, runtime-corroborated verdict that is exportable as one signed attestation attached to the built artifact.
Current State Analysis
Already Implemented (75%)
| Capability | Implementation | Completeness |
|---|---|---|
| Reachability analysis | 10 language analyzers, binary, runtime | 95% |
| VEX processing | OpenVEX, CSAF, CycloneDX with lattice | 90% |
| Explainability | ExplainTrace with rule steps | 95% |
| Evidence generation | Path witnesses, rich graphs | 90% |
| Audit trails | Immutable ledger with chain integrity | 85% |
| Policy gates | 4-stage gate system | 95% |
| Attestations | 7 predicate types with DSSE | 90% |
| Runtime capture | eBPF, dyld, ETW | 85% |
Already Planned (15%)
| Capability | Sprint | Status |
|---|---|---|
| Risk Verdict Attestation | SPRINT_4100_0003_0001 | TODO |
| OCI Attachment | SPRINT_4100_0003_0002 | TODO |
| Counterfactuals | SPRINT_4200_0002_0005 | TODO |
| Replay Engine | SPRINT_4100_0002_0002 | TODO |
| Knowledge Snapshot | SPRINT_4100_0002_0001 | TODO |
| Audit Pack Export | SPRINT_5100_0006_0001 | TODO |
| Unknown Budgets | SPRINT_4100_0001_0002 | TODO |
Net New Gaps (10%)
| Gap | Sprint | Story Points |
|---|---|---|
| Unified Confidence Model | 7000.0002.0001 | 13 |
| Vulnerability-First UX API | 7000.0002.0002 | 13 |
| Evidence Graph API | 7000.0003.0001 | 8 |
| Reachability Mini-Map | 7000.0003.0002 | 5 |
| Runtime Timeline | 7000.0003.0003 | 5 |
| Progressive Fidelity | 7000.0004.0001 | 13 |
| Evidence Size Budgets | 7000.0004.0002 | 8 |
| Quality KPIs | 7000.0005.0001 | 8 |
Implementation Roadmap
Phase 1: Foundation (Existing + New)
Objective: Establish core verdict and confidence infrastructure.
Sprints:
- SPRINT_4100_0003_0001: Risk Verdict Attestation
- SPRINT_4100_0002_0001: Knowledge Snapshot Manifest
- SPRINT_7000_0002_0001: Unified Confidence Model
- SPRINT_7000_0004_0001: Progressive Fidelity (parallel)
- SPRINT_7000_0004_0002: Evidence Budgets (parallel)
Key Deliverables:
RiskVerdictAttestationmodel with PASS/FAIL/PASS_WITH_EXCEPTIONS/INDETERMINATEConfidenceScorewith 5-factor breakdownFidelityLevelenum with Quick/Standard/Deep modesEvidenceBudgetwith retention tiers
Phase 2: UX Layer
Objective: Deliver vulnerability-first presentation layer.
Sprints:
- SPRINT_7000_0002_0002: Vulnerability-First UX API
Key Deliverables:
FindingSummaryResponsewith verdict chip, confidence, one-linerProofBadges(Reachability, Runtime, Policy, Provenance)GET /api/v1/findingslist endpointGET /api/v1/findings/{id}/summarydetail endpoint
Phase 3: Visualization APIs
Objective: Enable evidence exploration and click-through.
Sprints (parallelizable):
- SPRINT_7000_0003_0001: Evidence Graph API
- SPRINT_7000_0003_0002: Reachability Mini-Map API
- SPRINT_7000_0003_0003: Runtime Timeline API
Key Deliverables:
GET /api/v1/findings/{id}/evidence-graphGET /api/v1/findings/{id}/reachability-mapGET /api/v1/findings/{id}/runtime-timeline
Phase 4: Metrics & Observability
Objective: Track quality KPIs for continuous improvement.
Sprints:
- SPRINT_7000_0005_0001: Quality KPIs Tracking
Key Deliverables:
TriageQualityKpismodelGET /api/v1/metrics/kpisdashboard endpoint- Trend tracking over time
Architecture Changes
New Libraries
src/
├── Policy/
│ └── __Libraries/
│ └── StellaOps.Policy.Confidence/ # NEW: Confidence model
│ ├── Models/
│ ├── Services/
│ └── Configuration/
├── Scanner/
│ └── __Libraries/
│ └── StellaOps.Scanner.Orchestration/ # NEW: Fidelity orchestration
│ └── Fidelity/
├── Findings/
│ └── StellaOps.Findings.WebService/ # EXTEND: UX APIs
│ ├── Contracts/
│ ├── Services/
│ └── Endpoints/
├── Evidence/ # NEW: Evidence management
│ └── StellaOps.Evidence/
│ ├── Budgets/
│ └── Retention/
└── Metrics/ # NEW: KPI tracking
└── StellaOps.Metrics/
└── Kpi/
Database Changes
| Table | Purpose |
|---|---|
confidence_factors |
Store factor breakdown per verdict |
evidence_items |
Track evidence with size and tier |
kpi_counters |
Real-time KPI counters |
kpi_snapshots |
Daily KPI snapshots |
API Surface
| Endpoint | Method | Purpose |
|---|---|---|
/api/v1/findings |
GET | List findings with summaries |
/api/v1/findings/{id}/summary |
GET | Detailed finding summary |
/api/v1/findings/{id}/evidence-graph |
GET | Evidence graph |
/api/v1/findings/{id}/reachability-map |
GET | Reachability mini-map |
/api/v1/findings/{id}/runtime-timeline |
GET | Runtime timeline |
/api/v1/scan/analyze |
POST | Analyze with fidelity level |
/api/v1/scan/findings/{id}/upgrade |
POST | Upgrade fidelity |
/api/v1/metrics/kpis |
GET | Quality KPIs |
Non-Negotiables
From the advisory:
-
Vulnerability-first UX: Users start from CVE/finding and immediately see applicability, reachability, runtime corroboration, and policy rationale.
-
Single canonical verdict artifact: One built-in, signed verdict attestation per subject (OCI digest), replayable.
-
Deterministic evidence: Evidence objects are content-hashed and versioned.
-
Unknowns are first-class: "Unknown reachability/runtime/config" is not hidden; it is budgeted and policy-controlled.
Quality KPIs
| KPI | Target | Measurement |
|---|---|---|
| % non-UNKNOWN reachability | >80% | Weekly |
| % runtime corroboration | >50% (where sensor deployed) | Weekly |
| Explainability completeness | >95% | Weekly |
| Replay success rate | >99% | Weekly |
| Median time to verdict | <5 min | Daily |
Risk Management
| Risk | Impact | Mitigation |
|---|---|---|
| Confidence model complexity | High | Start simple (3 factors), iterate |
| Deep analysis performance | Medium | Progressive fidelity with timeouts |
| Evidence storage growth | Medium | Budget enforcement + tier pruning |
| API backward compatibility | Low | Versioned endpoints |
Definition of Done
Per advisory, a release is "done" only if:
- Build produces OCI artifact with attached signed verdict attestation
- Each verdict is explainable (reason steps + proof pointers)
- Reachability evidence stored as reproducible subgraph (or explicitly UNKNOWN with reason)
- Replay verification reproduces same verdict with pinned inputs
- UX starts from vulnerabilities and links directly to proofs and audit export
References
- Advisory:
docs/product-advisories/archived/21-Dec-2025 - Designing Explainable Triage Workflows.md - Sprint Summary:
docs/implplan/SPRINT_7000_SUMMARY.md - Individual Sprints:
docs/implplan/SPRINT_7000_*.md
Revision History
| Date | Change | Author |
|---|---|---|
| 2025-12-22 | Initial implementation plan | Claude |