Compliance Readiness Tracker
Version: 1.1.1 Created: 2026-01-15 Last Updated: 2026-05-31 Status: Active
This document tracks implementation progress against the 7-item Compliance Readiness Checklist that regulated customers expect Stella Ops to satisfy before deployment. It is for product, engineering, and customer-success leads who need a single, current view of what is shipped, what is in flight, and which sprint owns each gap.
For the product framing of compliance and the canonical claim-boundary wording, start at Assurance and Compliance Packs. Source under src/ is the ground truth for any technical claim below.
June 2026 code-verified reconciliation (2026-06-16): This tracker covers the 7-item offline/air-gap readiness checklist. The separate EU regime trackers (CRA/NIS2/DORA) were reconciled against
src/on 2026-06-16; see State of European Union compliance (2026-06) for the code-verified per-regime status and the remaining gap clusters (CRA C1-C5, NIS2 N1-N5, DORA D1-D4). The cross-cutting remediation-log items X1 (attestor verdict-ledger write-on-seal) and X4 (Authority seed-gate) are DONE and live-verified; X2 (events-flag projection tables) is retired as a non-gap; X3 (eIDAS soft provider) is reconciliation-only (a real ECDSA provider, registered and gated). The only externally-blocked item is the DORA major-incident EBA XBRL/XSD taxonomy (D1/X5): no valid upstream DORA-IR taxonomy package exists, so conformance there is honestly not-claimed. The offline/operator-support claim boundary is unchanged: Stella produces and signs evidence; the regulated customer remains the reporting party. Most remaining EU gaps are HTTP/write-path parity (code) rather than capability gaps; live security mailbox/key, on-call, and standards-mapping sign-off are org-process. No status in the 7-item table below changes.
Executive Summary
| Item | Description | Coverage | Status | Target |
|---|---|---|---|---|
| 1 | Attestation caching (offline) | 75% | In Progress | Demo Ready |
| 2 | Offline RBAC & break-glass | 60% | In Progress | Demo Ready |
| 3 | Signed SBOM archives | 55% | In Progress | Demo Ready |
| 4 | HSM / key escrow | 50% | In Progress | RFP Ready |
| 5 | Local Rekor mirrors | 60% | In Progress | RFP Ready |
| 6 | Offline policy engine | 80% | In Progress | RFP Ready |
| 7 | Upgrade & evidence migration | 45% | In Progress | Audit Ready |
Sprint Allocation
Phase 1: Demo Blockers (016)
Target: Features needed for 10-minute compliance demo.
Sprint files for items 016/017/018 have been archived; links point to
docs-archive/implplan/.
| Sprint | Module | Description | Status |
|---|---|---|---|
| 016_CLI_attest_verify_offline | CLI | Offline attestation verification CLI | TODO |
| 016_CLI_sbom_verify_offline | CLI | Offline SBOM verification CLI | TODO |
| 016_SCANNER_signed_sbom_archive_spec | Scanner | Signed SBOM archive format | TODO |
| 016_DOCS_blue_green_deployment | Docs | Blue/green deployment guide | TODO |
Phase 2: RFP Compliance (017)
Target: Features needed to pass RFP security questionnaires.
| Sprint | Module | Description | Status |
|---|---|---|---|
| 017_CRYPTO_pkcs11_hsm_implementation | Crypto | PKCS#11 HSM implementation | TODO |
| 017_ATTESTOR_periodic_rekor_sync | Attestor | Periodic Rekor checkpoint sync | TODO |
| 017_ATTESTOR_checkpoint_divergence_detection | Attestor | Checkpoint divergence detection | TODO |
| 017_POLICY_cvss_threshold_gate | Policy | CVSS threshold policy gate | TODO |
| 017_POLICY_sbom_presence_gate | Policy | SBOM presence policy gate | TODO |
| 017_POLICY_signature_required_gate | Policy | Signature required policy gate | TODO |
Phase 3: Audit Readiness (018)
Target: Features needed to pass security audits.
| Sprint | Module | Description | Status |
|---|---|---|---|
| 018_SIGNER_dual_control_ceremonies | Signer | Dual-control signing ceremonies | TODO |
| 018_CRYPTO_key_escrow_shamir | Crypto | Key escrow with Shamir | TODO |
| 018_AUTH_local_rbac_fallback | Authority | Local RBAC policy fallback | TODO |
| 018_EVIDENCE_reindex_tooling | Evidence | Evidence re-index tooling | TODO |
| 018_DOCS_upgrade_runbook_evidence_continuity | Docs | Upgrade runbook with evidence | TODO |
Detailed Item Status
Item 1: Attestation Caching (Offline)
Why it matters: Regulated shops can’t reach public Sigstore/Rekor during audits.
DSSE verdict caching, offline Rekor receipt verification, and exportable hash-manifested evidence bundles are implemented in Attestor + EvidenceLocker (src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/, src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Caching/, src/EvidenceLocker/.../Services/EvidencePortableBundleService.cs). Remaining work is the operator-facing surface: an offline stella attest verify path with golden fixtures and a bundled VERIFY.md script.
| Requirement | Status | Sprint |
|---|---|---|
| DSSE caching, transparency proofs, exportable bundles, hash manifest | DONE | Existing |
Offline CLI verify (stella attest verify --offline) + golden fixtures | TODO | 016_CLI |
VERIFY.md generation (bundled verification script) | TODO | 016_SCANNER |
Proof Artifacts:
- [ ] Demo verifying image on laptop with Wi-Fi off
- [ ] SHA-256 match + signature chain report
Item 2: Offline RBAC & Break-Glass
Why it matters: No cloud IdP during outages/air-gap. Auditors want least-privilege and emergency access trails.
Incident-mode access is live: a dedicated incident scope, freshness-bound (auth_time) tokens carrying a reason claim, and an Authority audit endpoint that records entry/exit. Scope and claim constants are canonical in src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsScopes.cs and the adjacent StellaOpsClaimTypes.cs; do not re-enumerate them here. Remaining work is a fully offline fallback path: a file-backed policy store, a bootstrap break-glass account, and session auto-revocation.
| Requirement | Status | Sprint |
|---|---|---|
| Incident-mode tokens, freshness validation, reason codes, audit endpoint | DONE | Existing |
| Local file-backed policy store | TODO | 018_AUTH |
| Bootstrap break-glass account + auto-revocation | TODO | 018_AUTH |
Proof Artifacts:
- [ ] RBAC matrix (roles -> verbs -> resources)
- [ ] Audit log showing break-glass entry/exit
Item 3: Signed SBOM Archives (Immutable)
Why it matters: SBOMs must be tamper-evident and tied to exact build inputs.
CycloneDX/SPDX export and DSSE signing exist in Scanner + Signer. The remaining work is an immutable archive format that binds the SBOM to its build inputs (tool versions, scanner image digest) plus a one-click stella sbom verify. The format is specified in docs/modules/scanner/signed-sbom-archive-spec.md — that spec is authoritative for the archive layout and metadata.json shape. RFC 3161 timestamping is deferred.
| Requirement | Status | Sprint |
|---|---|---|
| CycloneDX/SPDX export, DSSE signing | DONE | Existing |
| Signed archive format (tool versions + source digest) | TODO | 016_SCANNER |
One-click stella sbom verify | TODO | 016_CLI |
| RFC 3161 TSA integration | DEFERRED | Future |
Proof Artifacts:
- [ ] One-click “Verify SBOM” checking signature, timestamps, content hashes
Item 4: HSM / Key Escrow Patterns
Why it matters: Key custody is a governance hotspot.
Key management runs through the crypto plugin layer (src/Cryptography/): a PKCS#11 HSM plugin and key-rotation service exist, with optional KMS clients (src/__Libraries/StellaOps.Cryptography.Kms/) available as plugins for customers who require them — never as a default, per the on-prem-first posture. Operator config is authoritative in the HSM setup runbook. Remaining governance work is dual-control (M-of-N) signing ceremonies and Shamir-based key escrow.
| Requirement | Status | Sprint |
|---|---|---|
| PKCS#11 HSM plugin, key rotation, optional KMS plugin clients | DONE/PARTIAL | Existing |
| Dual-control (M-of-N) ceremonies | TODO | 018_SIGNER |
| Key escrow (Shamir secret sharing) | TODO | 018_CRYPTO |
Proof Artifacts:
- [ ] Config targeting HSM slot
- [ ] Simulated key rotation with attestation continuity
Item 5: Local Rekor (Transparency) Mirrors
Why it matters: Auditors want inclusion proofs even when offline.
Tile verification, checkpoint-signature verification, and offline receipt verification are implemented in Attestor Core (src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/). Remaining work is a persistent local mirror: periodic checkpoint sync into a Postgres-backed checkpoint store, plus root-divergence detection (see the checkpoint-divergence runbook).
| Requirement | Status | Sprint |
|---|---|---|
| Tile verification, checkpoint verify, offline receipts | DONE | Existing |
| Periodic sync + Postgres checkpoint store | TODO | 017_ATTESTOR |
| Divergence detection (root-mismatch alarms) | TODO | 017_ATTESTOR |
Proof Artifacts:
- [ ] Verify inclusion proof against local checkpoint without internet
- [ ] Mismatch alarm if roots diverge
Item 6: Offline Policy Engine (OPA/Conftest-class)
Why it matters: Gates must hold when the network doesn’t.
Versioned policy bundles, a sealed (air-gap) evaluation mode, and the existing gate family — VEX proof/trust, unknowns budget, evidence freshness — are implemented in the Policy engine (src/Policy/StellaOps.Policy.Engine/AirGap/ for sealed mode; src/Policy/__Libraries/StellaOps.Policy/Gates/ for the gate catalog, which is authoritative for the full gate list). Remaining work adds three release-control gates: CVSS threshold, SBOM presence, signature-required.
| Requirement | Status | Sprint |
|---|---|---|
| Policy bundles, sealed mode, VEX/unknowns/evidence gates | DONE | Existing |
| CVSS threshold gate | TODO | 017_POLICY |
| SBOM presence gate | TODO | 017_POLICY |
| Signature-required gate | TODO | 017_POLICY |
Proof Artifacts:
- [ ] Local policy pack on sample image showing fail
- [ ] Compliant pass after adding VEX exception with justification
Item 7: Upgrade & Evidence-Migration Paths
Why it matters: “Can we upgrade without invalidating proofs?” is a top blocker.
Forward-only DB migrations (see ADR-004), Merkle-rooted evidence manifests, and per-module backup/restore are in place. Operator procedures live in the blue/green deployment and upgrade runbook docs. Remaining work is tooling to re-index evidence across an upgrade (stella evidence reindex) and cross-reference old/new Merkle roots for proof continuity.
| Requirement | Status | Sprint |
|---|---|---|
| Forward-only DB migrations, Merkle-rooted manifests, backup/restore | DONE | Existing |
| Evidence re-index tooling + old/new root cross-reference | TODO | 018_EVIDENCE |
Proof Artifacts:
- [ ] Staged upgrade in test namespace
- [ ] Before/after verification reports
- [ ] Unchanged artifact digests
Documentation Deliverables
| Document | Path | Status |
|---|---|---|
| Blue/Green Deployment | docs/operations/blue-green-deployment.md | DONE |
| Upgrade Runbook | docs/operations/upgrade-runbook.md | DONE |
| HSM Setup Runbook | docs/operations/hsm-setup-runbook.md | DONE |
| Signed SBOM Spec | docs/modules/scanner/signed-sbom-archive-spec.md | DONE |
| Break-Glass Account | docs/modules/authority/operations/break-glass-account.md | DONE |
Demo Script (10 Minutes)
A ~10-minute, network-off walkthrough that exercises each readiness item end to end. The scenarios below give the narrative and what each proves; for the exact stella subcommands and flags, see the CLI command source (src/Cli/StellaOps.Cli/Commands/) — it is authoritative and avoids drift from aspirational flag names. Several commands map to TODO items above and only land as those sprints complete.
| # | Scenario (~2 min each) | Proves | Readiness item |
|---|---|---|---|
| 1 | Verify an attestation bundle and a signed SBOM archive offline against a local trust root | Offline DSSE + SBOM verification with pass/fail and hash-chain output | 1, 3 |
| 2 | Evaluate a policy gate that blocks a high-CVSS artifact, add a signed VEX exception, re-evaluate to a pass | Local policy gating + justified VEX exception flow without network | 2, 6 |
| 3 | List the active signing key, rotate it in the HSM, re-sign, and re-verify | HSM key rotation preserving attestation continuity | 4 |
| 4 | Query the local Rekor mirror and verify an inclusion proof against a local checkpoint offline | Transparency inclusion proofs hold offline | 5 |
| 5 | Run an upgrade pre-check, simulate the upgrade, re-index proofs, and produce a before/after continuity report | Upgrade without invalidating proofs (unchanged digests) | 7 |
Stakeholder Sign-Off
| Role | Name | Date | Signature |
|---|---|---|---|
| Engineering Lead | |||
| Security Lead | |||
| Product Manager | |||
| Customer Success |
Change Log
| Date | Version | Author | Changes |
|---|---|---|---|
| 2026-01-15 | 1.0.0 | Planning | Initial tracker creation |
| 2026-05-30 | 1.1.0 | Docs | Right-sized to tracker altitude: collapsed per-item implementation-class enumerations and the exhaustive demo CLI script into shape summaries + pointers to src/ and authoritative runbooks/specs; repointed archived sprint links. |
| 2026-05-31 | 1.1.1 | Docs | Verified all pointers resolve against src/ and docs tree; de-elided the Item-2 Authority path to the exact StellaOps.Auth.Abstractions/ location. |
| 2026-06-16 | 1.1.2 | Docs | Added June 2026 code-verified reconciliation note pointing to docs/europe/state-of-european-union-compliance-2026-06.md; summarized CRA/NIS2/DORA gap clusters and cross-cutting X1/X4 (DONE), X2 (retired), X3 (reconciliation-only), D1/X5 (externally-blocked). No 7-item readiness status changed. |
