Pack 7 — Security (menu + every screen graph + ASCII mocks; keep the main IA intact)

Security stays a root menu. This pack reorganizes Security pages to be release/bundle aware, surfaces SBOM findings + hybrid reachability (build / image-Dover / runtime) as second-class, and adds clear links to Nightly Ops Report + Integrations health when data is stale.


1) Security menu graph (Mermaid)

flowchart TD
  SEC[Security] --> SEC_OV[Overview]
  SEC --> SEC_FIND[Findings]
  SEC --> SEC_VULN[Vulnerabilities]
  SEC --> SEC_VEX[VEX Hub]
  SEC --> SEC_EXC[Exceptions]
  SEC --> SEC_COV[Coverage & Analytics]
  SEC --> SEC_GRAPH[SBOM Graph (Beta)]

  SEC_FIND --> SEC_FIND_DETAIL[Finding Detail]
  SEC_VULN --> SEC_VULN_DETAIL[Vulnerability Detail (CVE)]
  SEC_VEX --> SEC_VEX_DETAIL[VEX Statement Detail]
  SEC_EXC --> SEC_EXC_DETAIL[Exception Detail / Request]

Reachability (Build / Image-Dover / Runtime) is not a root product menu; it is embedded as a first-visible widget in Security Overview and a first-class facet/column in Findings/Vulnerabilities (i.e., second-class across the product, not buried).


2) Security → Overview

Previously

Now (Redesign)

Why changed

StellaOps is about release/hotpatch governance + auditable decisions. Security Overview must answer in 10 seconds:


Screen graph (Mermaid)

flowchart TD
  A[Security Overview] --> B[Security Findings (filtered)]
  A --> C[Vulnerabilities (filtered)]
  A --> D[VEX Hub]
  A --> E[Exceptions]
  A --> F[Coverage & Analytics]
  A --> G[Operations: Nightly Ops Report]
  A --> H[Integrations: Security Data Sources]
  A --> I[Release Control: Bundle Organizer / Hotfix]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ OVERVIEW                                                         [Run Scan]         │
│ Formerly: Security ▸ Overview                                                                    │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Scope: Region ▾ (All)   Environment ▾ (All)   Time ▾ (Last 7d)                                  │
│ Data Health: CVE Feeds  OSV: OK  | NVD: DOWN  → [Open Nightly Ops Report] [Open Integrations]   │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ POSTURE (hybrid reachability aware)                                                             │
│ Critical (Reachable):  3 envs  | High (Reachable): 6 envs  | Medium: 12 envs                    │
│ Reachability sources coverage: Build 92% | Image/Dover 96% | Runtime 61%                         │
│ SBOM freshness: Images scanned <24h: 88%  | Runtime inventory <24h: 54%                          │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ WHERE THE RISK IS (Region → Env)                                                                │
│ - eu-west ▸ prod-eu        Critical reachable: 5   (Top: log4j, openssl)   [View Findings]      │
│ - us-east ▸ staging-us     Critical reachable: 2   (Top: curl)              [View Findings]      │
│ - us-east ▸ prod-us        High reachable: 7       (Top: glibc)             [View Findings]      │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ VEX COVERAGE                                    EXCEPTIONS                                      │
│ Findings w/ VEX: 14  | Awaiting VEX: 6          Active: 2   Pending: 1   Expiring<14d: 1        │
│ [Open VEX Hub]                                   [Open Exceptions]                               │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ RELEASE IMPACT                                                                                  │
│ Hotfix candidates (bundles/releases):                                                           │
│ - Bundle: api-gateway@v2.1.0  (prod-eu)  Critical reachable: 3  [Open Bundle]                   │
│ - Bundle: user-service@v3.0.0-rc1        High reachable: 4      [Open Bundle]                   │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

3) Security → Findings

Previously

Now (Redesign)

Why changed

Reachability is part of “what is exploitable for us” and must not be buried. Also, findings must route to Release Bundles and evidence.


Screen graph (Mermaid)

flowchart TD
  A[Security Findings] --> B[Finding Detail]
  A --> C[Vulnerability Detail (CVE)]
  A --> D[VEX Hub (filtered by CVE)]
  A --> E[Exceptions (filtered)]
  A --> F[Release Control: Bundle Organizer (filtered)]
  A --> G[Operations: Nightly Ops Report (data health)]
  A --> H[Evidence & Audit: Proof Chain (for decision)]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ FINDINGS                                                          [Export CSV]      │
