{
  "repository": "django/django",
  "ref": "1860f0a3f41e54f265e57de76d320ea0887d6b1c",
  "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": "biome",
      "method": "static_analysis",
      "commands": [
        "biome ci",
        "biome check"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/linters.yml",
          "locator": "jobs.biome.steps[3]"
        },
        {
          "path": "package.json",
          "locator": "scripts.biome"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: @biomejs/biome"
        },
        {
          "path": "biome.json",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/biomejs/biome",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "flake8",
      "method": "static_analysis",
      "commands": [
        "pre-commit hook flake8",
        "flake8 ."
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.flake8"
        },
        {
          "path": "tox.ini",
          "locator": "[testenv:flake8]"
        },
        {
          "path": ".flake8",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/PyCQA/flake8",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "zizmor",
      "method": "static_analysis",
      "commands": [
        "uses zizmorcore/zizmor-action",
        "pre-commit hook zizmor",
        "zizmor ."
      ],
      "triggers": [
        "pre_commit",
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/linters.yml",
          "locator": "jobs.zizmor.steps[1] (Run zizmor)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.zizmor"
        },
        {
          "path": "tox.ini",
          "locator": "[testenv:zizmor]"
        }
      ],
      "upstream": "https://github.com/zizmorcore/zizmor",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "unittest",
      "method": "testing",
      "commands": [
        "unittest discover -v -s scripts/"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/tests.yml",
          "locator": "jobs.scripts-tests.steps[2]"
        }
      ],
      "upstream": "https://github.com/python/cpython",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "black",
      "method": "formatting",
      "commands": [
        "uses psf/black",
        "pre-commit hook black",
        "black --check --diff ."
      ],
      "triggers": [
        "pre_commit",
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/linters.yml",
          "locator": "jobs.black.steps[1] (black)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.black"
        },
        {
          "path": "tox.ini",
          "locator": "[testenv:black]"
        },
        {
          "path": "pyproject.toml",
          "locator": "[tool.black]"
        }
      ],
      "upstream": "https://github.com/psf/black",
      "docs": null,
      "exit_codes": {
        "0": "nothing to change",
        "1": "files would be reformatted (--check)",
        "123": "internal error"
      },
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "isort",
      "method": "formatting",
      "commands": [
        "pre-commit hook isort",
        "isort --check-only --diff django tests scripts"
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.isort"
        },
        {
          "path": "tox.ini",
          "locator": "[testenv:isort]"
        },
        {
          "path": "pyproject.toml",
          "locator": "[tool.isort]"
        }
      ],
      "upstream": "https://github.com/PyCQA/isort",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "coverage combine"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/coverage_tests.yml",
          "locator": "jobs.coverage.steps[6] (Generate coverage report)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "coverage report --show-missing"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/coverage_tests.yml",
          "locator": "jobs.coverage.steps[6] (Generate coverage report)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "coverage xml -o tests/coverage.xml"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/coverage_tests.yml",
          "locator": "jobs.coverage.steps[6] (Generate coverage report)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "diff-cover tests/coverage.xml --compare-branch=origin/main --fail-under=0 > diff-cover-report.md"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/coverage_tests.yml",
          "locator": "jobs.coverage.steps[7] (Generate diff coverage report)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "epubcheck $(BUILDDIR)/epub/Django.epub"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docs.yml",
          "locator": "jobs.docs.steps[7] (EPUBCheck)"
        },
        {
          "path": "docs/Makefile",
          "locator": "target epubcheck (line 177)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "grunt test --verbose"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/schedule_tests.yml",
          "locator": "jobs.javascript-tests.steps[3]"
        },
        {
          "path": "package.json",
          "locator": "scripts.test"
        },
        {
          "path": ".github/workflows/tests.yml",
          "locator": "jobs.javascript-tests.steps[3]"
        },
        {
          "path": "tox.ini",
          "locator": "[testenv:javascript]"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "look for any errors in the above output \" \"or in $(BUILDDIR)/linkcheck/output.txt.\""
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "docs/Makefile",
          "locator": "target linkcheck (line 153)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook biome-check"
      ],
      "triggers": [
        "pre_commit"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.biome-check"
        }
      ],
      "upstream": "https://github.com/biomejs/pre-commit",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook blacken-docs"
      ],
      "triggers": [
        "pre_commit"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.blacken-docs"
        }
      ],
      "upstream": "https://github.com/adamchainz/blacken-docs",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall runtests.py --settings=test_postgres --verbosity=2"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/schedule_tests.yml",
          "locator": "jobs.postgresql.steps[6] (Run tests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall runtests.py --verbosity 2 --noinput --playwright=$EXPR --settings=test_sqlite --parallel 1"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/schedule_tests.yml",
          "locator": "jobs.playwright-sqlite.steps[6] (Run Playwright tests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall runtests.py --verbosity 2 --noinput --playwright=chromium --settings=test_postgres --parallel 1"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/playwright.yml",
          "locator": "jobs.playwright-postgresql.steps[7] (Run Playwright tests)"
        },
        {
          "path": ".github/workflows/schedule_tests.yml",
          "locator": "jobs.playwright-postgresql.steps[7] (Run Playwright tests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall runtests.py --verbosity 2 --noinput --playwright=chromium --settings=test_sqlite --parallel 1"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/playwright.yml",
          "locator": "jobs.playwright-sqlite.steps[6] (Run Playwright tests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall runtests.py --verbosity=2 --noinput --playwright=chromium --screenshots --settings=test_sqlite --parallel=1"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/screenshots.yml",
          "locator": "jobs.playwright-screenshots.steps[6] (Run Playwright tests with screenshots)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall tests/runtests.py --settings=test_postgres -v2"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/coverage_tests.yml",
          "locator": "jobs.coverage.steps[5] (Run tests with coverage)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall tests/runtests.py --verbosity=2"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/schedule_tests.yml",
          "locator": "jobs.pyc-only.steps[7] (Run tests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall tests/runtests.py -v2"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/python_matrix.yml",
          "locator": "jobs.python.steps[5] (Run tests)"
        },
        {
          "path": ".github/workflows/schedule_tests.yml",
          "locator": "jobs.windows.steps[5] (Run tests)"
        },
        {
          "path": ".github/workflows/tests.yml",
          "locator": "jobs.windows.steps[5] (Run tests)"
        },
        {
          "path": ".github/workflows/tests.yml",
          "locator": "jobs.ubuntu-free-threading.steps[5] (Run tests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall tests/runtests.py -v2 gis_tests --settings=test_postgis"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/postgis.yml",
          "locator": "jobs.postgis.steps[7] (Run GIS tests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python -Wall tests/runtests.py -v2 sphinx_tests"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docs.yml",
          "locator": "jobs.sphinx-extension-tests.steps[4] (Run tests for Sphinx extensions)"
        },
        {
          "path": ".github/workflows/docs_win.yml",
          "locator": "jobs.sphinx-extension-tests.steps[4] (Run tests for Sphinx extensions)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python lint.py"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/docs.yml",
          "locator": "jobs.docs.steps[4] (Lint)"
        },
        {
          "path": "docs/Makefile",
          "locator": "target lint (line 172)"
        },
        {
          "path": "docs/Makefile",
          "locator": "target check (line 180)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python scripts/check_migrations.py"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/check-migrations.yml",
          "locator": "jobs.check-migrations.steps[4] (Check for missing migrations)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python scripts/pr_limit/check_pr.py"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/check_pr_limit.yml",
          "locator": "jobs.pr_limit.steps[2] (Check PR limit)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "python scripts/pr_quality/check_pr.py"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/check_pr_quality.yml",
          "locator": "jobs.pr_quality.steps[2] (Run PR quality checks)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
