Files
git.stella-ops.org/docs-archived/product/advisories/17-Jan-2026 - Features Gap.md
2026-01-16 23:30:47 +02:00

23 KiB
Raw Permalink Blame History

Product Advisory: Interface Surfacing Strategy for “Hidden” Backend Capabilities

ID: ADVISORY-20260116-IFACE-SURFACING Status: ACTIVE Owner intent: Product-wide directive Applies to: FEATURE_MATRIX.md, CLI, Web UI, Doctor, module dossiers, sprints

0) Why this advisory exists

The Feature Gaps Report shows a typical problem in fast-moving monorepos:

  • capabilities exist in code,
  • but are not surfaced in CLI/UI,
  • and therefore are not usable, not supportable, and not credibly marketable. This product advisory is based features discovered and documented on file FEATURE_GAPS_REPORT.md in code but not listed in FEATURE_MATRIX.md

Therefore, interface work must do two things:

  1. reduce support burden (“Doctor-first operability”), and
  2. strengthen the suites moat (evidence-grade decisions, explainability, determinism).

This advisory defines which backend capabilities should be surfaced via CLI and/or UI, and the minimal “how” to do it.


1) Non-negotiable principles (solo-scale rules)

P1: No “capability theatre”

If a capability is claimed in FEATURE_MATRIX.md as “available”, it must have:

  • a supported activation path (UI or CLI or config + Doctor validation), and
  • documentation that explains how to use it.

If not, it must be marked as:

  • Automatic (always-on), or
  • Internal (not supported / not marketed), or
  • Planned.

P2: Prefer “exports” and “inspectors” over new UI pages

To avoid UI explosion, surface many capabilities as:

  • Export profiles (downloadable artifacts)
  • Inspector views (read-only detail panes)
  • Minimal admin actions (rotate key, test connector, download SARIF)

Avoid building bespoke UI workflows unless they materially reduce operator labor.

P3: CLI is the control plane for automation and air-gap

Anything used in:

  • CI,
  • offline operations,
  • bulk admin,
  • reproducibility / debugging, must have a CLI path.

UI is for:

  • day-to-day operator workflows,
  • triage,
  • explainability (“why blocked?”),
  • visualizations.

P4: Doctor-first for support reduction

If a feature is likely to generate tickets (connectors, crypto, queues, replay), it must have:

  • a Doctor check (and a Doctor bundle payload),
  • deterministic “reason codes” for failures,
  • a runbook entry.

P5: Progressive disclosure

Dont overwhelm users with advanced controls. Expose:

  • simple defaults in UI,
  • advanced knobs in CLI/config,
  • deep internals only in Doctor bundles.

2) Decision rubric: UI vs CLI vs Doc-only

Classify each discovered capability into exactly one of these:

Class A — Automatic (Doc-only)

Use when the capability:

  • runs implicitly as part of scan/policy/evidence workflows, and
  • doesnt require user input to be valuable.

Requirement:

  • Document it in FEATURE_MATRIX.md as Automatic.
  • Ensure its outcomes show up in existing UI/exports (e.g., findings detail, evidence packet).

Examples:

  • Secrets detection that runs during scan
  • OS package analyzers invoked implicitly
  • Symlink/whiteout handling in layered filesystem

Class B — CLI-first (automation/admin/offline)

Use when the capability:

  • is primarily an operator/admin action,
  • is needed in automation/CI,
  • is needed offline,
  • or is a bulk/advanced workflow.

Requirement:

  • Add CLI commands with --format json and --output.
  • Update docs with copy/paste examples.
  • Add Doctor checks if it can fail due to environment dependencies.

Examples:

  • SBOM convert/validate
  • Key rotation, trust anchors
  • Policy verdict export
  • Timeline/HLC inspection

Class C — UI-first (triage/explainability)

Use when the capability:

  • improves human decision-making,
  • reduces triage effort,
  • is part of “why blocked/approved”.

Requirement:

  • Add a minimal UI surface (read-only or download action).
  • Provide deterministic “reason” traces and evidence links.

Examples:

  • Path witness visualization for reachability
  • SARIF download in the UI
  • Connector status dashboard

Class D — Both (high-value + frequent usage)

Use when the capability:

  • is used in pipelines (CLI), and
  • is also used in investigations/audits (UI).

Examples:

  • Audit bundle export
  • VEX consensus/verification
  • Evidence packs

Class E — Internal (do not surface yet)

Use when the capability:

  • is not stable enough to support,
  • would multiply permutations,
  • or is not aligned with current product focus.

Requirement:

  • Do not list as a primary feature in FEATURE_MATRIX.md.
  • It may remain in a “Known internal capabilities” appendix for engineering only.

