Some checks failed
		
		
	
	Docs CI / lint-and-preview (push) Has been cancelled
				
			- Implemented PolicyDslValidator with command-line options for strict mode and JSON output. - Created PolicySchemaExporter to generate JSON schemas for policy-related models. - Developed PolicySimulationSmoke tool to validate policy simulations against expected outcomes. - Added project files and necessary dependencies for each tool. - Ensured proper error handling and usage instructions across tools.
		
			
				
	
	
		
			196 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # StellaOps Console - SBOM Explorer
 | |
| 
 | |
| > **Audience:** Console UX, SBOM Service Guild, enablement teams, customer onboarding.  
 | |
| > **Scope:** Catalog listing, component detail, graph overlays, exports, performance hints, and offline behaviour for the SBOM Explorer that ships in Sprint 23.
 | |
| 
 | |
| The SBOM Explorer lets operators inspect software bills of materials collected by Scanner and normalised by the SBOM Service. It provides tenant-scoped catalogs, usage overlays, provenance-aware graphs, and deterministic export paths that align with CLI workflows.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 1. Access and prerequisites
 | |
| 
 | |
| - **Routes:** `/console/sbom` (catalog) and `/console/sbom/:digest` (detail).  
 | |
| - **Scopes:** `sbom.read` (required), `sbom.export` for large export jobs, `findings.read` to open explain drawers, `policy.read` to view overlay metadata.  
 | |
| - **Feature flags:** `sbomExplorer.enabled` (default true when SBOM Service v3 API is enabled) and `graph.overlays.enabled` for Cartographer-backed overlays.  
 | |
| - **Tenant scoping:** All queries include `tenant` tokens; switching tenants triggers catalog refetch and clears cached overlays.  
 | |
| - **Data dependencies:** Requires SBOM Service 3.1+ with Cartographer overlays and Policy Engine explain hints enabled.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 2. Layout overview
 | |
| 
 | |
| ```
 | |
| +-----------------------------------------------------------------------+
 | |
| | Header: Tenant badge - global filters - offline indicator - actions  |
 | |
| +-----------------------------------------------------------------------+
 | |
| | Left rail: Saved views - pinned tags - export queue status           |
 | |
| +-----------------------------------------------------------------------+
 | |
| | Catalog table (virtualised)                                          |
 | |
| |  - Columns: Image digest - Source - Scan timestamp - Policy verdict  |
 | |
| |  - Badges: Delta SBOM, Attested, Offline snapshot                    |
 | |
| +-----------------------------------------------------------------------+
 | |
| | Detail drawer or full page tabs (Inventory | Usage | Components |    |
 | |
| | Overlays | Explain | Exports)                                        |
 | |
| +-----------------------------------------------------------------------+
 | |
| ```
 | |
| 
 | |
| The catalog and detail views reuse the shared command palette, context chips, and SSE status ticker described in `/docs/ui/navigation.md`.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 3. Catalog view
 | |
| 
 | |
| | Feature | Description |
 | |
| |---------|-------------|
 | |
| | **Virtual table** | Uses Angular CDK virtual scroll to render up to 10,000 records per tenant without layout jank. Sorting and filtering are client-side for <= 20k rows; the UI upgrades to server-side queries automatically when more records exist. |
 | |
| | **Preset segments** | Quick toggles for `All`, `Recent (7 d)`, `Delta-ready`, `Attested`, and `Offline snapshots`. Each preset maps to saved view tokens for CLI parity. |
 | |
| | **Search** | Global search field supports image digests, repository tags, SBOM IDs, and component PURLs. Search terms propagate to the detail view when opened. |
 | |
| | **Badges** | - `Delta` badge indicates SBOM produced via delta mode (layers reuse).<br>- `Attested` badge links to Attestor proof and Rekor record.<br>- `Snapshot` badge shows offline import hash.<br>- `Policy` badge references last policy verdict summary. |
 | |
| | **Bulk actions** | Multi-select rows to stage export jobs, trigger async explain generation, or copy CLI commands. Actions enforce per-tenant rate limits and show authority scopes in tooltips. |
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 4. Detail tabs
 | |
| 
 | |
| ### 4.1 Inventory tab
 | |
| 
 | |
| - Default view summarising all components with columns for package name (PURL), version, supplier, license, size, and counts of referencing layers.  
 | |
| - Filters: severity, ecosystem (OS, NPM, PyPI, Maven, Go, NuGet, Rust, containers), usage flag (true/false), package tags.  
 | |
