# External-System Checks

Apply only the section for systems actually used, after defining their business role and the general dependency and state semantics.

## Redis

Classify Redis as cache, message transport, coordination, or recoverable business state. Check commands per operation, pipelines and batch limits, hot keys, large values, expiration concentration, cluster slots, pool wait, timeout, fallback, and failure behavior.

For caches, check source capacity, stampede control, negative caching, staleness, and eviction. For Streams, check ACK, pending claim, retry, dead letter, idempotency, retention, lag, and oldest pending age. For locks, check atomicity, owner token, TTL, renewal, and ownership loss.

Collect server and client metrics out of band; do not run expensive status commands or dump memory details on every request.

## Databases

Check queries per operation, loop queries, scanned rows, result size, indexes, lock wait, transaction scope, pool wait, and slow queries. Bound batch pagination and concurrency. Before transaction retry, classify the error and side effects. For migrations, inspect historical data, lock duration, mixed-version reads and writes, and rollback limits.

## HTTP, RPC, and third-party APIs

Check DNS, connection reuse, TLS, pools, payload limits, status handling, quotas, pagination, deadline propagation, cancellation, fan-out, and in-flight limits. Distinguish transport failure, timeout, rate limit, service error, and business rejection. Retry only transient and safe failures, using idempotency keys when supported.

## Message systems

Check producer confirmation, durability, delivery semantics, partition concurrency, ordering, groups, ACK or checkpoint, retry, dead letter, retention, backlog, and oldest age. Model producer and consumer capacity separately. Scaling consumers cannot exceed partitions or downstream capacity.

## Object storage and files

Check object size, streaming, memory buffering, temporary files, upload concurrency, multipart behavior, timeout, checksum, and cleanup. Avoid loading uncontrolled objects fully into memory. Define recovery for partial success between content write and metadata commit.
