random-without-seed
Random values without seed cause non-reproducible behavior
Applies to: Go, JavaScript, Python, Ruby, Rust, TypeScript
Why this matters
Using random.choice(), random.shuffle(), etc. without setting a seed means you'll get different results each time. This makes tests flaky and debugging impossible. Set a seed for reproducibility, or use secrets module for security.
Catch it before it ships
pip install stablestack # or: npx stablestackstablestack # scans your project, DET005 includedstablestack explain DET005DET005 is part of the Pro rule set. See pricing — the free tier ships 24 checks with no signup.
False positive in your codebase? Suppress a single line with # noqa: DET005
More Determinism checks
unsorted-dict-iteration
Dictionary iteration without a canonical sort order
DET002unsorted-set-iteration
Set iteration without sorting can produce unpredictable order
DET003missing-sort-tiebreaker
Sorting by a single field without tiebreaker can produce unstable order
DET004list-set-dedup
Using list(set(...)) for deduplication scrambles element order
DET006datetime-now-usage
datetime.now() makes code non-deterministic and hard to test
DET007unsorted-directory-listing
Directory listings have no guaranteed order across systems
DET008hash-unsorted-collection
Hashing dicts/sets without sorting produces inconsistent cache keys
DET009uncached-llm-call
LLM API call without @cache decorator wastes money on duplicate requests