| Thinking "spawn a few goroutines to speed it up" | First confirm the bottleneck and whether concurrency is even needed, then decide on a pool | references/concurrency-patterns.md §1 |
| Need a worker pool / bounded concurrency / fan-out | Set worker count and bounds, pick the right primitive | references/concurrency-patterns.md |
| Multiple subtasks to run in parallel + error propagation/cancellation | errgroup, not a bare WaitGroup | references/concurrency-patterns.md §3 |
| High-concurrency reads on the same key + expensive origin fetch | singleflight to prevent cache stampede | references/concurrency-patterns.md §5 |
| Wiring a channel/queue, fear OOM, setting timeouts | Bounded + backpressure + timeout budget decreasing layer by layer | references/backpressure-limits.md |
| Adding rate limit / throttling / circuit breaker / load shedding | Selection and the "is it really needed" criterion | references/backpressure-limits.md |
| Service got slow, need to tune performance | Profile for evidence first, don't change anything yet | references/performance-profiling.md |
| Suspect lock contention / GC pressure | mutex/block profile, fix priority order | references/performance-profiling.md |
| Before a release / going to high traffic | Run the mandatory checklist item by item (load testing is a hard requirement) | references/release-checklist.md |