version: "2"

run:
  timeout: 5m

linters:
  default: none
  enable:
    - contextcheck
    - govet
    - staticcheck
    - unused
  settings:
    staticcheck:
      checks:
        - "all"
        - "-ST1005"  # error strings should not be capitalized (pre-existing style)
        - "-ST1000"  # package comment style (pre-existing)
        - "-ST1003"  # naming convention (pre-existing)
        - "-ST1016"  # method receiver naming (pre-existing)
        - "-QF1001"  # apply De Morgan's law (style suggestion)
        - "-QF1003"  # convert if/else to switch (style suggestion)
        - "-QF1012"  # use fmt.Fprintf (style suggestion)
        - "-SA1019"  # deprecated API usage (elliptic.Marshal — Go hasn't removed it)
        - "-SA9003"  # empty branch (intentional in switch stubs)
        - "-S1009"   # redundant nil check (pre-existing style)
        - "-S1011"   # use single append with spread (pre-existing style)
  exclusions:
    max-issues-per-linter: 0
    max-same-issues: 0

# Linters temporarily disabled — re-enable incrementally as pre-existing issues are fixed:
# - errcheck (50 issues — unchecked error returns throughout codebase)
# - gocritic (50 issues — diagnostic/performance suggestions)
# - gosec (23 issues — security warnings in test/stub code)
# - ineffassign (13 issues — dead assignments)
# - noctx (25 issues — http.Get without context)
# - bodyclose (response body close missing)