| - Sorting: by severity (desc), version (asc), supplier.  
 | |
| - Cell tooltips reference Concelier advisories and Policy Engine findings when available.  
 | |
| - Total component count, unique suppliers, and critical severity counts appear in the header cards.
 | |
| 
 | |
| ### 4.2 Usage tab
 | |
| 
 | |
| - Focuses on runtime usage (EntryTrace, runtime sensors, allow lists).  
 | |
| - Columns include process names, entry points, and `usedByEntrypoint` flags.  
 | |
| - Grouping: by entry point, by package, or by namespace (Kubernetes).  
 | |
| - Highlights mismatches between declared dependencies and observed usage for drift detection.
 | |
| 
 | |
| ### 4.3 Components tab
 | |
| 
 | |
| - Deep dive for a single component selected from Inventory or Usage.  
 | |
| - Shows provenance timeline (introduced in layer, modified, removed), file paths, cryptographic hashes, and linked evidence (DSSE, Attestor bundles).  
 | |
| - Links to CLI commands: `stella sbom component show <digest> <purl>` and `stella sbom component export`.  
 | |
| - Drawer supports multi-component comparison through tabbed interface.
 | |
| 
 | |
| ### 4.4 Overlays tab
 | |
| 
 | |
| - Displays Cartographer overlays: vulnerability overlays (policy verdicts), runtime overlays (process traces), and vendor advisories.  
 | |
| - Each overlay card lists source, generation timestamp, precedence, and staleness relative to tenant SLA.  
 | |
| - Toggle overlays on/off to see impact on component status; UI does not mutate canonical SBOM, it only enriches the view.  
 | |
| - Graph preview button opens force-directed component graph (limited to <= 500 nodes) with filters for dependency depth and relationship type.  
 | |
| - Overlay metadata includes the CLI parity snippet: `stella sbom overlay apply --overlay <id> --digest <digest>`.
 | |
| 
 | |
| ### 4.5 Explain tab
 | |
| 
 | |
| - Integrates Policy Engine explain drawer.  
 | |
| - Shows rule hits, VEX overrides, and evidence per component.  
 | |
| - Provides "Open in Findings" link that preserves tenant and filters.
 | |
| 
 | |
| ### 4.6 Exports tab
 | |
| 
 | |
| - Lists available exports (CycloneDX JSON, CycloneDX Protobuf, SPDX JSON, SPDX Tag-Value, Delta bundle, Evidence bundle).  
 | |
| - Each export entry shows size, hash (SHA-256), format version, and generation time.  
 | |
| - Download buttons respect RBAC and offline quotas; CLI callouts mirror `stella sbom export`.  
 | |
| - "Schedule export" launches async job for large bundles; job status integrates with `/console/downloads`.  
 | |
| - Includes copy-to-clipboard path for offline transfers (`/offline-kits/export/<tenant>/<digest>/<format>`).
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 5. Filters and presets
 | |
| 
 | |
| | Filter | Applies to | Notes |
 | |
| |--------|------------|-------|
 | |
| | **Severity** | Inventory, Overlays, Explain | Uses Policy Engine severity buckets and KEV flag. |
 | |
| | **Ecosystem** | Inventory, Usage | Multi-select list with search; maps to package type derived from PURL. |
 | |
| | **License** | Inventory | Groups by SPDX identifiers; warns on copyleft obligations. |
 | |
| | **Supplier** | Inventory, Components | Autocomplete backed by SBOM metadata. |
 | |
| | **Tags** | Inventory, Usage | Tags provided by Scanner or user-defined metadata. |
 | |
| | **Component search** | Components, Overlays | Accepts PURL or substring; retains highlight when switching tabs. |
 | |
| | **Snapshot** | Catalog | Filters to SBOMs sourced from Offline Kit or local import. |
 | |
| | **Attested only** | Catalog, Exports | Limits to SBOMs signed by Attestor; displays Rekor badge. |
 | |
| 
 | |
| Saved views store combinations of these filters and expose command palette shortcuts (`Cmd+1-9 / Ctrl+1-9`).
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 6. Graph overlays and cartography
 | |
| 
 | |
| - Graph view is powered by Cartographer projections (tenant-scoped graph snapshots).  
 | |
| - Supported overlays:  
 | |
|   - **Dependency graph** (default) - nodes represent components, edges represent dependencies with direction (introducer -> introduced).  
 | |