3) Priority: what to surface first (P0/P1/P2)

P0 (must surface) — Moat + Support reduction

These directly improve “why blocked?”, auditability, operability, and adoption.

P0-1: Exports and evidence surfaces

  • Add/standardize CLI:
    • stella export audit ...
    • stella export lineage ...
    • stella export risk ...
    • stella export evidence-pack ...
  • UI: ensure Export Center supports:
    • download audit bundles,
    • download lineage evidence packs,
    • download risk bundles.

Acceptance:

  • Export outputs are deterministic, versioned, and include a manifest with hashes.
  • Doctor validates export prerequisites (storage, permissions, disk space).

P0-2: “Why blocked?” explainability completeness

  • CLI:
    • stella score explain <digest|runId> --format json
    • stella reachability witness <digest> --vuln <cve> --format mermaid|json
    • stella reachability guards <digest> --format json
  • UI:
    • add “Witness Path” view for reachable findings (Mermaid/GraphViz render),
    • show confidence breakdown (path/guard/runtime components),
    • link to evidence URIs (stella://...) and replay manifests where available.

Acceptance:

  • For any blocked decision, UI can show:
    • which gate blocked,
    • what evidence triggered it,
    • and at least one witness or explanation trace.

P0-3: SARIF in UI (high adoption win)

  • UI: add “Download SARIF” for a scan run and/or digest.
  • CLI already exists (stella scan sarif).

Acceptance:

  • UI downloads match CLI outputs (same schema/version).
  • Exports include metadata (digest, scan time, policy profile id).

P0-4: Concelier connector truth (reduce ticket load)

  • Docs: update FEATURE_MATRIX.md to reflect connector reality (33+ connectors).
  • UI: add a “Feeds & Connectors Status” page:
    • list connectors, last success, last error, next scheduled run (if applicable),
    • link to logs and Doctor bundle instructions.
  • CLI:
    • stella db status
    • stella db connectors list
    • stella db connectors test <name>

Acceptance:

  • Any ingestion failure has a reason code and remediation hint.

P1 (next) — Admin confidence + advanced workflows

These increase operational safety and enterprise readiness without large UI build.

P1-1: SBOM lineage CLI parity (UI already exists)

  • Add:
    • stella sbom lineage list
    • stella sbom lineage show <id>
    • stella sbom lineage export <id> --format json|spdx|cdx

P1-2: VEX operational completeness

  • CLI:
    • stella vex verify <doc>
    • stella vex evidence export <digest|component>
    • stella vex webhooks list/add/remove
    • stella issuer keys list/create/rotate/revoke
  • UI:
    • minimal webhook management screen (list + add/remove),
    • issuer keys page can remain UI-only if already present, but CLI needed for automation.

P1-3: Policy debug and portability

  • CLI:
    • stella policy lattice explain ...
    • stella policy verdicts export ...
    • stella policy promote ... (if promotion pipeline exists)
  • UI:
    • add “download verdict” and “download decision capsule” actions in policy and release views.

P1-4: Auth/admin CLI coverage

  • Add CLI wrappers for UI-only admin tasks:
    • stella auth clients list/create/...
    • stella auth roles ...
    • stella auth scopes list
    • stella auth token inspect
    • stella auth api-keys ...

P2 (later) — Nice-to-have / heavy UI

These can be strong, but risk expanding support and UI scope.

  • BinaryIndex corpus ingestion UI
  • Fingerprint visualization UI
  • Evidence holds (legal hold) management UI
  • Incident mode workflows and dashboards beyond a basic toggle + export hooks
  • Full timeline UI (unless needed for core workflows)

This section is the “agent checklist”.

Batch 1: SBOM & ingestion

  • SPDX 3.0 Build Attestation
    • Class: D (Both) if used for audits; otherwise B (CLI-first)
    • CLI: stella attest build --format spdx3 --output ...
    • UI: Export Center adds “Build Attestation (SPDX 3.0)”
  • CycloneDX CBOM Support
    • Class: B (CLI-first) + Doc
    • CLI: stella sbom export --type cbom --format cdx
  • Layer SBOM composition
    • Class: B (CLI-first) + Doc
    • Ensure docs explain when/why layer SBOM is useful (base image triage, provenance).
  • SBOM advisory matching
    • Class: A (Automatic) + UI visibility
    • UI: show “matched advisory sources” in SBOM/finding details; doc-only if already visible.
  • Graph lineage service (UI exists)
    • Class: B (CLI-first) to match UI
    • CLI: stella graph lineage show <digest|purl>
  • SBOM validation pipeline / format conversion
    • Class: B (CLI-first)
    • CLI: stella sbom validate, stella sbom convert
  • Trivy DB export (offline)
    • Class: B (CLI-first) + optional UI under Offline Kit
    • UI: optional “download trivy db” action if it reduces ticket load.

Batch 2: scanning & detection

  • Secrets detection, OS analyzers
    • Class: A (Automatic) + Document
    • Update FEATURE_MATRIX.md: “runs during scan; shown in findings”.
  • Symbol-level vulnerability matching
    • Class: C (UI-first) if it materially improves triage
    • UI: “Symbol match” tab in finding detail (no heavy workflow).
  • SARIF export
    • Class: D (Both)
    • Add UI download.
  • Concurrent worker config
    • Class: B (CLI-first)
    • CLI: stella scanner workers set/get or stella scan run --workers N.

Batch 3: reachability analysis

  • Confidence calculator / EWS explanation
    • Class: D (Both)
    • CLI: stella score explain, stella reachability explain
    • UI: confidence breakdown and witness.
  • Path witness generation
    • Class: C (UI-first) + keep CLI support
    • UI: render witness (Mermaid/GraphViz).
  • Runtime signal correlation
    • Class: B (CLI-first) to complement UI
    • CLI: stella signals inspect <digest|runId>
  • Gate detection (guards)
    • Class: B (CLI-first) + UI is already present
    • CLI: stella reachability guards <digest>.

Batch 4: binary analysis

  • Keep CLI-first; avoid UI until demanded.
  • Add minimal doc + optional UI download links (export fingerprint result) later.

Batch 5: advisory sources / Concelier

  • Primary action: documentation correction + connector status.
  • UI: Feeds & Connectors Status page (P0).
  • CLI: connector list/status/test.

Batch 6: VEX processing

  • P1: CLI for verify/evidence export/webhooks/issuer keys.
  • UI: minimal webhook mgmt + improve “consensus rationale” explainability.

Batch 7: policy engine

  • P1: CLI lattice explain, verdict export, risk provider config exposure (at least in docs + config validation + Doctor).
  • UI: provide download actions; avoid building policy authoring wizard.

Batch 8: attestation & signing

  • Key rotation and trust anchors:
    • Class: B (CLI-first), optionally UI later
    • CLI: stella keys rotate, stella trust-anchors add/list/remove
  • Predicate registry browser:
    • Class: B (CLI-first)
    • CLI: stella attest predicates list
  • Signer audit logs:
    • Class: B (CLI-first)
    • CLI: stella sign audit export.

Batch 9: regional crypto

  • Crypto profiles and plugin health:
    • Class: B (CLI-first)
    • CLI: stella crypto profiles list/select, stella crypto plugins status
    • Doctor checks required (HSM/PKCS#11 availability, cert chains, etc.)

Batch 10: evidence & findings

  • Audit bundle export:
    • Class: D (Both)
    • CLI: stella export audit
    • UI: ensure its a first-class export action.
  • Evidence holds / incident mode:
    • Class: P2 unless required by early customers; keep as internal or config-only with docs.

Batch 11: determinism & replay

  • HLC inspection, timeline query, scoring explanation:
    • Class: B (CLI-first) for diagnostics
    • CLI: stella hlc status, stella timeline query, stella score explain.

Batch 12: operations

  • Where UI exists but CLI missing:
    • Class: B (CLI-first)
    • Add:
      • stella orchestrator jobs list/show/retry/cancel
      • stella orchestrator deadletter list/show/replay
      • stella scheduler preview

Batch 13: release orchestration

  • (When release orchestration is shipped)
    • Class: D (Both)
    • CLI parity required:
      • stella release create/promote/rollback
      • stella release hooks ...
      • stella agent status

Batch 14: auth & access control

  • Class: B (CLI-first)
  • Add admin CLI wrappers for: scopes, clients, roles, api-keys, token inspect.

Batch 15: notifications & integrations

  • UI exists; add CLI for automation/testing:
    • stella notify channels list/test
    • stella notify templates list/render
    • stella integrations test
    • stella notify preferences export/import

5) Documentation requirements (must be done alongside surfacing)

When surfacing a capability:

  1. Update FEATURE_MATRIX.md (and the correct category).
  2. Update the relevant module dossier (docs/modules/<module>/architecture.md or a dedicated guide).
  3. Add examples (copy/paste) for CLI usage and for UI navigation paths.
  4. If the capability is automatic, document where its output appears.

Also: do not claim “UI support” if it is “API-only”.


6) Implementation pattern (avoid interface sprawl)

