version: "2" run: timeout: 5m modules-download-mode: readonly linters: default: all disable: # Genuinely incompatible with project patterns - exhaustruct # Requires all struct fields - depguard # Dependency allow/block lists - godot # Requires comments to end with periods - wsl # Deprecated, replaced by wsl_v5 - wrapcheck # Too verbose for internal packages - varnamelen # Short names like db, id are idiomatic Go settings: lll: line-length: 88 funlen: lines: 80 statements: 50 cyclop: max-complexity: 15 dupl: threshold: 100 tagliatelle: # snake_case JSON, deliberately. Every operational consumer # of these payloads — jq in a shell, a Prometheus exporter # config, a monitoring probe — is easier to write against # snake_case, and the exposition format next door already # uses it. This is a repo-wide decision, not a per-struct # exception, so it lives here rather than in nolint # directives spread across the handlers. case: rules: json: snake issues: max-issues-per-linter: 0 max-same-issues: 0