│ Formerly: Security ▸ Findings                                                                     │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Filters: Severity ▾  Hybrid Reachable ▾  Reach Source ▾(Any/Build/Image/Runtime)  VEX ▾         │
│         Region ▾  Environment ▾  Bundle/Release ▾  Time ▾                                       │
│ Banner: NVD feed stale → reachability/score may be incomplete  [Open Nightly Ops Report]        │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ CVE        Package     Sev  CVSS  Hybrid  Build  Image  Runtime  VEX     Bundle Impact   First │
│-------------------------------------------------------------------------------------------------│
│ CVE-XXXX   openssl     CRIT 9.8   YES     NO     YES    YES      Await   api-gateway@2.1.0  2d │
│ CVE-YYYY   log4j       CRIT 10.0  YES     YES    YES    NO       NotAff  user-svc@3.0.0    1d │
│ CVE-ZZZZ   curl        HIGH 8.1   NO      NO     NO     NO       -       none            7d  │
│ Actions per row: [View Finding] [View CVE] [Request Exception] [Open Bundle]                  │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

4) Security → Finding Detail (new explicit drill-down)

Previously

Now

Why changed

A finding needs an auditable explanation page:


Screen graph (Mermaid)

flowchart TD
  A[Finding Detail] --> B[Vulnerability Detail (CVE)]
  A --> C[VEX Statement Detail]
  A --> D[Exception Detail / Request]
  A --> E[Release Control: Bundle Organizer (affected bundles)]
  A --> F[Evidence & Audit: Proof Chains]
  A --> G[Evidence & Audit: Replay/Verify]
  A --> H[Operations: Nightly Ops Report (if stale inputs)]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ FINDING DETAIL: CVE-XXXX in openssl                                                  │
│ Formerly: Security ▸ Findings (row drilldown)                                                   │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Severity: CRITICAL  CVSS: 9.8   EPSS: (if available)   KEV: (if available)                      │
│ Data provenance: SBOM snapshot: 2026-02-18T02:00Z | CVE dataset: OSV-2026.02.18.01 | NVD: stale │
│                                                                                                 │
│ REACHABILITY (HYBRID)                                                                           │
│ Hybrid Reachable: YES  (because Image/Dover=YES OR Runtime=YES)                                  │
│ ┌───────────────────────────────────────────────────────────────────────────────────────────┐  │
│ │ Source     Coverage   Result     Evidence link                                               │  │
│ │ Build      92%        NO         [build reach report]                                         │  │
│ │ Image/Dover96%        YES        [image reach report]                                         │  │
│ │ Runtime    61%        YES        [runtime reach report]                                       │  │
│ └───────────────────────────────────────────────────────────────────────────────────────────┘  │
│                                                                                                 │
│ AFFECTED (Region → Env)                                                                         │
│ - eu-west ▸ prod-eu    reachable=YES  first seen=2d  bundle: api-gateway@2.1.0  [Open Bundle]   │
│ - us-east ▸ staging-us reachable=YES  first seen=1d  bundle: api-gateway@2.1.0  [Open Bundle]   │
│                                                                                                 │
│ CONTROLS                                                                                        │
│ VEX: Awaiting VEX  → [Open VEX Hub]     Exceptions: none  → [Request Exception]                 │
│ Evidence: [Open Proof Chain] [Replay/Verify] [Export Evidence Bundle snapshot]                  │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

5) Security → Vulnerabilities (CVE Catalog)

Previously

Now

Why changed

You need both:


Screen graph (Mermaid)

flowchart TD
  A[Vulnerabilities (Catalog)] --> B[Vulnerability Detail (CVE)]
  A --> C[Security Findings (filtered by CVE)]
  A --> D[Integrations: Security Data Sources]
  A --> E[Operations: Nightly Ops Report (feed failures)]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ VULNERABILITIES (CVE CATALOG)                                                        │
│ Formerly: Security ▸ Vulnerabilities (pending integration)                                       │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Filters: Severity ▾  In-Our-Estate ▾(Any/Yes)  Reachable ▾(Any/Yes)  Source ▾(OSV/NVD/Vendor)    │
│ Data freshness: OSV OK | NVD DOWN  → [Open Integrations] [Open Nightly Ops Report]               │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ CVE        Sev   CVSS  Sources   In our estate  Reachable  Top bundles impacted                 │
│-------------------------------------------------------------------------------------------------│
│ CVE-XXXX   CRIT  9.8   OSV,NVD*  12 findings    7          api-gateway@2.1.0, web@2.0.0         │
│ CVE-YYYY   HIGH  8.1   OSV       3 findings     0          none                                 │
│ Actions: [View CVE] [View Findings]                                                             │
│ *NVD stale indicator                                                                             │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

6) Vulnerability Detail (CVE) — new

Previously

Now

Why changed

You need a single place to explain the vulnerability and tie it to:


Screen graph (Mermaid)

flowchart TD
  A[Vulnerability Detail (CVE)] --> B[Security Findings (filtered)]
  A --> C[Finding Detail]
  A --> D[VEX Statement Detail]
  A --> E[Exceptions (filtered)]
  A --> F[Release Control: Bundle Organizer]
  A --> G[Evidence & Audit: Proof Chains (dataset attestation)]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ CVE DETAIL: CVE-XXXX                                                                 │
│ Formerly: (new)                                                                                │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Severity: CRITICAL  CVSS: 9.8                                                                   │
│ Sources: OSV (fresh) | NVD (stale) | Vendor advisory (optional)                                 │
│ Affected: openssl < 3.0.2 (example)  Fixed: 3.0.2+ (example)                                     │
│ Dataset evidence: OSV snapshot 2026.02.18.01  [Export dataset attestation]                       │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ IN OUR ESTATE                                                                                   │
│ Findings: 12  | Hybrid reachable: 7                                                             │
│ Reachability breakdown: Build 2 | Image/Dover 6 | Runtime 5                                      │
│ Top impacted bundles: api-gateway@2.1.0, web-frontend@2.0.0                                      │
│ [View Findings] [Open Bundle Organizer filtered]                                                 │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ CONTROLS                                                                                        │
│ VEX statements: 1 Not-Affected, 1 Under-Investigation  → [Open VEX Hub filtered]                │
│ Exceptions: 2 active (prod-eu) → [Open Exceptions filtered]                                     │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

7) Security → VEX Hub

Previously

Now

Why changed

VEX is essential to reduce noise and to make decisions auditable. It must be adjacent to findings.


Screen graph (Mermaid)

flowchart TD
  A[VEX Hub] --> B[VEX Statement Detail]
  A --> C[Security Findings (filtered by CVE/component)]
  A --> D[Integrations: VEX Sources]
  A --> E[Evidence & Audit: Trust & Signing]
  A --> F[Release Control: Governance & Policy (how VEX affects gates)]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ VEX HUB                                                           [ + Search Statements ]│
│ Formerly: Security ▸ VEX Hub                                                                    │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Banner: VEX source error → [Retry]  (if feeds/integration failing)                              │
│ Coverage: Findings with VEX: 14 | Awaiting VEX: 6                                               │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Statement ID   Issuer        Scope (bundle/env)         Status         Validity    Actions      │
│-------------------------------------------------------------------------------------------------│
│ vex-001        VendorA       api-gateway@2.1.0          NOT_AFFECTED   signed      [View]        │
│ vex-002        InternalSec   prod-eu / web@2.0.0        INVESTIGATING  signed      [View]        │
│ vex-003        VendorB       openssl component-wide     AFFECTED       signed      [View]        │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

8) VEX Statement Detail — new

Previously

Now

Why changed

You need a decision artifact that auditors can read:


Screen graph (Mermaid)

flowchart TD
  A[VEX Statement Detail] --> B[Trust & Signing (issuer, cert)]
  A --> C[Security Findings (affected)]
  A --> D[Vulnerability Detail (CVE)]
  A --> E[Evidence & Audit: Proof Chain]
  A --> F[Release Control: Governance & Policy]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ VEX STATEMENT DETAIL: vex-001                                                         │
│ Formerly: VEX Hub (statement row)                                                                │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Issuer: VendorA   Signature: VALID   Rekor entry: present  [View in Trust & Signing]            │
│ Scope: Bundle api-gateway@2.1.0  | Regions: eu-west, us-east | Envs: prod, staging               │
│ CVEs: CVE-XXXX, CVE-AAAA                                                                          │
│ Status: NOT_AFFECTED  Reason: component not reachable in shipped configuration (example)         │
│ Policy Effect: allows approvals to proceed for scoped bundles (per governance rules)             │
│ Evidence: [Open Proof Chain] [Export to Evidence Bundle]                                         │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

9) Security → Exceptions

Previously

Now

Why changed

Exceptions are part of release governance and must be traceable to what was accepted, where, and until when.


Screen graph (Mermaid)

flowchart TD
  A[Security Exceptions] --> B[Exception Detail / Request]
  A --> C[Security Findings (filtered)]
  A --> D[Release Control: Governance & Policy (exception workflow)]
  A --> E[Evidence & Audit: Evidence Bundle (for exception record)]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ EXCEPTIONS                                                        [ + Request Exception ]│
│ Formerly: Security ▸ Exceptions                                                                   │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Filters: Status ▾  Region ▾  Environment ▾  Bundle/Release ▾  Expiring soon ▾                    │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Exception ID  Finding/CVE   Scope (region/env)      Bundle        Reason        Expires  Status │
│-------------------------------------------------------------------------------------------------│
│ exc-101       CVE-XXXX      eu-west/prod-eu          api@2.1.0     mitigation…   14d     ACTIVE  │
│ exc-102       CVE-YYYY      us-east/staging-us       user@3.0.0    rollback…     2d      PENDING │
│ Actions: [View] [Extend] [Revoke] [Export evidence]                                            │
│ Workflow config: Release Control ▸ Governance & Policy ▸ Exception Workflow [Open]              │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

10) Exception Detail / Request — new explicit page

Previously

Now

Why changed

This is the artifact auditors will ask for:


Screen graph (Mermaid)

flowchart TD
  A[Exception Detail] --> B[Finding Detail]
  A --> C[Vulnerability Detail (CVE)]
  A --> D[Evidence & Audit: Proof Chain]
  A --> E[Evidence & Audit: Export Center]
  A --> F[Release Control: Governance & Policy (workflow)]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ EXCEPTION DETAIL: exc-101                                                            │
│ Formerly: Security ▸ Exceptions (row)                                                           │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Finding: CVE-XXXX in openssl   Severity: CRITICAL   Hybrid reachable: YES                       │
│ Scope: eu-west ▸ prod-eu  | Bundle: api-gateway@2.1.0                                            │
│ Reason: customer outage risk if patched immediately (example)                                    │
│ Mitigation: WAF rule + restricted egress + monitoring                                             │
│ Expires: 2026-03-04  Approvers: security-lead, release-manager                                     │
│ Evidence: [Attach] [Open Proof Chain] [Export to Evidence Bundle]                                │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

11) Security → Coverage & Analytics (SBOM Lake moved)

Previously

Now

Why changed

SBOM Lake is not “generic analytics.” It directly answers:


Screen graph (Mermaid)

flowchart TD
  A[Coverage & Analytics] --> B[Security Findings (filtered)]
  A --> C[VEX Hub (filtered)]
  A --> D[Operations: Nightly Ops Report]
  A --> E[Integrations: Security Data Sources]
  A --> F[Evidence & Audit: Proof Chains]
  A --> G[Administration: Usage & Limits]

ASCII mock (expanded SBOM + reachability coverage)

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ COVERAGE & ANALYTICS                                                                 │
│ Formerly: Analytics ▸ SBOM Lake                                                                 │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Filters: Region ▾  Environment ▾  Min Severity ▾  Time Window ▾                                  │
│ Banner: Analytics API auth error (if any) → [Open System] [Open Integrations]                    │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ ATTESTATION COVERAGE (last 30d)                                                                  │
│ SBOM: 88%  | VEX: 62% | Policy Decision: 91% | Human Approval: 74%                               │
│ Complete Chains: 71% (SBOM+Reachability+Policy+Evidence)                                         │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ HYBRID REACHABILITY COVERAGE                                                                     │
│ Build reach coverage: 92%  (fresh <24h: 90%)                                                     │
│ Image/Dover coverage: 96% (fresh <24h: 88%)                                                      │
│ Runtime coverage: 61%     (fresh <24h: 54%)                                                      │
│ → gaps reduce confidence in “reachable” classification                                           │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ APPROVAL VELOCITY / BLOCKERS                                                                     │
│ - Top blocker: NVD feed stale (dataset) → [Nightly Ops Report]                                   │
│ - Top blocker: runtime reach ingest degraded (eu-central agent) → [Worker Fleet]                 │
│ Exports: [Export CSV] [Export coverage attestation snapshot]                                     │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

12) Security → SBOM Graph (Beta)

Previously

Now

Why changed

Even if not implemented yet, the IA must reserve the place so it doesn’t get shoved into random “analytics” later. It’s a security tool.


Screen graph (Mermaid)

flowchart TD
  A[SBOM Graph (Beta)] --> B[Security Findings (component/CVE filtered)]
  A --> C[Release Control: Bundle Organizer]
  A --> D[Vulnerability Detail (CVE)]
  A --> E[Coverage & Analytics]

ASCII mock

┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ▸ SBOM GRAPH (BETA)                                                                    │
│ Formerly: Security ▸ SBOM Graph (not available)                                                 │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ Scope: Bundle/Release ▾  Region ▾  Environment ▾                                                │
│ (Graph canvas)                                                                                  │
│ - Nodes: components/packages/images/services                                                    │
│ - Edges: dependency relationships                                                                │
│                                                                                                 │
│ Side panel: Selected node → vulnerabilities + reachability + affected bundles                    │
│ Actions: [View Findings] [View CVE] [Open Bundle Organizer]                                     │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

Preservation mapping (prove the reorg stays intact)


If you want, Pack 8 can cover Release Control screens in the same format (Mermaid + ASCII + Formerly/Why) including the missing Release Bundle Organizer you called out (microservice digest→version, env vars from Vault/Consul, per-repo changelog, bundle composition, promotion paths).