The lint job runs the prek hooks (ruff and ty) on all files. The test
job runs pytest on Python 3.10 to 3.14 with node available, after
fetching the web version's code for the upstream comparison; the
download is cached, and if it fails those tests skip themselves.