stella CLI — Parity Matrix

This page maps each stella command surface to the Stella Ops service API behind it, the output contract it must honour, and its offline behaviour. It is the reference for CLI maintainers and reviewers verifying that the CLI stays faithful to the services it fronts. Every row must stay deterministic and aggregation-only: the CLI surfaces published evidence and never infers verdicts of its own.

AreaServer/APICLI command(s)Output contractOffline supportNotes
Policy eval/simulatePolicy Engine /policy/eval /policy/simulatestella policy eval, stella policy simulateStable JSON/NDJSON; includes correlationId, policyVersion, rationaleIdsMust run with cached bundles when --offlineNo verdict inference beyond engine response.
VEX consensusVulnerabilities hub GET /api/vulnerabilities/v1/issues/{id}/{productKey}/factsstella vex explainOne issue per call; every statement, the effective status, winning issuers, contested flag and decision hashNone; the command reads the hubGlobal consensus with default issuer tiers; tenant VEX decisions are not applied.
Vulnerability list/detailVuln Explorer /vulnstella vuln list, stella vuln getSorted by vulnId; includes provenance pointers; no missing fields inferredMust respect --offline using cached snapshots
Export/mirror bundlesExport Service /export/*stella export mirror, stella export verifyEmits manifest + checksums; verification errors are deterministicYes (air-gap bundles)All paths must be relative and normalized.
Air-gap import/exportAirGap /airgap/*stella airgap import, stella airgap exportReturns sealed bundle IDs, provenance hashesYes; network calls forbidden when --offline or sealed mode
Attestor transparency mirrorEvidence /api/evidence/v1/transparency/* (attest:read for GET, attest:create for POST); receipt list/show use /api/evidence/v1/attestations and /{uuid} with attest:readstella attestor transparency targets, stella attestor transparency sync, stella attestor transparency receipts, stella airgap exchange transparencyJSON preserves localTransparencyReceipt, externalMirrorReceipts[], proof readError and checkpoint signedNote; package writer preserves signed file bytes plus descriptorYes for manual exchange; connected live sync is refused in offline/sealed modeDry-run is the default for connected sync; live sync requires --confirm-egress-window. Unavailable Evidence fails without a package.
Task RunnerTaskRunner /runsstella task-runner run, stella task-runner logsMonotonic log stream; stable ordering by sequenceLocal/log-only when offline; remote requires connectivity
AttestationsAttestor /attest/*stella attest verify, stella attest listVerification results include DSSE status, signature details; no risk scoringYes, using cached trust roots/bundles
SBOMScanner /sbom/*stella sbom generate, stella sbom composeEmits SPDX/CycloneDX + hashes; preserves orderingYes; reads local images/files when offline

Receipt caller correction verified against commit 6aff2f8ece7ccdfaeee4a237c9f17a24713df050 (2026-10-07): PCD-465 corrects both native Evidence paths and requests attest:read independently of the configured default scope. List filters, paging, UUID escaping, best-effort refresh and local/external receipt fields are preserved. Re-verify with the receipt contract tests named in the CLI architecture. The fourteen external operations remain separately accepted by PCD-428. Deployed gateway routing, proof validity and owner tenant isolation remain outside this caller proof; the Evidence tenant-read residual is assigned to PCD-500. Empty configured scope can grant allowed scopes; the red scope controls used an explicit unrelated configured scope.

Validation checklist