---
version: "2"
run:
  timeout: 5m
  tests: true
output:
  formats:
    text:
      path: stdout
linters:
  default: none
  enable:
    - bodyclose
    - dogsled
    - dupl
    - errcheck
    - exhaustive
    - gochecknoinits
    - goconst
    - gocritic
    - gocyclo
    - goprintffuncname
    - gosec
    - govet
    - ineffassign
    - lll
    - misspell
    - nakedret
    - noctx
    - nolintlint
    - rowserrcheck
    - staticcheck
    - unconvert
    - unparam
    - unused
    - whitespace
    - revive
  settings:
    nolintlint:
      allow-unused: true
    govet:
      enable:
        - shadow
        - fieldalignment
    gocyclo:
      min-complexity: 15
    dupl:
      threshold: 100
    goconst:
      min-len: 3
      min-occurrences: 3
    misspell:
      locale: US
      ignore-rules:
        - cancelled
        - cancelling
        - behaviour
        - colour
        - sanitise
        - initialise
        - optimise
        - normalised
    lll:
      line-length: 100
    revive:
      confidence: 0.8
  exclusions:
    rules:
      # G306: File permissions - acceptable for test files and scripts
      - text: "G306:"
        linters:
          - gosec
      # Exclude linters for test files
      - path: ".*_test\\.go"
        linters:
          - gocyclo
          - errcheck
          - dupl
          - lll
          - gosec
          - revive
      # Exclude errcheck for tests directory
      - path: "^tests/"
        linters:
          - errcheck
      # approve insecureSkipVerify in test files
      - path: _test\\.go
        text: "insecureSkipVerify"
        linters:
          - gosec
      # Exclude gosec G204 for tests and tools via source match
      - source: "exec\\.CommandContext"
        path: "(tests|tools)/"
        linters:
          - gosec
      # Exclude revive for api package naming via source match
      - source: "^package api$"
        linters:
          - revive
      # Known legacy staticcheck issue
      - path: "^internal/worker/snapshot_store\\.go$"
        text: "SA1019"
        linters:
          - staticcheck
      # Known legacy unparam issue
      - path: "^internal/resources/manager\\.go$"
        text: "gpuSlotsForTask"
        linters:
          - unparam
      # Ignore whitespace-only lint noise in this file
      - path: "^internal/api/ws_jobs\\.go$"
        linters:
          - whitespace
issues:
  max-issues-per-linter: 0
  max-same-issues: 0
severity:
  default: error
