Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

CI: "Validate changelog diffs" job fails on every fork-sourced pull request

Open Beginner friendly
#10,579 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
84/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
git, github-actions
Domain
ci-cd

Research direction

Read .github/workflows/lint-build-test.yml and .github/actions/check-merge-queue-changelogs, then inspect the Validate changelog diffs step and its pull request event context. Verify that fork-sourced pull requests can complete changelog-diff validation, while merge_group behavior and the per-package changelog checks continue to pass.

Written by the indexing model from the issue text.

Description

Bug

"Lint, build, and test / Validate changelog diffs" fails on every fork-sourced pull request, independent of the PR's content.

Root cause

The validate-changelog-diffs job (.github/workflows/lint-build-test.yml) runs the composite action .github/actions/check-merge-queue-changelogs, whose "Check changelog changes" step computes:

TARGET_REF=$(git merge-base "origin/$BASE_REF" "origin/$PR_BRANCH")

For a PR whose head lives on a fork, origin/$PR_BRANCH does not exist in the job's checkout (fork head branches are fetched as refs/pull/N/merge, not as remote branches under origin), so the job dies before validating anything:

fatal: Not a valid object name origin/feature/use-memory-see-this-sp0
##[error]Process completed with exit code 128.

The job has no skip condition beyond the event type, so this affects every fork-sourced PR.

Evidence
  • PR #10535 (fork branch feature/use-memory-see-this-sp0) — job run: https://github.com/MetaMask/core/actions/runs/36560718378/job/109380743283
    • The job failed on every commit the PR has ever had — including its very first commit ca6a523772 — i.e., the failure is independent of the PR's changes and occurs before any changelog diff is computed (the per-package Validate changelog (24.x, @metamask/assets-controller) job passes for the same commits).
  • PR #10229 (fork branch feat/assets-transient-loading-state) — the same job shows FAILURE on its head commits (db682a870f, 47b7803dfd).
Impact
  • Every fork-sourced PR shows a red "Validate changelog diffs" check (and the "All jobs pass" aggregate) for a reason unrelated to the PR, making genuinely failing checks harder to spot and fork PRs appear blocked.
Suggested fix direction

In the "Check changelog changes" step, when origin/$PR_BRANCH is unavailable (fork PRs), fetch the PR head ref before computing the merge base, e.g.:

git fetch origin "+refs/pull/${PR_NUMBER}/head:refs/remotes/origin/${PR_BRANCH}"

(or resolve the merge base against refs/pull/${PR_NUMBER}/merge directly, which the checkout already has).

Note: for merge_group events the current logic works, because merge-queue branches do exist under origin.

Dominant language
TypeScript
Stars
414
Forks
308
Avg merge
1d 1h
Merged PRs (30d)
405

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from MetaMask/core

All issues in MetaMask/core

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.