Runbook: Replay Operations
This runbook governs day-to-day deterministic replay operations — ingestion, verification, retention, and incident handling — across online and air-gapped Stella Ops environments. Deterministic replay lets an operator reconstruct any past scan decision from its signed inputs and outputs, which is the backbone of the platform’s verifiable-evidence guarantee.
Audience: Ops Guild, Evidence Locker Guild, Scanner Guild, Authority/Signer, Attestor.
Read first:
1. Terminology
- Replay Manifest —
manifest.jsondescribing scan inputs, outputs, and signatures. - Input Bundle —
inputbundle.tar.zstcontaining feeds, policies, tools, and environment. - Output Bundle —
outputbundle.tar.zstwith SBOM, findings, VEX, and logs. - DSSE Envelope — signed metadata produced by Authority/Signer.
- RootPack — trusted key bundle used to validate DSSE signatures offline.
2. Normal operations
- Ingestion
- Scanner WebService writes manifest metadata to
replay_runs. - Bundles are uploaded to CAS (
cas://replay/...) and mirrored into Evidence Locker (evidence.replay_bundles). - Authority triggers DSSE signing; Attestor optionally anchors to Rekor.
- Scanner WebService writes manifest metadata to
- Verification
- A nightly job runs
stella verifyon the latest N replay manifests per tenant. - Metrics
replay_verify_total{result}andreplay_bundle_size_bytesare recorded in the Telemetry Stack (seedocs/modules/telemetry/architecture.md). - Failures alert
#ops-replayvia PagerDuty with a runbook link.
- A nightly job runs
- Retention
- Hot CAS retention: 180 days (configurable per tenant). The
replay-retentioncron job prunes expired digests and writes audit entries. - Cold storage (Evidence Locker): 2 years; legal holds extend via
/evidence/holds. Record holds intimeline.eventswith typereplay.hold.created. - Retention declaration: validate against the frozen retention schema (see
docs/modules/replay/guides/retention-schema-freeze-2025-12-10.md, frozen 2025-12-10). Includeretention_policy_id,tenant_id,bundle_type,retention_days,legal_hold,purge_after,checksum, andcreated_at. Audit the checksum via DSSE envelope when persisting.
- Hot CAS retention: 180 days (configurable per tenant). The
- Access control
- Only service identities with the
replay:readscope may fetch bundles. The CLI requires a device or client-credential flow with DPoP.
- Only service identities with the
3. Incident response (replay integrity)
| Step | Action | Owner | Notes |
|---|---|---|---|
| 1 | Page Ops via the replay_verify_total{result="failed"} alert | Observability | Include scan ID, tenant, and failure codes |
| 2 | Lock affected bundles (POST /evidence/holds) | Evidence Locker | Reference the incident ticket |
| 3 | Re-run stella verify with --explain to gather diffs | Scanner Guild | Attach the diff JSON to the incident |
| 4 | Check Rekor inclusion proofs (stella verify --ledger) | Attestor | Flag if the ledger is mismatched or stale |
| 5 | On tool-hash drift, coordinate Signer for rotation | Authority/Signer | Rotate the DSSE profile, update RootPack |
| 6 | Update the incident timeline (this runbook → Incident log) | Ops Guild | Record timestamps and decisions |
| 7 | Close the hold once resolved, publish the postmortem | Ops + Docs | Postmortem must reference the replay spec sections |
4. Air-gapped workflow
- Receive the Offline Kit bundle, containing:
offline/replay/<scan-id>/manifest.json- Bundles + DSSE signatures
- A RootPack snapshot
- Run
stella replay manifest.json --strict --offlineusing the local CLI. - Load feed/policy snapshots from the kit; never reach external networks.
- Store verification logs under
ops/offline/replay/<scan-id>/. - Sync results back to Evidence Locker once connectivity is restored.
5. Maintenance checklist
- [ ] RootPack rotated quarterly; CLI and Evidence Locker updated with the new fingerprints.
- [ ] CAS retention job executed successfully in the past 24 hours.
- [ ] Replay verification metrics present in dashboards (x64 + arm64 lanes).
- [ ] Incident log (section 6) updated for the last drill.
- [ ] Offline-kit instructions verified against the current CLI version.
6. Incident log
Record each replay-integrity incident and drill here.
| Date (UTC) | Incident ID | Tenant | Summary | Follow-up |
|---|---|---|---|---|
| No incidents recorded yet. |
7. References
docs/modules/replay/guides/DETERMINISTIC_REPLAY.mddocs/modules/replay/guides/DEVS_GUIDE_REPLAY.mddocs/modules/replay/guides/TEST_STRATEGY.mddocs/modules/platform/architecture-overview.md(section 5)docs/modules/evidence-locker/architecture.mddocs/modules/telemetry/architecture.mddocs/modules/replay/guides/retention-schema-freeze-2025-12-10.md(frozen retention schema)- Originating sprint (completed, archived):
docs-archive/implplan/SPRINT_0187_0001_0001_evidence_locker_cli_integration.md
Created 2025-11-03. Update alongside replay operational changes and after each integrity drill.
