{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:best-practices",
    ":pinAllExceptPeerDependencies",
    "helpers:pinGitHubActionDigestsToSemver",
    "schedule:daily",
    ":assignAndReview(pbrissaud)",
    ":automergeLinters"
  ],
  "customManagers": [
    {
      "customType": "regex",
      "description": "Update Kubernetes version in Taskfile.yml (based on kindest/node availability)",
      "managerFilePatterns": [
        "/^Taskfile\\.ya?ml$/"
      ],
      "matchStrings": [
        "#\\s*renovate:\\s*datasource=(?<datasource>\\S+)\\s+depName=(?<depName>\\S+)\\s*\\n\\s*K8S_VERSION:\\s*[\"']?(?<currentValue>[0-9]+\\.[0-9]+\\.[0-9]+)[\"']?"
      ],
      "extractVersionTemplate": "^v?(?<version>.*)$"
    },
    {
      "customType": "regex",
      "description": "Update Kind node image in Go constants (single source of truth for K8s version)",
      "managerFilePatterns": [
        "/^internal/constants/const\\.go$/"
      ],
      "matchStrings": [
        "//\\s*renovate:\\s*datasource=(?<datasource>\\S+)\\s+depName=(?<depName>\\S+)\\s*\\nvar\\s+KindNodeImage\\s*=\\s*\"kindest/node:v?(?<currentValue>[0-9]+\\.[0-9]+\\.[0-9]+)\""
      ],
      "extractVersionTemplate": "^v?(?<version>.*)$"
    },
    {
      "customType": "regex",
      "description": "Update infrastructure component versions in deployer constants",
      "managerFilePatterns": [
        "/^internal/deployer/const\\.go$/"
      ],
      "matchStrings": [
        "//\\s*renovate:\\s*datasource=(?<datasource>\\S+)\\s+depName=(?<depName>\\S+)\\s*\\nvar\\s+\\w+Version\\s*=\\s*\"v?(?<currentValue>[0-9]+\\.[0-9]+\\.[0-9]+)\""
      ],
      "extractVersionTemplate": "^v?(?<version>.*)$"
    }
  ],
  "packageRules": [
    {
      "description": "Group all GitHub Actions non-major updates (including digests)",
      "matchManagers": [
        "github-actions"
      ],
      "matchUpdateTypes": [
        "minor",
        "patch",
        "digest"
      ],
      "groupName": "GitHub Actions non-major dependencies",
      "groupSlug": "github-actions-non-major",
      "automerge": true
    },
    {
      "description": "Group Go modules non-major updates (excluding k8s.io)",
      "matchManagers": [
        "gomod"
      ],
      "matchUpdateTypes": [
        "minor",
        "patch"
      ],
      "groupName": "Go non-major dependencies",
      "groupSlug": "go-non-major",
      "automerge": true,
      "matchPackageNames": [
        "!/^k8s\\.io//"
      ]
    },
    {
      "description": "Group npm updates",
      "matchManagers": [
        "npm"
      ],
      "matchUpdateTypes": [
        "major",
        "minor",
        "patch",
        "digest"
      ],
      "groupName": "npm dependencies",
      "groupSlug": "npm",
      "automerge": true
    },
    {
      "description": "Don't pin claude-code action",
      "matchPackageNames": [
        "anthropics/claude-code-action"
      ],
      "matchManagers": [
        "github-actions"
      ],
      "pinDigests": false
    },
    {
      "description": "Group all Kubernetes-related updates together (manual merge required)",
      "groupName": "Kubernetes dependencies",
      "groupSlug": "kubernetes",
      "automerge": false,
      "matchPackageNames": [
        "/^k8s\\.io//",
        "/^kindest/node$/"
      ]
    }
  ],
  "separateMajorMinor": true
}
