feat(ui): adopt evidence proof components on mounted flows [SPRINT-018]

Wire QuickVerifyDrawer, EvidenceChecklist, ProofChainViewer, and
DsseEnvelopeViewer into evidence-export, triage, and release-orchestrator
evidence-detail surfaces for richer proof verification workflows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
master
2026-03-08 19:25:17 +02:00
parent d6521923fe
commit 7fbf04ab1e
16 changed files with 1015 additions and 31 deletions

View File

@@ -0,0 +1,61 @@
# Orphan Evidence Proof Component Adoption
## Module
Web
## Status
VERIFIED
## Description
Revival of dormant proof-verification widgets (EvidenceChecklistComponent, QuickVerifyDrawerComponent, ProofChainViewerComponent, DsseEnvelopeViewerComponent) by adopting them into already-shipped Evidence, Triage, and Releases flows. The widgets are now reachable from real operator workflows rather than orphan navigation.
## Sprint
SPRINT_20260308_018_FE_orphan_evidence_proof_component_adoption
## Adopted Components and Host Surfaces
### QuickVerifyDrawerComponent
- **evidence-bundles.component.ts**: Opens from bundle verify action, passes bundle ID as artifact ID.
- **replay-controls.component.ts**: Opens from result "Quick Verify" button, passes artifact ID from replay result.
- **evidence-detail.component.ts**: Opens from header "Quick Verify" button, passes content hash as artifact ID.
### EvidenceChecklistComponent
- **vex-decision-modal.component.ts**: New "Required Evidence" section before Review. VexStatus is mapped to checklist status via computed property (`NOT_AFFECTED` -> `not_affected`, `UNDER_INVESTIGATION` -> `under_investigation`, `AFFECTED_*` -> `affected`, `FIXED` -> `fixed`).
### ProofChainViewerComponent
- **provenance-visualization.component.ts**: Maps `ProvenanceNode[]` to `ChainNode[]` via computed property. Filters out unknown-type nodes (finding, advisory). Renders after chain legend section.
- **evidence-detail.component.ts**: Maps gate results + approvals to `ChainNode[]` (SBOM from first artifact, policy from gate results, approval from approvals). Renders in signature tab.
### DsseEnvelopeViewerComponent
- **triage-attestation-detail-modal.component.ts**: Replaces raw JSON section with DSSE envelope viewer. Builds `DsseEnvelope` from raw attestation data with fallback to raw JSON when data is not DSSE-shaped.
- **evidence-detail.component.ts**: Builds `DsseEnvelope` from packet signature data. Renders in signature tab.
## Implementation Details
- **Working directory**: `src/Web/StellaOps.Web`
- **Modified files**:
- `src/Web/StellaOps.Web/src/app/features/evidence-export/evidence-bundles.component.ts`
- `src/Web/StellaOps.Web/src/app/features/evidence-export/replay-controls.component.ts`
- `src/Web/StellaOps.Web/src/app/features/evidence-export/provenance-visualization.component.ts`
- `src/Web/StellaOps.Web/src/app/features/triage/vex-decision-modal.component.ts`
- `src/Web/StellaOps.Web/src/app/features/triage/vex-decision-modal.component.html`
- `src/Web/StellaOps.Web/src/app/features/triage/triage-attestation-detail-modal.component.ts`
- `src/Web/StellaOps.Web/src/app/features/triage/triage-attestation-detail-modal.component.html`
- `src/Web/StellaOps.Web/src/app/features/release-orchestrator/evidence/evidence-detail/evidence-detail.component.ts`
- **New test files**:
- `src/Web/StellaOps.Web/src/app/features/release-orchestrator/evidence/evidence-detail/evidence-detail.component.spec.ts`
- **Updated test files**:
- `src/Web/StellaOps.Web/src/app/features/triage/vex-decision-modal.component.spec.ts`
- `src/Web/StellaOps.Web/src/app/features/triage/triage-attestation-detail-modal.component.spec.ts`
- `src/Web/StellaOps.Web/src/app/features/evidence-export/evidence-bundles.component.spec.ts`
- `src/Web/StellaOps.Web/src/app/features/evidence-export/replay-controls.component.spec.ts`
- `src/Web/StellaOps.Web/src/app/features/evidence-export/provenance-visualization.component.spec.ts`
## Exclusions
- **EvidenceDrawerComponent (EvidencePacketDrawerComponent)**: Already mounted in `evidence-list.component.ts` and `evidence-center-page.component.ts`. No gap found; excluded from this sprint.
- No new top-level routes introduced.
- No second evidence product shell created.
## Verification
- Angular build verified clean on all modified files (pre-existing errors in policy-interop, certificate-inventory, glossary-tooltip are unrelated).
- Focused unit tests cover all computed properties, signal states, and template rendering for each adopted widget.
- Date (UTC): 2026-03-08