Preferred UI patterns

  • “Download” button for exportable artifacts (SARIF, audit bundle, evidence pack).
  • “Inspector” panels inside existing pages (Findings detail, VEX detail, Policy detail).
  • One consolidated “Ops” section for status dashboards.
  • One consolidated “Integrations” section for connectors and tests.

Preferred CLI patterns

  • Command groups match product nouns:
    • stella sbom ...
    • stella export ...
    • stella vex ...
    • stella policy ...
    • stella auth ...
    • stella keys ...
    • stella reachability ...
    • stella orchestrator ...
  • Every new CLI command must support:
    • --format json (machine use)
    • --output <path> (CI use)
    • deterministic ordering and stable schemas

7) Definition of Done (interface surfacing)

For any interface surfacing task:

DOD-1: Feature matrix updated with correct classification (A/B/C/D/E) DOD-2: CLI/UI path implemented (as required by classification) DOD-3: Docs updated with copy/paste examples and screenshots where appropriate DOD-4: Doctor coverage added if failures are environment-dependent DOD-5: Determinism tests added if outputs are exported/signed/hashed DOD-6: Reason codes and explainability exist for decision-related features


  1. P0 exports completeness: Export Center + stella export ... standardization
  2. P0 explainability: witness path UI + stella score explain
  3. P0 SARIF UI download
  4. P0 Feeds/connectors status UI + CLI
  5. P1 SBOM lineage CLI parity
  6. P1 VEX verify/evidence export + webhooks mgmt
  7. P1 Policy debug + verdict export
  8. P1 Admin CLI (auth/keys/crypto profiles)

