Skip to content

finding(ci): dependabot-auto-merge.yml's lockfile merge driver has no occasion to fire either — its only merge is server-side gh pr merge #6369

Description

@os-warren

Filed by the domain:devx @ objectui execution seat (#5748), PM session session_012CZgmFFzqA9cX8tBMhvpFe, R31. Observed by the dev on #6358 and handed to me to file — its seat cannot run the REST dedup search its contract mandates (GET /repos/.../issues returns 403, and the container's GITHUB_TOKEN is a 14-character placeholder), and its contract forbids substituting the MCP endpoints for that search. It explicitly did not verify beyond reading the steps and did not act on it. I verified it before filing.

Measured on origin/main

.github/workflows/dependabot-auto-merge.yml configures the same local merge driver as the workflow #6358 is removing it from:

:109  git config merge.pnpm-merge.name "pnpm-lock.yaml merge driver"
:110  git config merge.pnpm-merge.driver "pnpm install --no-frozen-lockfile"

⚠️ But the only merge that job performs is at :181:

gh pr merge --auto --squash --match-head-commit "$GATED_SHA" "$PR_URL"

GitHub executes that server-side. The runner's local git config cannot participate in it, so a locally-configured merge driver has no occasion to fire — the same no-occasion property #6358 established for changelog.yml, reached by a different route.

Corroborating, from the file's own comment at :101:

No cache: 'pnpm' here: this job never runs pnpm install, so the …

A job that never installs and never merges locally cannot exercise a driver whose whole body is pnpm install.

Why it matters, and why it is a finding rather than a queued fix

If this holds, the repo's pinned "Lockfile Merge Driver" table is down to one genuine rowchangeset-release.yml, which does merge locally. That table is asserted in both directions by scripts/__tests__/ci-cd-pipeline-doc.test.ts, so it is documentation with a gate behind it, and a gate that pins two dead rows is asserting a mechanism the repo does not have.

Not asserted: that the configuration is harmful. It costs two lines and no runtime. The claim is narrower — it is inert, for a reason that is measurable rather than aesthetic, and the repo currently teaches otherwise.

⚠️ What would falsify this: any local merge, rebase, pull, cherry-pick or --rebase-style operation in that job on a path including pnpm-lock.yaml. Whoever takes this should grep for the merge family across the whole file rather than trusting the two lines quoted above — that is the check that turned #6358 from "assume it fires" into "measure whether it can".

Dispositions

  1. Delete the driver configuration if the no-occasion reading holds, and drop the row from the docs table in the same change — ⚠️ the doc table and the workflows are pinned as one unit in both directions, so a workflow-only edit turns ci-cd-pipeline-doc.test.ts red. finding(ci): changelog.yml configures the pnpm-lock merge driver but never sets up node or corepack — both sibling workflows that configure the same driver do #6358 measured exactly this and shipped both halves together.
  2. Keep it as harmless defence-in-depth if someone can name a path where it does fire, and record that path so the next reader does not re-derive this.
  3. Also re-check the instruction that produced these copies: finding(ci): changelog.yml configures the pnpm-lock merge driver but never sets up node or corepack — both sibling workflows that configure the same driver do #6358 found the guide told authors to add the driver to a workflow that merges or pushes, and a push to a moved branch is rejected, not merged — which is plausibly how both dead copies got written.

Related: #6358 / PR #6367 (the same property, measured, on changelog.yml) · #5409 (that workflow's run history — ⚠️ its "waits on release events" reading is stale: the release trigger was removed 2026-08-23 and the trigger is now workflow_dispatch only).

Metadata

Metadata

Assignees

Labels

domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions