61 KiB
Pack 3 — Security + Evidence & Audit + Operations
This pack adds the missing SBOM/Finding signals, hybrid reachability (build/image/runtime), and a first-class Nightly Ops Report, while keeping the “release/hotfix + security + audit” spine. (Stella Ops Suite)
0) Design rule for this pack (why these screens look the way they do)
When Stella Ops opens, the UI must communicate fast:
- What is deployed where (by digest)
- What is allowed to ship next
- Why it is allowed/blocked (policy + reachability evidence)
- Where the evidence is (one-click proof/export) (Gitea: Git with a cup of tea)
Everything in this pack is arranged to serve that rule.
1) SECURITY — menus + screens
1.1 Security menu graph (Mermaid)
flowchart TD
S0["Security (menu)"]
S1["Security Overview (global)"]
S2["Findings (SBOM + CVE)"]
S3["Finding Detail"]
S4["Hybrid Reachability (build/image/runtime)"]
S5["Reachability Evidence Detail"]
S6["VEX Hub"]
S7["VEX Statement Detail"]
S8["Exceptions"]
S9["Exception Detail"]
S10["SBOM Explorer (Graph)"]
S0 --> S1
S0 --> S2 --> S3 --> S5
S0 --> S4 --> S5
S0 --> S6 --> S7
S0 --> S8 --> S9
S0 --> S10
1.2 Screen — Security Overview (global)
New location: Security → Security Overview
Previously: Security → Overview (“Security Overview”)
Why changed:
- Your dashboard needs emerged SBOM/finding signal and “which env/region is burning” in one glance (not “0 across the board” unless truly 0).
- This overview becomes the security posture rollup across regions/environments with reachability emphasis (reachable CVEs are what matter for decisions).
Screen graph (Mermaid)
flowchart LR
A["Security Overview"] --> B["Findings (filtered)"]
A --> C["Hybrid Reachability"]
A --> D["VEX Hub"]
A --> E["Exceptions"]
A --> F["Evidence Capsule (latest)"]
A --> G["Ops: Nightly Report (security pipelines)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Stella Ops [Search releases/digests…] |
|--------------------------------------------------------------------------------------------------|
| NAV | Security / Overview |
|------------------------| formerly: Security → Overview (Security Overview) |
| Dashboard |-------------------------------------------------------------------------|
| Release Control | GLOBAL POSTURE (last refresh 2m) |
| Security (YOU ARE) | Reachable CVEs: CRIT [2] HIGH [7] MED [14] LOW [33] |
| Evidence & Audit | Non-reachable CVEs (noise): 1,284 |
| Operations |-------------------------------------------------------------------------|
| Integrations | HOTSPOTS (Reachable CRIT/HIGH by env) |
| Administration | prod/us-east-1 CRIT=2 HIGH=3 | prod/eu-west-1 CRIT=0 HIGH=4 |
| | staging/us-east-1 CRIT=0 HIGH=1 | dev/* CRIT=0 HIGH=0 |
| |-------------------------------------------------------------------------|
| | HYBRID REACHABILITY COVERAGE (must not be “third class”) |
| | Build: 92% | Image (Dover): 100% | Runtime: 63% |
| | Gaps: prod/eu-west-1 runtime ingest delayed (last 6h) |
| |-------------------------------------------------------------------------|
| | Quick actions: [View Findings] [Reachability] [VEX Hub] [Exceptions] |
+--------------------------------------------------------------------------------------------------+
1.3 Screen — Findings (SBOM + CVE unified)
New location: Security → Findings
Previously:
Security → Findings(“Security Findings”)Security → Vulnerabilities(“Vulnerabilities”) Why changed:- One list with consistent semantics: “CVE + package + reachability + environments + releases/bundles impacted”.
- The old “Vulnerabilities” page becomes a redirect to this screen with preset filters (e.g.,
View=CVE Catalog).
Screen graph (Mermaid)
flowchart TD
L["Findings (SBOM + CVE)"] --> F["Finding Detail"]
L --> X["Export CSV"]
L --> V["VEX Hub (context)"]
L --> E["Create Exception (pre-filled)"]
L --> R["Reachability view (hybrid columns)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Security / Findings [Export CSV] [Saved Views]|
| formerly: Security → Findings (Security Findings) + Security → Vulnerabilities (Vulnerabilities) |
|--------------------------------------------------------------------------------------------------|
| Filters: Severity [All] Reachability [Any/Reachable] Source [Build/Image/Runtime/Any] |
| Region [All] Environment [All] VEX [Any/Has VEX/Needs VEX] |
|--------------------------------------------------------------------------------------------------|
| CVE PACKAGE SEV CVSS REACHABILITY (B/I/R) VEX RELEASE/BUNDLE ENVS |
| CVE-... openssl CRIT 9.8 ✅ / ✅ / ✅ — hotfix-auth 1.2.4 prod/us-east-1|
| CVE-... log4j HIGH 8.1 ✅ / ✅ / ☐ vendor platform 1.3.0 prod/eu-west-1|
| CVE-... zlib MED 6.5 ☐ / ✅ / ☐ local payments 2.8.4 staging/us-e1|
|--------------------------------------------------------------------------------------------------|
| Notes: Reachability columns are hybrid: Build analysis, Image (Dover), Runtime (deployed). |
+--------------------------------------------------------------------------------------------------+
1.4 Screen — Finding Detail (evidence-first)
New location: Security → Findings → (Finding Detail)
Previously: fragmented across Findings + (future) SBOM Graph + VEX Hub
Why changed:
- A decision is only as good as its proof: this page centers reachability evidence, affected environments, VEX, and the promotion impact (blocked vs allowed) with links to Decision Capsule.
Screen graph (Mermaid)
flowchart LR
D["Finding Detail"] --> R["Reachability Evidence (hybrid)"]
D --> V["VEX Statements"]
D --> P["Promotion Impact (gates + approvals)"]
D --> X["Request Exception"]
D --> E["Evidence Capsule (view/download)"]
D --> A["Remediation actions (upgrade/patch)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Finding: CVE-2026-XXXX (openssl) [Request Exception] |
| formerly: (spread across) Security Findings + VEX Hub + (SBOM Graph placeholder) |
|--------------------------------------------------------------------------------------------------|
| Summary: CRITICAL CVSS 9.8 Package: openssl@3.0.x |
| Affected artifacts (digests): sha256:aaaa… sha256:bbbb… |
|--------------------------------------------------------------------------------------------------|
| Reachability (hybrid) |
| Build: ✅ reachable (call path: api-gateway -> tls -> openssl) |
| Image (Dover): ✅ reachable (static analysis) |
| Runtime: ✅ reachable (trace evidence: prod/us-east-1) |
| [View Reachability Evidence] |
|--------------------------------------------------------------------------------------------------|
| Environments impacted |
| prod/us-east-1 (2 services) prod/eu-west-1 (1 service) |
|--------------------------------------------------------------------------------------------------|
| VEX |
| Vendor VEX: none | Local VEX: draft |
| [Open VEX Hub pre-filtered] |
|--------------------------------------------------------------------------------------------------|
| Promotion impact |
| Gate: "No reachable CRIT" ❌ BLOCKS | Required: patch or approved exception with expiry |
| Evidence capsule: sealed? ✅ [Open Capsule] [Export] |
+--------------------------------------------------------------------------------------------------+
1.5 Screen — Hybrid Reachability (coverage + gaps)
New location: Security → Hybrid Reachability
Previously: not visible as a coherent surface
Why changed:
- You explicitly require reachability from Build, Image (Dover), and Runtime to be second-class (visible), not buried.
- This page answers: “Do we trust our reachability picture for each env/region right now?”
Screen graph (Mermaid)
flowchart TD
H["Hybrid Reachability (Coverage)"] --> M["Coverage Matrix (region/env x source)"]
H --> G["Gap Drilldown (why missing runtime?)"]
H --> F["Findings filtered by 'reachability missing'"]
H --> O["Ops: ingestion pipeline health"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Security / Hybrid Reachability [Export] [Explain] |
| formerly: (missing / implicit) |
|--------------------------------------------------------------------------------------------------|
| Coverage Matrix (last 24h) |
| Region/Env BUILD IMAGE (DOVER) RUNTIME NOTES |
| prod/us-east-1 98% ✅ 100% ✅ 72% ⚠ runtime ingest lag 2h |
| prod/eu-west-1 93% ✅ 100% ✅ 41% ❌ agent offline |
| staging/us-east-1 90% ✅ 100% ✅ 60% ⚠ sampling low |
| dev/us-east-1 80% ⚠ 95% ⚠ 10% ⚠ instrumentation off |
|--------------------------------------------------------------------------------------------------|
| Gap drilldown (selected: prod/eu-west-1 runtime) |
| - Missing agent heartbeat (Integrations: Agents) |
| - Last success: Feb 17 02:10 |
| Links: [Ops Platform Health] [Scheduler Run] [Agent Config] |
+--------------------------------------------------------------------------------------------------+
1.6 Screen — Reachability Evidence Detail
New location: via Finding Detail or Hybrid Reachability drilldowns
Previously: not present
Why changed:
- Reachability must be inspectable and exportable as evidence; otherwise it’s a black box.
Screen graph (Mermaid)
flowchart LR
E["Reachability Evidence Detail"] --> C["Call graph / trace proof"]
E --> S["Source selector: Build vs Image vs Runtime"]
E --> V["Link to VEX statement"]
E --> P["Link to Policy decision + capsule"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Reachability Evidence: CVE-2026-XXXX in prod/us-east-1 [Download Proof] |
| formerly: (missing / implicit) |
|--------------------------------------------------------------------------------------------------|
| Source: [Build ✅] [Image (Dover) ✅] [Runtime ✅] |
|--------------------------------------------------------------------------------------------------|
| Proof summary |
| Entry point: api-gateway |
| Path: api-gateway -> tls_handler -> openssl::SSL_read -> vulnerable_fn |
| Confidence: High |
|--------------------------------------------------------------------------------------------------|
| Linked artifacts |
| SBOM: sbom@sha256:... Trace: runtime-trace@sha256:... Policy: core-pack v12 |
| Capsule: capsule-prod-us-east-1-2026-02-18 |
+--------------------------------------------------------------------------------------------------+
1.7 Screen — VEX Hub
New location: Security → VEX Hub
Previously: Security → VEX Hub (“VEX Statement Dashboard”)
Why changed:
- Keep it in Security, but make it clearly part of the “evidence chain”: VEX must link to findings and reachability proof (not just a statement list). (Gitea: Git with a cup of tea)
Screen graph (Mermaid)
flowchart TD
V["VEX Hub"] --> S["Search Statements"]
V --> I["Import Vendor VEX"]
V --> D["VEX Statement Detail"]
D --> F["Linked Findings"]
D --> E["Evidence Capsule / Proof chain"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Security / VEX Hub [Search] [Import Vendor] |
| formerly: Security → VEX Hub |
|--------------------------------------------------------------------------------------------------|
| Search: [CVE____] [Package____] [Product____] [Issuer____] [Env____] |
|--------------------------------------------------------------------------------------------------|
| STATEMENT ID CVE PRODUCT/BUNDLE ISSUER STATUS LINKED FINDINGS |
| vex-1021 CVE-... platform 1.3.0 vendorA Verified 3 (2 reachable) |
| vex-1022 CVE-... payments 2.8.4 local Draft 1 (reachability pending)|
|--------------------------------------------------------------------------------------------------|
| Note: Statements should reference reachability proof & capsule for audit replay. |
+--------------------------------------------------------------------------------------------------+
1.8 Screen — VEX Statement Detail
New location: Security → VEX Hub → (Statement)
Previously: not clearly separated
Why changed:
- Needed for auditors: statement, issuer, scope, and the linked evidence objects.
Screen graph (Mermaid)
flowchart LR
D["VEX Statement Detail"] --> L["Linked findings + reachability"]
D --> P["Proof chain"]
D --> X["Export VEX + evidence refs"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| VEX Statement: vex-1021 (vendorA) [Export] [Verify] |
| formerly: Security → VEX Hub (inline row) |
|--------------------------------------------------------------------------------------------------|
| CVE: CVE-2026-XXXX Disposition: Not Affected Justification: component not used at runtime |
| Scope: platform-release 1.3.0-rc1 Envs: prod/* |
|--------------------------------------------------------------------------------------------------|
| Linked evidence |
| - Reachability proof: runtime shows NOT reachable in prod/eu-west-1 (trace id …) |
| - Capsule: capsule-prod-eu-west-1-… |
|--------------------------------------------------------------------------------------------------|
| Linked findings |
| Finding list: 3 (reachable: 0) |
+--------------------------------------------------------------------------------------------------+
1.9 Screen — Exceptions (risk exceptions)
New location: Security → Exceptions
Previously: Security → Exceptions (“Security Exceptions”)
Why changed:
- Exceptions must show scope + expiry + approvers + linked evidence, and tie to policy workflow configured in Administration.
Screen graph (Mermaid)
flowchart TD
X["Exceptions"] --> D["Exception Detail"]
X --> R["Request Exception"]
D --> A["Approval trail"]
D --> F["Linked Findings / Bundles"]
D --> E["Evidence capsule references"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Security / Exceptions [Request Exception] |
| formerly: Security → Exceptions |
|--------------------------------------------------------------------------------------------------|
| EXC ID SCOPE REASON REQUESTED BY EXPIRES STATUS |
| exc-221 CVE-… in prod/us-e1 hotfix window alice 2026-03-01 Pending |
| exc-222 bundle payments 2.8.4 vendor patch delayed david 2026-02-25 Approved |
|--------------------------------------------------------------------------------------------------|
| Notes: every exception must be time-bounded and linked to evidence & approver signatures. |
+--------------------------------------------------------------------------------------------------+
1.10 Screen — Exception Detail
New location: Security → Exceptions → (Exception)
Previously: not clearly separated
Why changed:
- Needed for audit and for “why allowed even though finding exists”.
Screen graph (Mermaid)
flowchart LR
D["Exception Detail"] --> S["Scope + expiry"]
D --> J["Justification + attachments"]
D --> A["Approvals/signatures"]
D --> L["Linked findings + affected envs"]
D --> C["Capsules impacted (promotion events)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Exception: exc-222 (Approved) [Revoke] [Extend] |
| formerly: Security → Exceptions (row) |
|--------------------------------------------------------------------------------------------------|
| Scope: Bundle payments-suite 2.8.4 Env: prod/eu-west-1 |
| Expires: 2026-02-25 23:59 UTC Risk: HIGH reachable allowed with 2 approvals |
|--------------------------------------------------------------------------------------------------|
| Justification: vendor patch ETA + compensating controls |
| Approvals: ✅ alice (sig…) ✅ security-lead (sig…) |
|--------------------------------------------------------------------------------------------------|
| Linked findings: |
| - CVE-… log4j (HIGH reachable) |
| Capsules impacted: |
| - capsule-prod-eu-west-1-2026-02-18 (promotion allowed due to exc-222) |
+--------------------------------------------------------------------------------------------------+
1.11 Screen — SBOM Explorer (Graph)
New location: Security → SBOM Explorer (Graph)
Previously: Security → SBOM Graph (“SBOM Graph”)
Why changed:
- Keep it visible but explicitly “supporting detail”: useful to investigate dependency trees, but not the main control-plane.
- If still not implemented, show it as (coming soon) with deep links to Findings and Coverage metrics.
Screen graph (Mermaid)
flowchart TD
G["SBOM Explorer (Graph)"] --> N["Node detail (package/component)"]
N --> F["Findings for node"]
N --> R["Reachability evidence"]
G --> C["Coverage metrics"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Security / SBOM Explorer (Graph) [Beta] [Open Findings] |
| formerly: Security → SBOM Graph |
|--------------------------------------------------------------------------------------------------|
| If graph rendering is not available in this build: |
| - Show “Graph unavailable” + shortcuts: [Findings filtered by component] [Coverage Metrics] |
|--------------------------------------------------------------------------------------------------|
| Graph area (when enabled): |
| [service: api-gateway] --depends--> [openssl] --depends--> [zlib] |
| click node → right panel: packages, versions, linked CVEs, reachability paths |
+--------------------------------------------------------------------------------------------------+
2) EVIDENCE & AUDIT — menus + screens
2.1 Evidence & Audit menu graph (Mermaid)
flowchart TD
E0["Evidence & Audit (menu)"]
E1["Evidence Home (latest capsules)"]
E2["Decision Capsules (Bundles list)"]
E3["Decision Capsule Detail"]
E4["Evidence Packets"]
E5["Packet Detail"]
E6["Proof Chains"]
E7["Proof Chain Detail"]
E8["Replay / Verify"]
E9["Replay Result Detail"]
E10["Export Center"]
E11["Export Run Detail"]
E12["Coverage Metrics (Attestation coverage)"]
E0 --> E1
E0 --> E2 --> E3
E0 --> E4 --> E5
E0 --> E6 --> E7
E0 --> E8 --> E9
E0 --> E10 --> E11
E0 --> E12
2.2 Screen — Evidence Home (quick proof access)
New location: Evidence & Audit → Home
Previously: no single landing (Evidence items were separate)
Why changed:
- “Where is the evidence?” must be one click. This home page lists latest capsules and quick exports. (Gitea: Git with a cup of tea)
Screen graph (Mermaid)
flowchart LR
H["Evidence Home"] --> C["Decision Capsules"]
H --> P["Evidence Packets"]
H --> R["Replay / Verify"]
H --> X["Export Center"]
H --> M["Coverage Metrics"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Evidence & Audit / Home [Export] [Verify Tool] |
| formerly: (no single landing) |
|--------------------------------------------------------------------------------------------------|
| Latest Decision Capsules (sealed) |
| capsule-prod-us-east-1-2026-02-18 bundle: hotfix-auth 1.2.4 verdict: PASS* (exc applied) |
| capsule-prod-eu-west-1-2026-02-18 bundle: platform 1.3.0-rc1 verdict: BLOCK (reachable CRIT)|
| [View all capsules] |
|--------------------------------------------------------------------------------------------------|
| Quick proof actions |
| [Replay a verdict] [Verify signatures] [Export Audit Bundle] [Open Proof Chains] |
|--------------------------------------------------------------------------------------------------|
| Coverage snapshot |
| SBOM: 100% Reachability proofs: 78% VEX: 41% Approvals recorded: 100% |
+--------------------------------------------------------------------------------------------------+
2.3 Screen — Decision Capsules (Evidence Bundles list)
New location: Evidence & Audit → Decision Capsules
Previously: Evidence → Evidence Bundles (“Evidence Bundles”)
Why changed:
- Rename to match the concept used in docs/marketing: a “decision capsule” binds SBOM + frozen inputs + reachability + policy + signatures so audits can replay deterministically. (Stella Ops Suite)
Screen graph (Mermaid)
flowchart TD
L["Decision Capsules (list)"] --> D["Capsule Detail"]
L --> V["Verify bundle signatures"]
L --> X["Export (zip/tgz/oci)"]
D --> R["Replay / Verify"]
D --> P["Proof chain"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Evidence & Audit / Decision Capsules [Verify] [Export] |
| formerly: Evidence → Evidence Bundles |
|--------------------------------------------------------------------------------------------------|
| Filters: Region [All] Env [All] Bundle/Release [____] Date [last 30d] Status [All] |
|--------------------------------------------------------------------------------------------------|
| CAPSULE ID BUNDLE/RELEASE ENV VERDICT SEALED ACTIONS |
| capsule-prod-us-e1-... hotfix-auth 1.2.4 prod/us-east-1 PASS ✅ View Export |
| capsule-prod-eu-w1-... platform 1.3.0-rc1 prod/eu-west-1 BLOCK ✅ View Replay |
|--------------------------------------------------------------------------------------------------|
| Each capsule must be exportable and replayable for audit. |
+--------------------------------------------------------------------------------------------------+
2.4 Screen — Decision Capsule Detail
New location: Evidence & Audit → Decision Capsules → (Capsule)
Previously: partially in export flows
Why changed:
- This is the “auditor view”: list exact inputs (SBOM + feed snapshot + policy version), outputs (verdict), and signatures. (Stella Ops Suite)
Screen graph (Mermaid)
flowchart LR
D["Capsule Detail"] --> I["Inputs (SBOM, feeds, policy, tools)"]
D --> O["Outputs (verdict, risk, VEX)"]
D --> S["Signatures (DSSE) + transparency refs"]
D --> P["Proof chain graph"]
D --> R["Replay this capsule"]
D --> X["Export formats"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Capsule: capsule-prod-us-east-1-2026-02-18 [Replay] [Export] [Verify Sig] |
| formerly: Evidence → Evidence Bundles (detail) |
|--------------------------------------------------------------------------------------------------|
| Inputs |
| SBOM: sbom@sha256:... Feed snapshots: osv@... nvd@... Policy: core-pack v12 |
| Tools: scanner@sha256:... Reachability: runtime-proof@sha256:... |
|--------------------------------------------------------------------------------------------------|
| Outputs |
| Verdict: PASS (exception exc-222) Reachable CVEs: 1 HIGH VEX: derived/linked |
|--------------------------------------------------------------------------------------------------|
| Signatures |
| DSSE envelope: ✅ Rekor/log ref: ✅ Certificate chain: ✅ |
|--------------------------------------------------------------------------------------------------|
| Links: [Proof Chain] [Related Approvals] [Related Bundle Version] |
+--------------------------------------------------------------------------------------------------+
2.5 Screen — Evidence Packets (formerly “Packets”)
New location: Evidence & Audit → Evidence Packets
Previously: Evidence → Packets (“Packets”)
Why changed:
- “Packets” is ambiguous; “Evidence Packets” communicates that these are artifact bundles used by capsules/exports/replay.
Screen graph (Mermaid)
flowchart TD
P["Evidence Packets"] --> D["Packet Detail"]
P --> C["Create/collect packet (job output)"]
D --> X["Export packet"]
D --> L["Link to capsules using it"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Evidence & Audit / Evidence Packets [Create] [Export] |
| formerly: Evidence → Packets |
|--------------------------------------------------------------------------------------------------|
| PACKET ID TYPE SOURCE JOB CREATED USED BY CAPSULES |
| pkt-7712 build-sbom jenkins#7712 Feb 18 2 |
| pkt-opsv-sync advisory-snap mirror-sync Feb 18 5 |
| pkt-runtime-trace runtime-proof agent/prod-us-e1 Feb 18 1 |
+--------------------------------------------------------------------------------------------------+
2.6 Screen — Packet Detail
New location: Evidence Packets → (Packet)
Previously: not explicit
Why changed:
- Lets operators/auditors see exactly what artifacts are inside and where they were consumed.
Screen graph (Mermaid)
flowchart LR
D["Packet Detail"] --> A["Artifacts list (SBOM, traces, logs, attestations)"]
D --> M["Manifest + hashes"]
D --> U["Used-by capsules"]
D --> X["Export"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Evidence Packet: pkt-7712 (build-sbom) [Export] [Verify Hash] |
| formerly: Evidence → Packets (row) |
|--------------------------------------------------------------------------------------------------|
| Manifest |
| - sbom.cdx.json (sha256:...) |
| - findings.sarif (sha256:...) |
| - build-provenance.json (sha256:...) |
|--------------------------------------------------------------------------------------------------|
| Used by capsules |
| - capsule-prod-us-east-1-2026-02-18 |
| - capsule-staging-us-east-1-2026-02-18 |
+--------------------------------------------------------------------------------------------------+
2.7 Screen — Proof Chains
New location: Evidence & Audit → Proof Chains
Previously: Evidence → Proof Chains
Why changed:
- Proof chain view is a top “audit navigation” path: show chain-of-custody from bundle → scan → reachability → policy → approval → capsule.
Screen graph (Mermaid)
flowchart TD
P["Proof Chains"] --> D["Proof Chain Detail"]
D --> C["Capsules"]
D --> A["Approvals"]
D --> R["Replay entries"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Evidence & Audit / Proof Chains [Search] [Export Graph] |
| formerly: Evidence → Proof Chains |
|--------------------------------------------------------------------------------------------------|
| CHAIN ID SUBJECT (digest/bundle) LAST EVENT CAPSULES STATUS |
| chain-901 bundle platform 1.3.0-rc1 promotion blocked 1 ⚠ blocked |
| chain-902 digest sha256:aaaa… (hotfix-auth) promoted to prod 1 ✅ complete |
+--------------------------------------------------------------------------------------------------+
2.8 Screen — Proof Chain Detail
New location: Proof Chains → (Chain)
Previously: not clear
Why changed:
- Auditors want a single timeline/graph; engineers want quick links back to the cause (finding, missing feed, exception).
Screen graph (Mermaid)
flowchart LR
D["Proof Chain Detail"] --> G["Chain graph (events)"]
D --> T["Timeline"]
D --> L["Linked objects (findings, vex, exceptions, capsules)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Proof Chain: chain-902 (hotfix-auth 1.2.4) [Export] [Replay Capsule] |
| formerly: Evidence → Proof Chains (row) |
|--------------------------------------------------------------------------------------------------|
| Graph (simplified) |
| Digest sha256:aaaa… → SBOM pkt-7712 → Findings → Reachability proof → Policy gates → Approvals → |
| Capsule sealed → Promotion executed |
|--------------------------------------------------------------------------------------------------|
| Timeline |
| 07:10 SBOM created | 07:12 findings evaluated | 07:20 approval signed | 07:30 promoted |
+--------------------------------------------------------------------------------------------------+
2.9 Screen — Replay / Verify
New location: Evidence & Audit → Replay / Verify
Previously: Evidence → Replay/Verify (“Verdict Replay”)
Why changed:
- Deterministic replay is a core audit tool; keep it under Evidence and give it a clear “replay inputs, compare diffs” workflow. (Gitea: Git with a cup of tea)
Screen graph (Mermaid)
flowchart TD
R["Replay / Verify"] --> Q["Request Replay"]
R --> L["Replay Requests list"]
L --> D["Replay Result Detail"]
D --> C["Compare outputs (feeds/policy/tool versions)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Evidence & Audit / Replay / Verify [Request Replay] |
| formerly: Evidence → Replay/Verify (Verdict Replay) |
|--------------------------------------------------------------------------------------------------|
| Request Replay: [Verdict ID or Digest ____] Reason [____________________] [Run] |
|--------------------------------------------------------------------------------------------------|
| Requests |
| rr-001 digest sha256:aaaa… COMPLETED Feb 18 08:30 match: ✅ |
| rr-002 digest sha256:bbbb… RUNNING Feb 18 07:30 |
|--------------------------------------------------------------------------------------------------|
| Determinism: compares outputs to original capsule inputs; highlights feed/policy/tool diffs. |
+--------------------------------------------------------------------------------------------------+
2.10 Screen — Replay Result Detail
New location: Replay/Verify → (Replay Result)
Previously: not explicit
Why changed:
- Needed to explain mismatches (policy pack changed, feed snapshot updated, tool version drift).
Screen graph (Mermaid)
flowchart LR
D["Replay Result Detail"] --> M["Match summary"]
D --> DI["Diff view (inputs/outputs)"]
D --> X["Re-seal capsule (optional)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Replay Result: rr-001 (MATCH ✅) [Download Diff] |
| formerly: Evidence → Replay/Verify (inline) |
|--------------------------------------------------------------------------------------------------|
| Compared to capsule: capsule-prod-us-east-1-2026-02-18 |
| Inputs: SBOM ✅ same Feeds ✅ same snapshot Policy ✅ same Tools ✅ same |
| Outputs: Findings ✅ same Reachability ✅ same VEX ✅ same Verdict ✅ same |
+--------------------------------------------------------------------------------------------------+
2.11 Screen — Export Center
New location: Evidence & Audit → Export Center
Previously: Evidence → Export (“Export Center”)
Why changed:
- Keep it evidence-centered; export is how auditors receive proof (zip/tgz/OCI).
Screen graph (Mermaid)
flowchart TD
X["Export Center"] --> P["Profiles"]
X --> R["Export Runs"]
P --> E["Edit Profile"]
R --> D["Export Run Detail"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Evidence & Audit / Export Center [Create Profile] |
| formerly: Evidence → Export (Export Center) |
|--------------------------------------------------------------------------------------------------|
| Profiles |
| - StellaBundle (OCI referrer) includes: SBOM, findings, attestations, provenance, VEX, policy |
| - Daily Compliance Export schedule: daily → S3 compliance-bucket |
| - Audit Bundle manual zip for external auditors |
|--------------------------------------------------------------------------------------------------|
| Tabs: [Profiles] [Export Runs] |
+--------------------------------------------------------------------------------------------------+
2.12 Screen — Export Run Detail
New location: Export Center → Export Runs → (Run)
Previously: not explicit
Why changed:
- Make exports verifiable: show hash, signature status, destinations, and linked capsules.
Screen graph (Mermaid)
flowchart LR
D["Export Run Detail"] --> A["Artifacts produced"]
D --> S["Signatures + verification"]
D --> DST["Destinations + delivery logs"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Export Run: exp-8812 (SUCCESS ✅) [Download] [Verify] |
| formerly: Evidence → Export (run row) |
|--------------------------------------------------------------------------------------------------|
| Profile: Audit Bundle Output: audit-bundle-2026-02-18.zip sha256:... DSSE: ✅ |
| Contents: 14 capsules, 32 packets, proof graphs, policy pack v12, feed snapshots |
| Destinations: S3://compliance-bucket (ok) |
+--------------------------------------------------------------------------------------------------+
2.13 Screen — Coverage Metrics (Attestation coverage)
New location: Evidence & Audit → Coverage Metrics
Previously: Analytics → SBOM Lake (“SBOM Lake”)
Why changed:
- This is not “analytics for analytics sake”; it’s audit readiness coverage (SBOM, reachability, VEX, policy decision, approvals).
- Renaming aligns it with operational meaning.
Screen graph (Mermaid)
flowchart TD
C["Coverage Metrics"] --> F["Filters (region/env/time/severity)"]
C --> T["Coverage by attestation type"]
C --> G["Gaps list (what's missing where)"]
G --> L["Deep links: jobs/integrations causing gaps"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Evidence & Audit / Coverage Metrics [Export CSV] [Refresh] |
| formerly: Analytics → SBOM Lake |
|--------------------------------------------------------------------------------------------------|
| Filters: Region [All] Env [All] Time [30d] Min Severity [All] |
|--------------------------------------------------------------------------------------------------|
| Coverage by attestation type |
| SBOM 100% (0 missing) |
| Reachability 78% (runtime missing in prod/eu-west-1) |
| Policy Decision 100% |
| Human Approval 100% |
| VEX 41% (vendor statements not imported for 12 CVEs) |
|--------------------------------------------------------------------------------------------------|
| Gap list (actionable) |
| - prod/eu-west-1: runtime reachability missing → agent offline (link: Ops Platform Health) |
| - advisory freshness: NVD stale 26h → mirror sync failing (link: Ops Feeds & AirGap) |
+--------------------------------------------------------------------------------------------------+
3) OPERATIONS — menus + screens
3.1 Operations menu graph (Mermaid)
flowchart TD
O0["Operations (menu)"]
O1["Ops Summary / Nightly Ops Report"]
O2["Platform Health"]
O3["Scheduler Runs"]
O4["Scheduler Run Detail"]
O5["Orchestrator Jobs"]
O6["Orchestrator Job Detail"]
O7["Dead Letter Queue"]
O8["Quotas & Throttles"]
O9["Worker Fleet"]
O10["Feeds & AirGap (see Pack 2)"]
O0 --> O1
O0 --> O2
O0 --> O3 --> O4
O0 --> O5 --> O6
O0 --> O7
O0 --> O8
O3 --> O9
O0 --> O10
3.2 Screen — Ops Summary / Nightly Ops Report (NEW)
New location: Operations → Ops Summary / Nightly Report
Previously: missing (signals scattered across Scheduler/Feeds/Integrations)
Why changed:
-
You requested a report that tells you when nightly jobs detect issues:
- SBOM re-scan failures
- CVE source not synced / stale
- integrations not connectable
- reachability ingest gaps
-
This page is the “operators’ morning brief” and feeds both Dashboard and Security coverage.
Screen graph (Mermaid)
flowchart LR
N["Nightly Ops Report"] --> J["Job Health (nightly suites)"]
N --> F["Feed Freshness (OSV/NVD/etc)"]
N --> I["Integration Connectivity"]
N --> C["Coverage Gaps (SBOM/reachability/VEX)"]
N --> D["Deep links: Scheduler run / Mirror detail / Integration detail"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Operations / Nightly Ops Report [Export] [Acknowledge] |
| formerly: (missing / implicit) |
|--------------------------------------------------------------------------------------------------|
| Nightly suites (last run window) |
| ✅ SBOM Rescan (images) 02:00–02:18 ok |
| ⚠ Runtime Reachability Ingest 02:00–02:30 degraded (prod/eu-west-1 no agent) |
| ❌ NVD Mirror Sync 02:00–02:10 failed (timeout) |
| ✅ Evidence Seal/Archive 02:20–02:22 ok |
|--------------------------------------------------------------------------------------------------|
| Impact summary |
| - Promotions at risk: prod policy requires “fresh advisories” → NVD stale blocks promotions |
| - Security signal degraded: runtime reachability coverage down in prod/eu-west-1 |
|--------------------------------------------------------------------------------------------------|
| Deep links |
| [Open Scheduler run: nvd-sync#run-881] [Open Feed mirror: nvd-mirror-1] [Open Agent status] |
+--------------------------------------------------------------------------------------------------+
3.3 Screen — Platform Health (services + security pipelines)
New location: Operations → Platform Health
Previously: Operations → Platform Health (“Platform Health”)
Why changed:
-
This must show not only “docker/service up”, but whether security pipelines are healthy:
- advisory freshness, SBOM ingestion, reachability ingestion, evidence sealing, replay service.
Screen graph (Mermaid)
flowchart TD
P["Platform Health"] --> S["Service health (APIs/workers)"]
P --> D["Dependencies (db/queue/storage)"]
P --> SP["Security pipelines (feeds/sbom/reachability/vex)"]
P --> L["Live incidents (last 24h)"]
SP --> N["Nightly report"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Operations / Platform Health [Refresh] [View Incidents]|
| formerly: Operations → Platform Health |
|--------------------------------------------------------------------------------------------------|
| Core Services | Dependencies | Security Pipelines |
|------------------------------------+---------------------------------+---------------------------|
| API Gateway ✅ | Database ✅ | Advisory freshness ❌ NVD |
| Policy Engine ✅ | Queue / Broker ✅ | SBOM ingest ✅ |
| Evidence Locker ✅ | Object Storage ✅ | Reachability ingest ⚠ |
| Replay Service ✅ | Rekor/Transparency ✅ | VEX import ⚠ |
|--------------------------------------------------------------------------------------------------|
| Incident timeline (24h): no user-facing incidents; 2 pipeline degradations tracked |
+--------------------------------------------------------------------------------------------------+
3.4 Screen — Scheduler Runs
New location: Operations → Scheduler Runs
Previously: Operations → Scheduler (“Scheduler Runs”)
Why changed:
- Keep the page, but make it oriented around nightly suites and data freshness with links back to impact (coverage gaps, blocked promotions).
Screen graph (Mermaid)
flowchart TD
S["Scheduler Runs"] --> R["Run Detail"]
S --> M["Manage Schedules"]
S --> W["Worker Fleet"]
R --> L["Logs"]
R --> I["Impact (coverage/gates)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Operations / Scheduler Runs [Manage Schedules] |
| formerly: Operations → Scheduler (Scheduler Runs) |
|--------------------------------------------------------------------------------------------------|
| Filters: Status [All] Window [Last 24h] Job type [All] |
|--------------------------------------------------------------------------------------------------|
| JOB LAST RUN STATUS DURATION NEXT RUN ACTIONS |
| nightly-sbom Feb 18 02:00 ✅ 18m Feb 19 View Logs |
| nightly-runtime Feb 18 02:00 ⚠ 30m Feb 19 View Logs View Impact |
| nvd-sync Feb 18 02:00 ❌ 10m retry View Logs Open Mirror |
+--------------------------------------------------------------------------------------------------+
3.5 Screen — Scheduler Run Detail
New location: Scheduler Runs → (Run)
Previously: minimal
Why changed:
- Adds “impact” panel: what did this job affect (coverage, promotions, alerts).
Screen graph (Mermaid)
flowchart LR
D["Scheduler Run Detail"] --> L["Logs"]
D --> E["Errors + retries"]
D --> O["Outputs (packets/snapshots)"]
D --> I["Impact (coverage/gates)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Scheduler Run: nvd-sync#run-881 (FAILED ❌) [Retry] [Open Mirror] |
| formerly: Operations → Scheduler (inline) |
|--------------------------------------------------------------------------------------------------|
| Error: timeout contacting upstream NVD |
| Outputs: none |
| Impact: |
| - Advisory freshness: NVD stale 26h |
| - Promotion gate: “fresh advisories” will BLOCK prod promotions |
| Links: [Nightly Ops Report] [Feed Mirror Detail] |
+--------------------------------------------------------------------------------------------------+
3.6 Screen — Orchestrator Jobs
New location: Operations → Orchestrator
Previously: Operations → Orchestrator (“Orchestrator Dashboard”)
Why changed:
- Keep access controls, but the main view must be job status + history with drilldowns (promotions, rescans, evidence sealing, backfills).
Screen graph (Mermaid)
flowchart TD
O["Orchestrator Jobs"] --> J["Job list"]
O --> A["Access rights panel"]
J --> D["Job Detail"]
D --> L["Logs"]
D --> DLQ["Send to Dead Letter / recover"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Operations / Orchestrator Jobs [Jobs] [Backfills] |
| formerly: Operations → Orchestrator (Orchestrator Dashboard) |
|--------------------------------------------------------------------------------------------------|
| Access (current user) |
| View jobs: ✅ Granted | Operate: ❌ Denied | Manage quotas: ❌ Denied | Backfill: ❌ Denied |
|--------------------------------------------------------------------------------------------------|
| Recent jobs |
| JOB ID TYPE TARGET/ENV STATUS START ACTIONS |
| job-551 promotion prod/us-east-1 RUNNING 08:10 View |
| job-552 nightly-sbom all COMPLETED 02:00 View |
+--------------------------------------------------------------------------------------------------+
3.7 Screen — Orchestrator Job Detail
New location: Orchestrator → (Job)
Previously: not clear
Why changed:
- Single place for logs, produced artifacts (packets/capsules), and failure recovery actions.
Screen graph (Mermaid)
flowchart LR
D["Job Detail"] --> S["Steps (workflow graph)"]
D --> L["Logs"]
D --> A["Artifacts produced"]
D --> R["Recovery / retry"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Job: job-551 (promotion) [View Capsule] |
| formerly: Operations → Orchestrator (job row) |
|--------------------------------------------------------------------------------------------------|
| Workflow steps: Resolve digests → Evaluate policy → Collect approvals → Deploy → Seal capsule |
| Status: RUNNING (Deploy step) |
| Artifacts: pkt-... capsule-... (pending) |
+--------------------------------------------------------------------------------------------------+
3.8 Screen — Dead Letter Queue
New location: Operations → Dead Letter Queue
Previously: Operations → Dead Letter (“Dead-Letter Queue Management”)
Why changed:
- DLQ is for failed jobs and should integrate with retry/replay and exports (so you can attach failure evidence).
Screen graph (Mermaid)
flowchart TD
D["Dead Letter Queue"] --> E["Entry Detail"]
E --> R["Replay / retry job"]
E --> L["Logs"]
E --> X["Export failure bundle (optional)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Operations / Dead Letter Queue [Export CSV] [Replay All]|
| formerly: Operations → Dead Letter (Dead-Letter Queue Management) |
|--------------------------------------------------------------------------------------------------|
| Filters: Error type [All] Status [All] Search [job id / entry id] |
|--------------------------------------------------------------------------------------------------|
| ENTRY ID JOB ID ERROR FIRST SEEN STATUS ACTIONS |
| dlq-001 job-77 feed timeout (NVD) Feb 18 02:05 retriable View Replay |
| dlq-002 job-88 agent offline Feb 18 02:06 blocked View Diagnose |
+--------------------------------------------------------------------------------------------------+
3.9 Screen — Quotas & Throttles (runtime ops)
New location: Operations → Quotas & Throttles
Previously: Operations → Quotas (“Operator Quota Dashboard”)
Why changed:
- Separate runtime throttling + recent throttle events (Ops) from tenant quota configuration (Administration → Usage & Limits).
Screen graph (Mermaid)
flowchart LR
Q["Quotas & Throttles"] --> C["Consumption trend (scans/evidence/api)"]
Q --> T["Throttle events"]
Q --> A["Admin: Usage & Limits (configure)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Operations / Quotas & Throttles [Configure Alerts] |
| formerly: Operations → Quotas (Operator Quota Dashboard) |
|--------------------------------------------------------------------------------------------------|
| Consumption (30d): Scans ████░ Evidence packets ███░ API █████░ Storage ███░ |
|--------------------------------------------------------------------------------------------------|
| Recent throttle events (24h): none |
| Note: configure limits in Administration → Usage & Limits. |
+--------------------------------------------------------------------------------------------------+
3.10 Screen — Worker Fleet
New location: Operations → Scheduler Runs → Worker Fleet
Previously: “Worker Fleet” button existed but not surfaced as a core operational screen
Why changed:
- Reachability runtime ingestion and SBOM jobs depend on workers/agents; fleet health should be one click from Scheduler and from Hybrid Reachability gaps.
Screen graph (Mermaid)
flowchart TD
W["Worker Fleet"] --> N["Nodes/workers list"]
W --> H["Heartbeat + load"]
W --> C["Capabilities (sbom, reachability, export)"]
ASCII mock
+--------------------------------------------------------------------------------------------------+
| Operations / Worker Fleet [Drain] [Restart] |
| formerly: Scheduler → Worker Fleet (button) |
|--------------------------------------------------------------------------------------------------|
| WORKER ROLE(S) HEARTBEAT LOAD STATUS |
| worker-us-e1-01 sbom, policy, export 10s 0.4 ✅ |
| agent-eu-w1-01 runtime reachability 6h — ❌ offline |
|--------------------------------------------------------------------------------------------------|
| Note: offline runtime agents directly reduce hybrid reachability coverage. |
+--------------------------------------------------------------------------------------------------+
Your “continue” pointer
If you want Pack 4, I’ll cover the remaining Release Control runtime screens (Releases, Approvals, Deployments, Regions/Env detail) with the same: menu mermaid + per-screen mermaid + ASCII + formerly/why—but I didn’t repeat them here to avoid duplicating what we already established in Packs 1–2.