{
  "repository": "the-pr-agent/pr-agent",
  "ref": "e7c6dfb54c1827eb1a4e2cd72785360d62aa5b99",
  "methods": [
    {
      "slug": "formal",
      "title": "Formal verification and model checking"
    },
    {
      "slug": "static_analysis",
      "title": "Static analysis"
    },
    {
      "slug": "testing",
      "title": "Testing"
    },
    {
      "slug": "formatting",
      "title": "Formatting and hygiene"
    },
    {
      "slug": "supply_chain",
      "title": "Supply chain"
    },
    {
      "slug": "unclassified",
      "title": "Unclassified"
    }
  ],
  "verifications": [
    {
      "tool": "actionlint",
      "method": "static_analysis",
      "commands": [
        "pre-commit hook actionlint"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/pre-commit.yml",
          "locator": "jobs.pre-commit.steps[3]"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.actionlint"
        }
      ],
      "upstream": "https://github.com/rhysd/actionlint",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "codeql",
      "method": "static_analysis",
      "commands": [
        "uses github/codeql-action/analyze"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/codeql.yml",
          "locator": "jobs.analyze.steps[2]"
        }
      ],
      "upstream": "https://github.com/github/codeql",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "ruff-check",
      "method": "static_analysis",
      "commands": [
        "ruff check"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/pre-commit.yml",
          "locator": "jobs.pre-commit.steps[3]"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.ruff-check"
        },
        {
          "path": "pyproject.toml",
          "locator": "[tool.ruff]"
        },
        {
          "path": "pyproject.toml",
          "locator": "[dependency-groups] dev: ruff"
        }
      ],
      "upstream": "https://github.com/astral-sh/ruff",
      "docs": "https://docs.astral.sh/ruff/linter/#exit-codes",
      "exit_codes": {
        "0": "no violations",
        "1": "violations found",
        "2": "invalid configuration, CLI options or internal error"
      },
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "ci-matrix",
      "method": "testing",
      "commands": [
        "unit-tests-native (python-version: 3)",
        "analyze (include: 1)"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/build-and-test.yaml",
          "locator": "jobs.unit-tests-native.strategy.matrix"
        },
        {
          "path": ".github/workflows/codeql.yml",
          "locator": "jobs.analyze.strategy.matrix"
        }
      ],
      "upstream": "https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "pytest",
      "method": "testing",
      "commands": [
        "pytest -q tests/packaging/test_help_docs_package.py",
        "pytest -v tests/unittest",
        "pytest tests/health_test/test_github_smoke.py -q"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/build-and-test.yaml",
          "locator": "jobs.build-and-test.steps[3] (Test package artifacts)"
        },
        {
          "path": ".github/workflows/build-and-test.yaml",
          "locator": "jobs.unit-tests-native.steps[2] (Test on Python ${{ matrix.python-version }})"
        },
        {
          "path": ".github/workflows/provider-smoke.yaml",
          "locator": "jobs.github-provider-smoke.steps[3] (Smoke /describe on a real GitHub PR)"
        },
        {
          "path": "pyproject.toml",
          "locator": "[tool.pytest]"
        },
        {
          "path": "pyproject.toml",
          "locator": "[dependency-groups] dev: pytest"
        }
      ],
      "upstream": "https://github.com/pytest-dev/pytest",
      "docs": "https://docs.pytest.org/en/stable/reference/exit-codes.html",
      "exit_codes": {
        "0": "all tests passed",
        "1": "some tests failed",
        "2": "interrupted by the user",
        "3": "internal error",
        "4": "command line usage error",
        "5": "no tests were collected"
      },
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "pre-commit-hooks",
      "method": "formatting",
      "commands": [
        "pre-commit hook check-added-large-files",
        "pre-commit hook check-ast",
        "pre-commit hook check-case-conflict",
        "pre-commit hook check-json",
        "pre-commit hook check-merge-conflict"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/pre-commit.yml",
          "locator": "jobs.pre-commit.steps[3]"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-added-large-files"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-ast"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-case-conflict"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-json"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-merge-conflict"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-toml"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-yaml"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.debug-statements"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.end-of-file-fixer"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.mixed-line-ending"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.trailing-whitespace"
        }
      ],
      "upstream": "https://github.com/pre-commit/pre-commit-hooks",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "uv-lock",
      "method": "supply_chain",
      "commands": [
        "uv lock --check"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/build-and-test.yaml",
          "locator": "jobs.build-and-test.steps[2] (Check uv.lock)"
        }
      ],
      "upstream": "https://github.com/astral-sh/uv",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook check-illegal-windows-names"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/pre-commit.yml",
          "locator": "jobs.pre-commit.steps[3]"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-illegal-windows-names"
        }
      ],
      "upstream": "https://github.com/pre-commit/pre-commit-hooks",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook check-symlinks"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/pre-commit.yml",
          "locator": "jobs.pre-commit.steps[3]"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-symlinks"
        }
      ],
      "upstream": "https://github.com/pre-commit/pre-commit-hooks",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook destroyed-symlinks"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/pre-commit.yml",
          "locator": "jobs.pre-commit.steps[3]"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.destroyed-symlinks"
        }
      ],
      "upstream": "https://github.com/pre-commit/pre-commit-hooks",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python scripts/check_docs_urls.py"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docs-ci.yaml",
          "locator": "jobs.docs.steps[4] (Verify documentation URLs referenced from the codebase still resolve)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
