)]}'
{
  "commit": "d5d981426ead3f490713ef5d2fd1aa3d0f13b005",
  "tree": "8b1e80357d0c9f3bb6da03ac6b890ee65770512d",
  "parents": [
    "e252429b1dc717a23807116db3dfa82f6a8fc8ff"
  ],
  "author": {
    "name": "Konstantin Ryabitsev",
    "email": "konstantin@linuxfoundation.org",
    "time": "Thu Apr 23 13:46:15 2026 +0000"
  },
  "committer": {
    "name": "Konstantin Ryabitsev",
    "email": "konstantin@linuxfoundation.org",
    "time": "Thu Apr 23 13:48:22 2026 +0000"
  },
  "message": "Add ci-matrix.sh for running tests across the supported Python range\n\nci.sh exercises only whichever interpreter uv resolves for the local\nenvironment — typically the newest Python installed on the dev\nmachine, which varies from one contributor to the next. Runtime bugs\nspecific to other versions in the supported range can slip through\nsilently. The import crash fixed in the parent commit is exactly\nthis class: a module-level subscripted annotation that raises\nTypeError on 3.11/3.12/3.13 at import but is invisible on 3.14\nthanks to PEP 649 deferred annotation evaluation.\n\nci-matrix.sh iterates over every interpreter version in the declared\n`requires-python` range (currently 3.11 through 3.14) and runs an\nimport smoke check plus the full pytest suite against each. ruff,\nmypy, pyright, and ty analyse code against a configured target rather\nthan executing it, so running them per interpreter would not add\ncoverage; ci.sh remains the canonical home for those checks.\n\nRunning the full pipeline per version is slow enough that it does not\nbelong in the default workflow, hence a sibling script rather than a\nflag on ci.sh. Use it before releases and after changes that could\ndepend on version-specific runtime behaviour (import-time annotations,\nstdlib APIs, syntax features).\n\nKey points:\n- Each version gets its own .venv-X.Y via UV_PROJECT_ENVIRONMENT, so\n  successive runs are incremental and the default .venv is untouched.\n- `uv python install $PYTHONS` is called up front so the script works\n  even when UV_PYTHON_DOWNLOADS\u003dmanual is set globally.\n- Failures are collected and reported at the end rather than bailing\n  on the first broken interpreter, so a full matrix picture is shown\n  in one run.\n- Override the version list with PYTHONS\u003d\"3.11 3.14\" ./ci-matrix.sh.\n\nAdd `.venv-*` to .gitignore so per-version environments do not show\nup in `git status`.\n\nAssisted-by: claude-opus-4-7\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "22fc32016f650c2773cc7b29a3ddfd1b1ae3a5b0",
      "old_mode": 33188,
      "old_path": ".gitignore",
      "new_id": "955dc615b3861907931f784d069a161ec2f4e05b",
      "new_mode": 33188,
      "new_path": ".gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "513ff63e7e6ffbe07ba910f3982af0877030bd7b",
      "new_mode": 33261,
      "new_path": "ci-matrix.sh"
    }
  ]
}
