hash-unsorted-collection
Hashing dicts/sets without sorting produces inconsistent cache keys
Applies to: Python
Why this matters
When you hash a dictionary or set to create a cache key, the hash depends on iteration order. Without sorting, you'll get different hashes for the same data, causing cache misses and wasted computation.
Catch it before it ships
pip install stablestack # or: npx stablestackstablestack # scans your project, DET008 includedstablestack explain DET008DET008 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: DET008
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
DET005random-without-seed
Random values without seed cause non-reproducible behavior
DET006datetime-now-usage
datetime.now() makes code non-deterministic and hard to test
DET007unsorted-directory-listing
Directory listings have no guaranteed order across systems
DET009uncached-llm-call
LLM API call without @cache decorator wastes money on duplicate requests