Skip to content

Incident response

Atlas incident response protects users while preserving the identity needed to understand and recover the system. Classify the failing boundary before changing runtime, catalog, store, cache, policy, credentials, or traffic.

Run mitigation and evidence together

flowchart LR
    Signal[User or alert signal] --> Snapshot[Identity + evidence snapshot]
    Snapshot --> Mitigate[Smallest reversible mitigation]
    Snapshot --> Hypothesis[Bounded diagnosis]
    Mitigate --> Effect[Observe intended + unintended effects]
    Hypothesis --> Repair[Repair owning boundary]
    Effect --> Repair
    Repair --> Validate[Integrity + representative service checks]
    Validate --> Close[Close or escalate with gaps]

One track reduces harm; the other preserves facts. Name an incident lead and permit one active mitigation at a time. Before each change, record owner, target, expected effect, start time, observation window, and reversal condition.

When immediate safety prevents capture, record which evidence was sacrificed and why. Successful mitigation can prove reduced impact; it cannot establish the original cause retrospectively.

Preserve authority before mutation

Before changing Capture Verify afterward
traffic or drain Endpoints, route volume, in-flight work, probe transitions Which requests moved and whether impact fell
workload revision Pod, image, config, events, release-scoped signals Restored revision, readiness, dataset, and behavior
cache Entry identity, hits, misses, evictions, store pressure Cold correctness, refill load, and freshness
catalog or dataset Tuple, catalog epoch, manifest, hashes, serving evidence Restored tuple and identity-bearing queries
credentials or network Principal class, policy, decisions, exposure Required success, forbidden denial, audit continuity

Broad simultaneous changes destroy attribution. Runtime rollback and dataset rollback are separate decisions; cache eviction cannot repair store integrity.

Classify the first failing boundary

Symptom First evidence Do not confuse with
process availability Liveness, restarts, termination reason, runtime events Readiness or catalog failure
traffic admission Readiness, overload, endpoints, and drain state Dead process
catalog or store Catalog freshness, reads, manifests, and hashes Redis or local cache loss
query correctness Request, dataset, query class, error code, and trace Generic availability
capacity Latency, saturation, queue, cache, breaker, and overload Data corruption
security Identity, authorization, exposure, admin posture, and audit Ordinary query rejection
release drift Image, chart, values, dataset, checksums, and provenance Transient dependency failure

The same HTTP status may require different recovery. Group failures by first rejecting boundary before status code.

Incident states

stateDiagram-v2
    [*] --> Investigating: impact or integrity signal
    Investigating --> Containing: reversible action selected
    Containing --> Stabilized: blast radius bounded
    Stabilized --> Recovering: trusted authority selected
    Recovering --> Monitoring: invariants + user paths pass
    Monitoring --> Closed: observation window passes
    Monitoring --> Containing: trigger recurs
    Recovering --> Investigating: evidence contradicts diagnosis

A quiet alert does not establish stability. Healthy probes do not establish query correctness. Record the decision owner and invariant for each transition.

Minimum incident record

  • start time, detection source, affected paths, severity, and user impact;
  • runtime, image, chart, values, target, workload revision, and config identity;
  • dataset tuple, catalog epoch, manifest, and artifact hashes;
  • alerts, probes, raw metric queries, logs, representative traces, and gaps;
  • dependency, cache, store, queue, saturation, and overload state;
  • observed facts, bounded hypotheses, disconfirming evidence, and decisions;
  • every drain, isolation, rollback, restore, credential, or policy action;
  • recovery checks, monitoring window, unresolved risk, and closure owner.

Observations belong to the identity active at event time. Split timelines when traffic, revision, dataset, config, credential, or backend changes. A healthy replacement must not hide the failed revision's behavior.

Respond through signal loss

Available source Preserve first Limit
client Status, correlation headers, timing, route class, redacted body One response does not measure population impact
Kubernetes Workload identity, endpoints, events, restarts, probes Control-plane health does not prove queries
pod output Bounded logs from affected and healthy replicas Missing logs may reflect process or collection loss
metrics Raw query, evaluation time, source window, labels, series Empty result is not an observed zero
traces Representative full traces, sampling, retention context Unsampled requests cannot be ruled out
catalog and store Active identity, manifest, hashes, freshness, reads Availability does not prove runtime consumption

Record missing sources and narrow claims to what remains observable. Restoring telemetry is a recovery gate when promotion, security, or integrity requires continuous evidence.

Recover and close

Mitigation reduces harm. Stabilization holds bounded behavior for a stated window. Recovery restores coherent runtime, dataset, and security authority. Closure adds a recurrence-free monitoring window and owners for residual risk.

Close only when traffic admission is intentional, runtime and dataset identity are known, representative cheap and heavy queries pass, security controls are restored, and required signals show no trigger recurrence. “Unknown” is a valid bounded conclusion; do not rewrite it as “not observed.”

Escalate when integrity cannot be established, credentials or administrative routes may be compromised, rollback cannot restore the objective, blast radius grows, or evidence is too incomplete to select a safe action.

Continue with Operational Evidence Reports, Debug Bundles, and Backup and Recovery.