emBEADingsGitHub

Your pull request merged. The issue is still open.

After a sprint, list the open issues your merged pull requests already finished: issues a change names by ID, and issues that match a squashed commit.

Why it happens

After a busy day of merges, the tracker is full of issues whose work landed under another name: the follow-up a review fix already covered, the bug a refactor made moot, the in-progress issue whose pull request merged an hour ago.

What emBEADings does

embead superseded reads the changes merged since a date or commit, straight from git, or from a list of pull requests. It lists open issues a change names by ID, then ranks the rest against each commit, splitting squash merges back into their commits so a fix bundled into a bigger change still finds its issue. Issues with an owner label or someone working on them are flagged, never touched.

Try it

embead superseded --since 2026-10-01          # merges on this branch since a date
embead superseded --since main~30 --json      # or since a commit

# or from GitHub pull requests
gh pr list --state merged --json number,title,body,files,mergedAt | jq -c '.[]' > prs.jsonl
embead superseded --since 2026-10-01 --changes-file prs.jsonl

Questions

Does it close the issues for me?

No. It lists them with the change that is the evidence. You close them in your tracker.

Does it work with Linear as well as Beads?

Yes. Add --source linear --linear-team ENG and it matches your merges against that team's issues.

What about squash merges that bundle several fixes?

Each squashed commit is ranked on its own, so a fix inside a larger pull request still points at the issue it closes.

See it with beadsDuplicate issues in Beads? Find them by meaning.A bloated Linear backlog is mostly the same issue, filed again.Teach your agents to look before they file.

emBEADings is free and open source (MIT), made by Jackson Cantrell, and listed in the Beads community tools.