Skip to content

ci: dependabot targets main so the release sync refuses — main is 194 behind and 4 ahead #13654

Description

@mrveiss

Summary

Sync Dev_new_gui → main refuses to run:

::error::main has 4 commit(s) not in Dev_new_gui. Resolve divergence manually first.

main is 194 commits behind Dev_new_gui and simultaneously 4 commits ahead. The four are three dependabot merges from 2026-08-04 — #13515, #13523, #13524 — plus a merge commit.

Root cause

Dependabot opens its PRs against the repository's default branch, which is main. Every other PR in this project targets Dev_new_gui. So dependency updates land on a branch nobody develops on, and the working branch never receives them, while main accumulates commits that make the release sync refuse to run.

This also explains the standing "GitHub found 20 vulnerabilities on mrveiss/AutoBot-AI's default branch" banner printed on every push: it is measured against main, which is 194 commits stale.

The divergence is almost entirely nominal

Comparing every differing dependency between the two branches:

Area Result
28 differing npm packages across autobot-frontend and autobot-slm-frontend Dev_new_gui newer on all 28, main newer on none
autobot-slm-backend/requirements.txt Dev_new_gui newer (fastapi>=0.141.1 vs 0.140.1, uvicorn>=0.52.0 vs 0.51.0)
requirements-ci/security.txt the only line where main leads — cryptography==50.0.0 vs 49.0.0

Examples of how far ahead Dev_new_gui already is: apexcharts ^6.6.1 vs ^5.16.0, jsdom ^30.0.1 vs ^29.1.1, @testing-library/jest-dom ^7.0.0 vs ^6.9.1.

So main's security bumps are superseded, with one exception.

Resolution taken

A merge of main into Dev_new_gui keeping Dev_new_gui's side throughout and accepting cryptography==50.0.0. Dev_new_gui additionally carries a PyJWT[crypto]>=2.8.0 line from #13411 that main lacks; that line is preserved.

Conflicting files: autobot-frontend/package.json, autobot-frontend/package-lock.json, requirements-ci/security.txt.

Still open after this

The merge unblocks the sync once. Dependabot will target main again on its next security update and the divergence returns. Options:

  1. Point dependabot at Dev_new_gui — target-branch: Dev_new_gui in .github/dependabot.yml for the security/version ecosystems.
  2. Change the repository default branch to Dev_new_gui, which also fixes the misleading vulnerability banner.
  3. Sync main on a schedule so the window stays small.

Option 1 is the narrowest. Option 2 addresses the banner as well, but changes what an outside visitor sees first and affects every Closes #N in a PR body — this project already relies on issues being closed manually because Closes never fires on Dev_new_gui.

Activity

  1. mrveiss commented on Aug 5, 2026

    @mrveiss
    OwnerAuthor

    PR #13655 is blocked and now draft: the required check scans git rev-list BASE..HEAD, so merging main pulls its three dependabot commits — all carrying Co-authored-by: — into scope. The merge commit exists precisely to put them in the ancestry, so the guard and the fix are in direct conflict. Three options written up on the PR; all need a decision. The five missing security upgrades (cryptography 50.0.0, fast-uri 3.1.5, hono 4.13.0, undici 8.10.0, nanoid 3.3.17) must land on Dev_new_gui under any of them.

  2. mrveiss commented on Aug 5, 2026

    @mrveiss
    OwnerAuthor

    Correcting the root cause in the description

    I wrote that "dependabot opens its PRs against the repository's default branch, which is main" and proposed pointing it at Dev_new_gui. That misses an existing mechanism, and the real cause is narrower.

    .github/workflows/dependabot-retarget.yml has existed since 2026-07-15 (#11696/#11724) and does exactly the proposed fix:

    on:
      pull_request_target:
        types: [opened, reopened, synchronize]
    concurrency:
      group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
      cancel-in-progress: true
    jobs:
      retarget:
        if: >-
          github.event.pull_request.user.login == 'dependabot[bot]' &&
          github.event.pull_request.base.ref == 'main'

    It works — #13526 (dependabot/uv/...) is on Dev_new_gui today because that workflow ran success five times on 2026-08-04. So dependabot PRs are being retargeted; the three that reached main are the exception, not the rule.

    What the run history shows

    Runs for the branches behind the three divergent merges, on the day they merged:

    14:47-15:02  success    dependabot/uv/requirements-ci/uv-…        (-> #13526, on Dev_new_gui)
    14:18:55     skipped    dependabot/npm_and_yarn/dot-mcp/…
    14:18:55     cancelled  dependabot/npm_and_yarn/dot-mcp/…
    14:16:28     skipped    dependabot/pip/pip-c7fce48c75
    

    skipped means the if: was false — i.e. the base was already not main at that moment, so a retarget had previously succeeded. The workflow's own header documents what undoes it:

    @dependabot rebase reverts the base back to main (observed on #11566) … it runs on synchronize too, so a Dependabot rebase/force-push that reverts the base is immediately re-retargeted.

    The likely defect

    concurrency: cancel-in-progress: true.

    A rebase that reverts the base to main fires synchronize; the re-retarget starts; a further event cancels it. The cancelled run above is that shape. The base then stays main, and the PR merges there — silently, because nothing reports on it.

    So the fix is not "point dependabot at Dev_new_gui" — that is already configured and working. It is to stop the corrective run being cancellable, e.g. drop cancel-in-progress for this workflow (it is cheap and idempotent, so there is little reason to cancel it), or re-assert the base once more after synchronize settles.

    Confidence: the timeline and the cancelled run fit, but I have not reproduced it — the three PRs are merged, so the event sequence cannot be replayed. Worth confirming against the next dependabot security PR rather than treating as proven.

    Unchanged

    Everything about the merge itself still holds: Dev_new_gui was genuinely missing five security upgrades, and PR #13655 carries them. This only revises why the divergence happened and therefore which fix prevents a recurrence.

  3. github-actions commented on Aug 8, 2026

    @github-actions
    Contributor

    PR #13655 (merged to Dev_new_gui) references this issue with a close keyword.

    chore(deps): merge main into Dev_new_gui to unblock the release sync (#13654)

    If this issue is fully resolved, close it manually. If work remains, no action is needed.

  4. mrveiss commented on Aug 16, 2026

    @mrveiss
    OwnerAuthor

    Closed — verified delivered and present in Dev_new_gui.

    Evidence

    Artifact Value
    PR #13655 (merged)
    Verified against git show origin/Dev_new_gui:<path> on current base, not the PR diff

    All target-branch entries in .github/dependabot.yml now point at Dev_new_gui (20 entries), and none target main — so the release sync is no longer refused. main is 1 commit ahead, and that commit is cb526c5dd release: sync Dev_new_gui into main (47 commits) (#13972) — the sync merge itself, not the dependabot drift this issue reported.


    This issue was fixed but left open because merges into Dev_new_gui do not auto-close — Closes #N only fires on the default branch. Closed as part of a sweep that cross-referenced merged PRs against open issues and verified each against current base. Every acceptance criterion was checked; partial delivery was left open rather than closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions