3.8 KiB
3.8 KiB
Evidence Thread Browser (Artifact Evidence Lineage)
Module
Web
Status
VERIFIED
Description
Search and inspect canonical evidence records by package URL. The live route uses the shipped EvidenceLocker API only:
/api/v1/evidence/thread?purl=...for the list/search view/api/v1/evidence/thread/{canonicalId}for the detail view
The current route supports PURL search, empty-result handling, missing-detail handling, and back-navigation. Legacy graph/transcript/export affordances are not exposed on the live route because the current API does not provide those capabilities.
Implementation Details
- Feature directory:
src/Web/StellaOps.Web/src/app/features/evidence-thread/ - Routes:
evidence-thread.routes.tsexposes/evidence/threadsand/evidence/threads/:canonicalId - Supported live components:
evidence-thread-list(src/Web/StellaOps.Web/src/app/features/evidence-thread/components/evidence-thread-list/evidence-thread-list.component.ts)evidence-thread-view(src/Web/StellaOps.Web/src/app/features/evidence-thread/components/evidence-thread-view/evidence-thread-view.component.ts)
- Services:
evidence-thread(src/Web/StellaOps.Web/src/app/features/evidence-thread/services/evidence-thread.service.ts)
- Contract note:
- Legacy graph/export/transcript helper components still exist in the feature directory, but they are not part of the supported live route because the current EvidenceLocker API does not return graph, transcript, or export resources.
- Source: Feature matrix scan
E2E Test Plan
- Setup:
- Log in with a user that has appropriate permissions
- Navigate to
/evidence/threads - If positive-path detail data is required, seed or ingest a package URL that exists in EvidenceLocker first
- Core verification:
- Verify the list page renders the PURL search form and instruction state
- Verify searching by PURL issues requests to
/api/v1/evidence/thread?purl=... - Verify empty-result and missing-detail states are handled without runtime errors
- Verify detail back-navigation preserves the originating
purlquery when present
- Edge cases:
- Verify graceful handling when the backend returns
404for an unknown canonical record - Verify responsive layout at different viewport sizes
- Verify accessibility (keyboard navigation, screen reader labels, ARIA attributes)
- Verify graceful handling when the backend returns
Verification
- Run: docs/qa/feature-checks/runs/web/evidence-thread-browser/run-001/
- Tier 0 (source): pass (
tier0-source-check.json) - Tier 1 (build/tests): pass (
tier1-build-check.json) - Tier 2 (behavior): pass (
tier2-e2e-check.json) - Verified on (UTC): 2026-02-10
Recheck (run-003)
- Date (UTC): 2026-02-11T06:16:10Z
- Status: VERIFIED (strict Tier 2 UI replay)
- Tier 2 evidence: docs/qa/feature-checks/runs/web/evidence-thread-browser/run-003/tier2-ui-check.json.
Recheck (2026-03-08 live frontdoor)
- Date (UTC): 2026-03-08T20:49:05Z
- Status: VERIFIED for the shipped EvidenceLocker contract on
https://stella-ops.local - Live evidence:
src/Web/StellaOps.Web/output/playwright/live-frontdoor-auth-report.jsonsrc/Web/StellaOps.Web/output/playwright/live-frontdoor-changed-surfaces.json
- Live behavior confirmed:
/evidence/threadsrenders the PURL search workflow without console/runtime failures- Searching
pkg:npm/example@1.0.0produces the expected empty-result state /evidence/threads/missing-demo-canonical?purl=pkg:npm/example@1.0.0renders the expected missing-detail state andBack to Searchreturns to the scoped search view
- Environment note:
- The compose demo stack currently has no seeded EvidenceLocker thread rows, so live verification covers the supported empty-result and missing-detail flows. Positive-path detail normalization remains covered by the focused frontend tests for the route and service.