Deterministic Reachability — Product Moat

Audience: Architects, product marketing, and field teams who need the canonical, high-level articulation of the Stella Ops reachability moat.

Source: internal advisory “23-Nov-2025 - Where Stella Ops Can Truly Lead”. Supersedes/extends archived binary reachability advisories (18-Nov-2025 - Binary-Reachability-Engine, Encoding Binary Reachability with PURL-Resolved Edges, CSharp-Binary-Analyzer). Detailed schemas live in the evidence schema and hybrid attestation guide.

Why it matters

Moat elements

  1. Deterministic call-graphs per artifact
    • Stable node IDs: purl@version!build-id!symbol-signature (or code offset when stripped).
    • Stable edge IDs: SHA256(nodeA||nodeB||tool-version||inputs-hash).
    • Graph hash: BLAKE3 over canonical JSON; locked by manifest.
  2. Signed evidence
    • Graph-level DSSE for every scan (mandatory).
    • Optional edge-bundle DSSE (≤512 edges) for runtime/init/contested edges; Rekor publish capped. See docs/modules/reach-graph/guides/hybrid-attestation.md.
  3. Explainability
    • Each finding carries call-chain + per-edge reason + VEX gate decision + layer attribution.
  4. Container layer provenance
    • Track file-to-layer mapping; show “introduced in layer X from base Y”.
  5. Replayability
    • Determinism manifest locks feeds, toolchain hashes, analyzer flags; replay yields identical graph and attestations.

Minimal architecture slice

Practical spec (condensed)

Example: Edge-bundle DSSE payload (abridged)

{
  "graph_hash": "blake3:...",
  "bundle_reason": "runtime-hit",
  "edges": [{
    "edge_id": "sha256:...",
    "from": "sym:...caller",
    "to": "sym:...callee",
    "reason": "plt",
    "purl": "pkg:deb/openssl@3.0.2?arch=amd64",
    "symbol_digest": "sha256:...",
    "revoked": false
  }]
}

Field cheat sheet (for sprint readers)

Quick wins (ship order)

  1. Capture Build-IDs in Scanner and thread into symbol_id/code_id.
  2. Emit Graph Determinism Manifest (feeds + toolchain hashes) per scan.
  3. Turn on edge-bundle DSSE for runtime/init edges first; keep Rekor cap low.
  4. Surface “why path” + layer attribution in CLI/UI explainers.

APIs (strawman)