2.2 KiB
Runbook: artifact loss
Trigger
An artifact location is missing, corrupt, or unavailable after a storage failure or a control-plane restore.
Diagnose
Establish the recovery class first, because it decides whether recovery is possible at all:
| Class | Recovery |
|---|---|
REHYDRATABLE |
exact upstream repository and commit exist; redownload |
NON_REHYDRATABLE |
no upstream identity; only a payload backup can recover it |
DERIVED |
rebuild from exact source artifacts, preserving lineage |
LOCAL_ONLY |
payload backup only |
artifacts.json inside the backup lists every artifact set with its class, upstream repository,
exact commit SHA and per-file SHA-256.
Act and recover
- Register a disposable storage root for the recovery. Never rehydrate over the only usable copy of a production artifact.
- Create the recovery operation (
POST /api/v1/admin/recovery/artifact-recoveries) and confirm it reportsREHYDRATABLEwith the exact commit you expect. If it reportsNON_REHYDRATABLE, stop: this artifact needs a payload restore, not a download. - Create a download plan for that artifact set against the disposable root, approve it and execute it. The Node Agent downloads into quarantine, hashes every file and promotes atomically.
- Record the observed evidence against the recovery operation.
Rehydration is never done from a floating revision. If the upstream is unreachable, record the
operation as BLOCKED with ARTIFACT_REHYDRATION_BLOCKED and say so — do not report the platform
as recovered while an artifact it depends on is still missing.
Security
A rehydrated artifact is new material. It re-enters quarantine, is re-hashed against provenance and
re-checked against the security policy, and it carries static_checks_passed_unapproved rather than
inheriting its predecessor's approval. trust_remote_code stays false. A digest mismatch fails
the recovery with ARTIFACT_HASH_MISMATCH even if the download reported success.
Confirm
Every expected file present with a matching digest, byte counts equal to provenance, the artifact
locations verified, lineage intact for derived artifacts, and a runtime probe or capability smoke
against the recovered set before it is used for anything.