|   - **Runtime call graph** - optional overlay layering process calls on top of dependencies.  
 | |
|   - **Vulnerability overlay** - colours nodes by highest severity and outlines exploited components.  
 | |
| - Controls: depth slider (1-6), include transitive flag, hide dev dependencies toggle, highlight vendor-specified critical paths.  
 | |
| - Export options: GraphML, JSON Lines, and screenshot capture (requires `graph.export`).  
 | |
| - Performance guardrails: overlays warn when node count exceeds 2,000; user can queue background job to render static graph for download instead.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 7. Exports and automation
 | |
| 
 | |
| - **Instant exports:** Inline downloads for CycloneDX JSON/Protobuf (<= 25 MB) and SPDX JSON (<= 25 MB).  
 | |
| - **Async exports:** Larger bundles stream through the download manager with resume support. UI polls `/console/downloads` every 15 seconds while export is in progress.  
 | |
| - **CLI parity:** Each export card displays the equivalent CLI command and environment variables (proxy, offline).  
 | |
| - **Compliance metadata:** Export manifests include SBOM ID, component count, hash, signature state, and policy verdict summary so auditors can validate offline.  
 | |
| - **Automation hooks:** Webhook button copies the `/downloads/hooks/subscribe` call for integration with CI pipelines.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 8. Performance tips
 | |
| 
 | |
| - Virtual scroll keeps initial render under 70 ms for 10k rows; server-side pagination engages beyond that threshold.  
 | |
| - Graph overlay rendering uses Web Workers to keep main thread responsive; heavy layouts show "Background layout in progress" banner.  
 | |
| - SSE updates (new SBOM ready) refresh header cards and prepend rows without full table redraw.  
 | |
| - Prefetching: opening a detail drawer preloads overlays and exports concurrently; these requests cancel automatically if the user navigates away.  
 | |
| - Local cache (IndexedDB) stores last viewed SBOM detail for each tenant (up to 20 entries). Cache invalidates when new merge hash is observed.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 9. Offline and air-gap behaviour
 | |
| 
 | |
| - Catalog reads from Offline Kit snapshot if gateway is in sealed mode; offline banner lists snapshot ID and staleness.  
 | |
| - Overlays limited to data included in snapshot; missing overlays show guidance to import updated Cartographer package.  
 | |
| - Exports queue locally and generate tarballs ready to copy to removable media.  
 | |
| - CLI parity callouts switch to offline examples (using `stella sbom export --offline`).  
 | |
| - Tenants unavailable in snapshot are hidden from the tenant picker to prevent inconsistent views.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 10. Screenshot coordination
 | |
| 
 | |
| - Placeholder images:  
 | |
|   - ``  
 | |
|   - ``  
 | |
| - Coordinate with Console Guild to capture updated screenshots (dark and light theme) once Sprint 23 UI stabilises. Track follow-up in Console Guild thread `#console-screenshots` dated 2025-10-26.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 11. References
 | |
| 
 | |
| - `/docs/ui/console-overview.md` - navigation shell, tenant model, filters.  
 | |
| - `/docs/ui/navigation.md` - command palette, deep-link schema.  
 | |
| - `/docs/ui/downloads.md` - download queue, manifest parity, offline export handling.  
 | |
| - `/docs/security/console-security.md` - scopes, DPoP, CSP.  
 | |
| - `/docs/cli-vs-ui-parity.md` - CLI equivalence matrix.  
 | |
| - `/docs/architecture/console.md` (pending) - component data flows.  
 | |
| - `/docs/architecture/overview.md` - high-level module relationships.  
 | |
| - `/docs/ingestion/aggregation-only-contract.md` - provenance and guard rails.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 12. Compliance checklist
 | |
| 
 | |
| - [ ] Catalog table and detail tabs documented with columns, filters, and presets.  
 | |
| - [ ] Overlay behaviour describes Cartographer integration and CLI parity.  
 | |
| - [ ] Export section includes instant vs async workflow and compliance metadata.  
 | |
| - [ ] Performance considerations align with UI benchmarks (virtual scroll, workers).  
 | |
| - [ ] Offline behaviour captured for catalog, overlays, exports.  
 | |
| - [ ] Screenshot placeholders and coordination notes recorded with Console Guild follow-up.  
 | |
| - [ ] All referenced docs verified and accessible.
 | |
| 
 | |
| ---
 | |
| 
 | |
| *Last updated: 2025-10-26 (Sprint 23).* 
 |