Archive this advisory only when superseded by a newer interface strategy directive.


Heres a tight UX spec you can drop into StellaOps to make “prooffirst” triage obvious and quiet by default.

Triage Card (Signed Evidence Card)

  • Purpose: Show one issue = one verifiable proof bundle.

  • Header: vuln id + package@version + scope (image/layer/path). Right side: Risk chip (score + reason).

  • Oneclick “Rekor Verify”: Runs DSSE/Sigstore verify and expands to show:

    • signature subject/issuer, timestamp, Rekor index + raw entry (copyable), digest(s).
  • Evidence chips: OpenVEX status (affected/not_affected), patch proof (binary/backport), reachability (stack path), EPSS band.

  • Actions: “Explain” (AI note), “Create task,” “Mute (reasoned),” “Export evidence (.dsse)”.

  • Microinteractions:

    • Hover on chips → minitooltip with why.
    • Copy icons on digests/Rekor IDs.
    • Keyboard shortcuts: v verify, e export, m mute.

BinaryDiff Panel

  • Purpose: Prove fixes at the binary level, not just SBOM claims.

  • Scope selector: file → section → function.

  • Layers: Base vs candidate (or pre vs postpatch) with inline diff.

  • Hashes: Perfile SHA256, persection, perfunction rolling hashes.

  • Context: CWE + symbol names, addresses, and relocation notes.

  • Artifacts:

    • Export “Signed Diff” → DSSE envelope (hash map + metadata + signer + timestamp).
    • Attach to the triage card as “Patch proof”.
  • Microinteractions:

    • Click on symbol in callgraph to jump to function diff.
    • Toggle opcodes ⇄ decompiled view (if available).
    • “Show only changed blocks” toggle.

Quiet/Accessible Filter Strip

  • Purpose: Deterministic, lownoise prioritization—no casino lights.

  • Precedence toggles (left→right strongest to weakest):

    1. OpenVEX (not_affected/affected)
    2. Patch proof present
    3. Reachability (callpath to runtime)
    4. EPSS (≥ threshold)
  • Determinism: When ties occur, sort by OCI digest, then path, then CVSS.

  • Controls:

    • EPSS slider; “Only reachable” checkbox; “Only with patch proof” checkbox.
    • “Deterministic order” lock icon (on by default).
  • A11y: Highcontrast theme, focus rings, full keyboard nav, prefersreducedmotion honored; all chips have arialabels.

  • Microinteractions: Filters update counts without reflow; announcement region reads changes.


Why this matters

  • Trustable triage: Users see cryptographic evidence (signatures, Rekor entries, perfunction hashes), not just scanner claims.
  • Noisefree: Precedence rules (OpenVEX → patch proof → reachability → EPSS) cut alert fatigue predictably.
  • Auditready: Every click can emit an exportable DSSEsigned artifact for tickets, audits, and vendors.

Minimal data model additions

  • EvidencePacket { sbom_ref, dsse_envelope, rekor_index, signer, timestamp }
  • BinaryProof { file_hashes[], section_hashes[], function_hashes[], diff_summary }
  • TriageMeta { openvex_status, reachability_path[], epss_score, precedence_tuple }

