Roadmap reference — not current CLI (reconciled 2026-10-14). The compute, findings, explain-all, summary, and job-* surface documented below is not registered in the CLI at HEAD. The registered explain, witness, guards, graph-query and slice-query verbs are discoverable placeholders that fail closed with exit code 9 and emit no domain result. Implemented paths are local-file show/export, Scanner-backed trace and the supported witness-record operations under witness-ops (CCP-089 source qualification, 2026-10-14). Its export and unsupported modes still refuse. Do not copy commands from this roadmap into operator automation.
This reference documents the extended stella reachability and stella scan graph command surface for call-graph management, reachability computation, and explain queries. All commands support air-gapped operation.
For the common day-to-day workflow (upload-callgraph, list, explain), see the stella reachability command guide.
Manage reachability analysis.
stella reachability <SUBCOMMAND> [OPTIONS]
| Subcommand | Description |
|---|
compute | Trigger reachability computation |
findings | List reachability findings |
explain | Explain reachability verdict |
explain-all | Export all explanations |
summary | Show reachability summary |
job-status | Check computation job status |
job-logs | View job logs |
job-cancel | Cancel running job |
Trigger reachability computation for a scan.
stella reachability compute [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Scan ID | Required |
--max-depth <N> | Maximum path length to explore | 10 |
--indirect-resolution <MODE> | Handle indirect calls: conservative, aggressive, skip | conservative |
--timeout <DURATION> | Maximum computation time | 300s |
--parallel | Enable parallel BFS | true |
--include-runtime | Merge runtime evidence | true |
--offline | Run in offline mode | false |
--symbol-db <PATH> | Symbol resolution database | System default |
--deterministic | Enable deterministic mode | true |
--seed <BASE64> | Random seed for determinism | Auto |
--graph-digest <HASH> | Use specific call graph version | Latest |
--partition-by <KEY> | Partition analysis: artifact, entrypoint | — |
--force | Force recomputation | false |
--wait | Wait for completion | false |
# Basic computation
stella reachability compute --scan-id $SCAN_ID
# With custom options
stella reachability compute --scan-id $SCAN_ID \
--max-depth 20 \
--timeout 600s \
--indirect-resolution conservative
# Wait for completion
stella reachability compute --scan-id $SCAN_ID --wait
# Offline computation
stella reachability compute --scan-id $SCAN_ID --offline
List reachability findings for a scan.
stella reachability findings [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Scan ID | Required |
--status <STATUS> | Filter by status (comma-separated) | All |
--cve <ID> | Filter by CVE ID | — |
--purl <PURL> | Filter by package URL | — |
--min-confidence <N> | Minimum confidence (0-1) | 0 |
--output <PATH> | Output file path | stdout |
--output-format <FMT> | Format: json, yaml, table, sarif | table |
| Status | Description |
|---|
UNREACHABLE | No path found |
POSSIBLY_REACHABLE | Path with heuristic edges |
REACHABLE_STATIC | Statically proven path |
REACHABLE_PROVEN | Runtime confirmed |
UNKNOWN | Insufficient data |
# List all findings
stella reachability findings --scan-id $SCAN_ID
# Filter by status
stella reachability findings --scan-id $SCAN_ID \
--status REACHABLE_STATIC,REACHABLE_PROVEN
# Export as SARIF for CI
stella reachability findings --scan-id $SCAN_ID \
--status REACHABLE_STATIC,REACHABLE_PROVEN \
--output-format sarif \
--output findings.sarif
# JSON output
stella reachability findings --scan-id $SCAN_ID --output-format json
Explain a reachability verdict.
stella reachability explain [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Scan ID | Required |
--cve <ID> | CVE ID | Required |
--purl <PURL> | Package URL | Required |
--all-paths | Show all paths, not just shortest | false |
--max-paths <N> | Maximum paths to show | 5 |
--verbose | Show detailed explanation | false |
--offline | Run in offline mode | false |
--output <PATH> | Output file path | stdout |
--output-format <FMT> | Format: json, yaml, text | text |
# Explain single finding
stella reachability explain --scan-id $SCAN_ID \
--cve CVE-2024-1234 \
--purl "pkg:npm/lodash@4.17.20"
# Show all paths
stella reachability explain --scan-id $SCAN_ID \
--cve CVE-2024-1234 \
--purl "pkg:npm/lodash@4.17.20" \
--all-paths
# JSON output
stella reachability explain --scan-id $SCAN_ID \
--cve CVE-2024-1234 \
--purl "pkg:npm/lodash@4.17.20" \
--output-format json
Status: REACHABLE_STATIC
Confidence: 0.70
Shortest Path (depth=3):
[0] MyApp.Controllers.OrdersController::Get(Guid)
Entrypoint: HTTP GET /api/orders/{id}
[1] MyApp.Services.OrderService::Process(Order)
Edge: static (direct_call)
[2] Lodash.merge(Object, Object) [VULNERABLE]
Edge: static (direct_call)
Why Reachable:
- Static call path exists from HTTP entrypoint /api/orders/{id}
- All edges are statically proven (no heuristics)
- Vulnerable function Lodash.merge() is directly invoked
Confidence Factors:
staticPathExists: +0.50
noHeuristicEdges: +0.20
runtimeConfirmed: +0.00
Alternative Paths: 2
Export all reachability explanations.
stella reachability explain-all [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Scan ID | Required |
--status <STATUS> | Filter by status | All |
--output <PATH> | Output file path | Required |
--offline | Run in offline mode | false |
# Export all explanations
stella reachability explain-all --scan-id $SCAN_ID --output explanations.json
# Export only reachable findings
stella reachability explain-all --scan-id $SCAN_ID \
--status REACHABLE_STATIC,REACHABLE_PROVEN \
--output reachable-explanations.json
Show reachability summary for a scan.
stella reachability summary [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Scan ID | Required |
--output-format <FMT> | Format: json, yaml, table | table |
# Show summary
stella reachability summary --scan-id $SCAN_ID
# Output:
# Total vulnerabilities: 45
# Unreachable: 38 (84%)
# Possibly reachable: 4 (9%)
# Reachable (static): 2 (4%)
# Reachable (proven): 1 (2%)
# Unknown: 0 (0%)
Check computation job status.
stella reachability job-status [OPTIONS]
| Option | Description | Default |
|---|
--job-id <ID> | Job ID | Required |
stella reachability job-status --job-id reachability-job-001
# Output:
# Status: running
# Progress: 67% (8,234 / 12,345 nodes visited)
# Started: 2025-12-20T10:00:00Z
# Estimated completion: 2025-12-20T10:02:30Z
Manage call graphs.
stella scan graph <SUBCOMMAND> [OPTIONS]
| Subcommand | Description |
|---|
upload | Upload call graph |
summary | Show call graph summary |
entrypoints | List entrypoints |
export | Export call graph |
validate | Validate call graph |
visualize | Generate visualization |
convert | Convert graph format |
partition | Partition large graph |
merge | Merge multiple graphs |
Upload a call graph to a scan.
stella scan graph upload [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Scan ID | Required |
--file <PATH> | Call graph file | Required |
--format <FMT> | Format: json, ndjson | Auto-detect |
--streaming | Use streaming upload | false |
--framework <NAME> | Framework hint | Auto-detect |
# Basic upload
stella scan graph upload --scan-id $SCAN_ID --file callgraph.json
# Streaming upload (large graphs)
stella scan graph upload --scan-id $SCAN_ID \
--file callgraph.ndjson \
--format ndjson \
--streaming
# With framework hint
stella scan graph upload --scan-id $SCAN_ID \
--file callgraph.json \
--framework aspnetcore
Show call graph summary.
stella scan graph summary [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Scan ID | Required |
stella scan graph summary --scan-id $SCAN_ID
# Output:
# Nodes: 12,345
# Edges: 56,789
# Entrypoints: 42
# Languages: [dotnet, java]
# Size: 15.2 MB
List detected entrypoints.
stella scan graph entrypoints [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Scan ID | Required |
--verbose | Show detailed info | false |
--output-format <FMT> | Format: json, yaml, table | table |
# List entrypoints
stella scan graph entrypoints --scan-id $SCAN_ID
# Output:
# Kind | Route | Framework | Node
# ─────────┼─────────────────────┼─────────────┼────────────────
# http | GET /api/orders | aspnetcore | OrdersController::Get
# http | POST /api/orders | aspnetcore | OrdersController::Create
# grpc | OrderService.Get | grpc-dotnet | OrderService::GetOrder
Validate call graph structure.
stella scan graph validate [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Validate uploaded graph | — |
--file <PATH> | Validate local file | — |
--strict | Enable strict validation | false |
- All edge targets exist as nodes
- Entrypoints reference valid nodes
- No orphan nodes
- No cycles in entrypoint definitions
- Schema compliance
# Validate uploaded graph
stella scan graph validate --scan-id $SCAN_ID
# Validate before upload
stella scan graph validate --file callgraph.json --strict
Generate call graph visualization.
stella scan graph visualize [OPTIONS]
| Option | Description | Default |
|---|
--scan-id <ID> | Scan ID | Required |
--node <ID> | Center on specific node | — |
--depth <N> | Visualization depth | 3 |
--output <PATH> | Output file (SVG/PNG/DOT) | Required |
--format <FMT> | Format: svg, png, dot | svg |
# Visualize subgraph
stella scan graph visualize --scan-id $SCAN_ID \
--node sha256:node123... \
--depth 3 \
--output subgraph.svg
| Option | Description |
|---|
--token <TOKEN> | OAuth bearer token |
--token-file <PATH> | File containing token |
--profile <NAME> | Use named profile |
| Option | Description |
|---|
--quiet | Suppress non-error output |
--verbose | Enable verbose output |
--debug | Enable debug logging |
--no-color | Disable colored output |
| Option | Description |
|---|
--endpoint <URL> | Scanner API endpoint |
--timeout <DURATION> | Request timeout |
--insecure | Skip TLS verification |
| Variable | Description |
|---|
STELLA_TOKEN | OAuth token |
STELLA_ENDPOINT | API endpoint |
STELLA_PROFILE | Profile name |
STELLA_OFFLINE | Offline mode |
STELLA_SYMBOL_DB | Symbol database path |
| Code | Meaning |
|---|
| 0 | Success |
| 1 | General error |
| 2 | Invalid arguments |
| 3 | Authentication failed |
| 4 | Resource not found |
| 5 | Computation failed |
| 6 | Network error |
| 10 | Timeout |