Repository navigation
ci(main): the default branch is 263 commits behind and runs a retired security-tests job — every Python PR to main is red #13812
Description
Activity
- addedbugSomething isn't workingSomething isn't working
on Aug 9, 2026 Release sync PR opened: #13814 (
Dev_new_gui→main, 263 commits), on the owner's instruction ahead of the next release.That merge is also the fix for this issue: it brings
Dev_new_gui's currentci.yml— withpython-shard/python-suitein place of the retiredsecurity-tests— onto the default branch, so a Python-touching PR tomaincan go green again.It merges cleanly:
$ git merge-tree $(git merge-base origin/main origin/Dev_new_gui) origin/main origin/Dev_new_gui | grep -c '^<<<<<<<' 0Context that made this urgent rather than cosmetic — the release investigation:
releases: 1 stable · 10 prerelease latest (stable): v0.2.0 @ 2026-03-26 newest overall: v0.6.3 @ 2026-08-04 (prerelease by policy, deliberate) Dev_new_gui commits not in v0.6.3: 263 main commits not in Dev_new_gui: 4 (release chore commits)Releases fire on push to
main, andv0.6.3's commit is onmainbut not an ancestor ofDev_new_gui. So cutting a release before this sync would publish a higher version number over a tree missing four months of merged work.#13793 becomes redundant if #13814 lands first — the sync carries the watchdog to
mainon its own, and that PR can be closed as superseded.- addedarea: ci-gatesWave 0 · cluster P — CI gates & merge integrityWave 0 · cluster P — CI gates & merge integrity
on Sep 1, 2026 Verified against merged
mainand closing. Each criterion carries its own evidence; none is ticked on the strength of the branch rename alone.AC1 — a Python-touching PR against
maincan go green. Three merged today, all based onmain, all carrying Python:PR .pyfilesBase Merged #16813 1 main2026-09-17 #16811 2 main2026-09-17 #16810 3 main2026-09-17 AC2 —
mainno longer runs a retired CI job.git show origin/main:.github/workflows/ci.ymldeclares exactly six jobs:changes python-shard python-suite frontend-tests deployment-check notifyThat is the restructured list this issue recorded as belonging to the active branch.
git grep -c security-tests origin/main -- .github/workflowsreturns nothing — the job is gone from every workflow on the branch, not merely fromci.yml. So the collection failures onasyncssh/cachetools/torchmetrics/tools.linthave no job left to occur in.AC3 — the gap is closed.
git rev-list --count origin/main..origin/Dev_new_guireturns 0, andgh repo view --json defaultBranchRefreturnsmain. The relationship also inverted:mainbecame the default branch on 2026-09-12, andmirror-main-to-legacy-dev-branch.ymlnow fast-forwardsDev_new_guifrommain, so the direction that produced the 263-commit deficit cannot recur. #16461 tracks retiring the mirror once the deployed updater is confirmed to have stopped fetching the legacy name — that is a separate question about a deployment, not about this gap.What this issue was not. The 263-commit deficit and the retired job were one condition with one cause:
mainwas not the branch development happened on. The rename removed the cause rather than patching either symptom, which is why all three criteria resolve together.Related: #15318 and #14444 also describe CI conditions predating the rename; #14444 is being re-scoped separately rather than closed here, because its subject — the self-hosted runner pool — was retired rather than repaired, and one of its criteria is still live.
Summary
mainis 263 commits behindDev_new_gui, and its.github/workflows/ci.ymlstill runs asecurity-testsjob that no longer exists on the active branch. That job fails on collection formissing optional dependencies, so any PR to
mainthat touches a Python file is red before itstarts.
Found while landing #13793 (putting the CI dispatch watchdog on the default branch, per #13791).
That PR adds three files — a workflow, a stdlib-only script, and its test — and cannot influence any
of the failures.
Evidence
main'sci.ymljob list containssecurity-tests.Dev_new_gui's does not — it was restructuredinto
python-shard/python-suite:The superseded job runs an unsharded pytest that collects the whole tree, and dies on optional deps:
Several of those files have already been given
pytest.importorskipguards onDev_new_gui(
test_learner.pyguardssklearn,completion_trainer_test.pyguardstorch.nn.functional), andmain's copies differ. So this is not a missing fix — it is a fix that exists and has not reachedmain.Why it matters
mainis the default branch. Two consequences beyond the red check:scheduleonly from the default branch, so any workflow whose cron matters mustlive on
main. ci: bot-attributed runs park as action_required, and the watchdog cron that would clear them never fires #13791 is exactly that case — and getting the watchdog there is blocked by this.Suggested fix
Sync
mainfromDev_new_gui.sync-main-to-dev.ymlexists; whether it is the right vehicle for a263-commit gap, or whether this wants a deliberate release merge, is an owner call.
A narrower interim option: bring
main'sci.ymlto theDev_new_guijob set, so the defaultbranch stops running a workflow design that was retired on the active branch.
Acceptance criteria
maincan go green.mainno longer runs a CI job that the active branch has retired.mainandDev_new_guiis either closed or deliberately recorded with thereason it stays open.
Related