DonemeansDone checks

  • Triage card verify shows raw Rekor JSON + signature details.
  • Binarydiff export produces a DSSE file that reverifies offline.
  • Filter strip yields identical ordering given the same inputs (golden test).
  • Keyboardonly usage covers: open card, verify, export, toggle filters, navigate diffs.

Want me to turn this into three Figmaready wireframes (with exact layout specs and arialabels), or generate sample DSSE envelopes + Rekor verify outputs so your team can test endtoend?

-- Heres a tight, practical first pass for a “doctor” setup wizard that runs right after install and anytime from Settings → Diagnostics. It gives instant confidence that StellaOps is wired correctly, without needing full integrations configured.


What the “doctor” does (in plain terms)

It runs a few lightweight health checks to confirm your system can:

  • talk to its database,
  • reach its attestation store (for signed proofs),
  • verify a sample artifact endtoend (SBOM + VEX).

If these pass, your install is sound and you can add integrations later at your pace.


Mandatory checks (first pass)

  1. DB connectivity + schema version
  • Why: If the DB is unreachable or the schema is outdated, nothing else matters.

  • Checks:

    • TCP/connect to Postgres URI.
    • SELECT 1; liveness.
    • Read schema_version from stella.meta (or your flyway/liquibase table).
    • Compare to the apps expected version; warn if migrations pending.
  • CLI sketch:

    stella doctor db \
      --url "$STELLA_DB_URL" \
      --expect-schema "2026.01.0"
    
  • Pass criteria: reachable + current (or actionable “run migrations” hint).

  1. Attestation store availability (Rekor/Cosign)
  • Why: Stella relies on signed evidence; if the ledger/store isnt reachable, you cant prove integrity.

  • Checks:

    • Resolve/HTTP 200 for Rekor base URL (or your mirror).
    • Cosign key material present (KMS, keyless, or offline bundle).
    • Clock skew sanity (<5s) for signature verification.
  • CLI sketch:

    stella doctor attest \
      --rekor-url "$STELLA_REKOR_URL" \
      --cosign-key "$STELLA_COSIGN_KEY" \
      --mode "online|offline"
    
  • Pass criteria: ledger reachable (or offline bundle found) + keys valid.

  1. Artifact verification pipeline run (SBOM + VEX sample)
  • Why: Proves the whole trust path works—fetch, verify, evaluate policy.

  • Checks:

    • Pull a tiny, known test artifact by digest (immutable).
    • Verify signature/attestations (DSSE in Rekor or offline bundle).
    • Fetch/validate SBOM (CycloneDX/SPDX) and a sample VEX.
    • Run policy engine: “nogo if critical vulns without VEX justification.”
  • CLI sketch:

    stella doctor verify \
      --artifact "oci://registry.example/test@sha256:deadbeef..." \
      --require-sbom \
      --require-vex
    
  • Pass criteria: signature + SBOM + VEX validate; policy engine returns .


Output & UX

  • Onescreen summary with green/yellow/red statuses and terse fixes.
  • Copypaste remediations (DB URI example, Rekor URL, cosign key path).
  • Evidence links (e.g., “View attestation entry” or “Open policy run”).
  • Export: stella doctor --json > doctor-report.json for support.

Where this fits in the installer/wizard

  • UI & CLI both follow the same steps:

    1. DB setup → quick migration → Doctor: DB
    2. Choose attestation mode (Rekor/cosign keyless/offline bundle) → Doctor: Attest
    3. Minimal “verification pipeline” config (test registry creds or bundled sample) → Doctor: Verify
  • Each step has defaults (Postgres + Rekor URL + bundled demo artifact) and a “Skip for now” with a reminder tile in Settings → Integrations.


Failure → Suggested fixes (examples)

  • DB schema mismatch → “Run stella migrate up to 2026.01.0.”
  • Rekor unreachable → “Check DNS/proxy; or switch to Offline Attestations in Settings.”
  • Cosign key missing → “Add key (KMS/file) or enable keyless; see Keys → Add.”
  • SBOM/VEX missing → “Enable Generate SBOM on build and Collect VEX from vendors, or load a demo bundle.”

Next steps (beyond first pass)

  • Optional checks the wizard can add later:

    • Registry reachability (pull by digest).
    • Settings store (Valkey cache reachability).
    • Notifications (send test webhook/email).
    • SCM/Vault/LDAP plugin stubs: ping + auth flow (but not required to pass install).

If you want, I can turn this into:

  • a readytoship CLI command spec,
  • a UI wireframe of the three-step doctor,
  • or JSON schemas for the doctors machinereadable report.