| api-design | Export audit, signature evolution, parameter/result object usage | | errors | Log-and-return, missing %w, strategy consistency, sentinel/structured misuse | | interfaces | Compile-time checks, bloat detection, pointer-to-interface, driver pattern | | concurrency | Embedded mutexes, goroutine leaks, WaitGroup races, unbounded spawning |
| safety | Bare type assertions, missing defer, panic in library, boundary copies | | performance | fmt.Sprint for conversions, missing pre-allocation, string concatenation | | code-style | Naming, declarations, organization — combined style checks | | testing | Table-driven tests, assert vs require, bloated tables, goleak |
| functional-options | Exposed options struct, missing defaults, missing WithX | | logging | fmt.Sprintf in logs, wrong level, raw structs, global logger in library | | deterministic-simulation-testing | Direct time/rand/os calls, non-deterministic maps, missing seed logging, over-abstracted DST |