Skip to content

deps-auto: automerge runs after a green gate even when the battery was skipped - #475

Merged
AlexZ005 merged 15 commits into
depsfrom
feat/deps-auto
Oct 25, 2026
Merged

AlexZ005 merged 15 commits into
depsfrom
feat/deps-auto

Conversation

@AlexZ005

Copy link
Copy Markdown
Collaborator

On deps c6dda92 (#473), Dependabot's Actions PR #460 ran green:

  • scope: class auto, battery=false
  • ci passed
  • deps-gate and pc-battery both SUCCESS

But the new automerge job was skipped, so auto-merge was never turned on. With no if, a job's implicit success() also checks the jobs its own needs depend on. deps-gate needs perf / plan / e2e, and those are skipped on purpose for every PR without the battery (Actions, tools/agent). So automerge skipped in exactly the case it exists for.

Fix: if: ${{ !cancelled() && needs.gate.result == 'success' && needs.scope.outputs.cls == 'auto' && github.base_ref == 'deps' }}.

Checks: actionlint 1.7.7 clean. This is a manual PR, so it runs the required battery once. Afterwards, an @dependabot rebase on #460 shows the auto-merge end to end.

🤖 Generated with Claude Code

AlexZ005 and others added 15 commits October 24, 2026 18:06
… a systemd unit

Unquoted, Environment=PC_BATTERY_WRAP=e2e-slot --exclusive ... is split at the spaces (found
installing the timer on the desktop).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…5-10 (16 shards; replayed slowest shard 49 -> 35-38 min)

- refresh --results is repeatable and takes the median per suite: a suite's time moves by half
  between runs on a shared runner, and the 15-shard split fitted to run 9 alone put run 10's
  shards anywhere from 21 to 50 min
- battery.json seconds from runs 5-10 (required + optional passes); replaying runs 8 / 9 / 10 on
  the new split: max shard 38 / 37 / 35 min (was 49 / 38 / 49)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…et by hand

- deps-policy.cjs: new `battery` output = the PR moves the root app's npm packages and is not a major
- deps.yml: perf budget + plan/e2e only when battery=true (Actions, tools/agent and majors get ci.yml alone);
  a major's deps-gate fails on purpose ("not tested here"); the optional set runs on workflow_dispatch only
- why: Dependabot's first round after 1.43.0 opened 9 PRs at once = ~380 jobs on the account's 20-job cap,
  queueing the v1.43.0 release job and every lane's CI for hours (runs cancelled, re-run after this)
- RELEASING.md + depsCi test (9/9); check-ratchet 299/39 = baseline; actionlint clean

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- confirm / e2e-optional / optional-report / deps-gate used always(), which also runs after a cancel: cancelling
  Dependabot's 9 first-round runs still started their optional sets (18 shards each); now !cancelled()

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ub runner; medians from runs 5-12

- run 12 (#468, released 1.43.2 app code, CI-only diff) was the scatter suites' first run on the runner:
  scatter-select + scatter-convert red twice (shard + fresh confirm runner: "B has the terrain" never true),
  scatter-sources at the 600 s suite timeout twice (all its checks green until then) -> optional with reasons
- scatter-edit was flaky (green on the confirm runner) and stays required
- refresh --results over runs 5-12 (one durations file per run): 16 required shards ~35 min each

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- run 13 (#468): scatter-edit red on its shard and both confirm tries, the same 'B has the terrain' as
  scatter-select/convert in run 12 (where it was green on confirm); scatter-surface flaky, stays required

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- #460 (actions, class auto) went green through the gate on the 2k deps.yml, then the gate's auto-merge step
  failed: 'Resource not accessible by integration (enablePullRequestAutoMerge)' (it needs contents: write)
- a separate automerge job after a green deps-gate holds contents + pull-requests write and checks nothing
  out, so the gate (which runs the PR's code) stays contents: read

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- the deadline was Date.now() + 0, which is truthy, so '|| Infinity' never applied: by hand (no flag) every
  suite after the first came out notrun. CI always passes --deadline, so the workflows were unaffected.
  Found by lane scatter-sync.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- red on its shard in runs 13, 14 and 16 (#473 run 16: shard + both confirm tries): the Add scatter click
  times out (locator.click 30 s) - a different failure from the late-joiner terrain race

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…the GitHub runner

- the two required suites that fail on their shard about half the time (runs 10-17): knock-physics (shard red
  in 8, 9, 12, 14, 17; run 17 also both confirm tries, '2.3 (premise) B sees the ball parked') and
  env-preset-broadcast (shard red in 10, 12, 13); at ~50% a run loses all three tries ~1 in 8, so each
  alone turned deps-gate red every few runs. The rest of the flaky set is ~25% or less

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…attery was skipped

- #460 on c6dda92: run green (scope auto, ci green, deps-gate + pc-battery SUCCESS) but automerge SKIPPED:
  its implicit success() also checks the gate's own needs, and perf/plan/e2e are skipped for every PR
  without the battery. Now: !cancelled() && needs.gate.result == 'success' && class auto && base deps

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@AlexZ005
AlexZ005 merged commit 545d3f2 into deps Oct 25, 2026
34 of 37 checks passed
@AlexZ005
AlexZ005 deleted the feat/deps-auto branch October 25, 2026 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant