Some publishable crate test jobs are not required merge checks
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 5.6k
- Forks
- 1.3k
- Avg merge
- 8h 47m
- Merged PRs (30d)
- 19
Description
### Summary
`/.github/workflows/ci.yml` generates `Test ${{ matrix.crate }}` jobs for publishable crates, but GitHub does not require all of them before merge.
On 2026-04-29, GitHub reported these jobs as `isRequired: false` on PR `#6404`:
- `Test libp2p-stream`
- `Test libp2p-upnp`
- `Test libp2p-webrtc-utils`
- `Test libp2p-webrtc-websys`
- `Test libp2p-websocket-websys`
Other crate tests on the same PR were `isRequired: true`. Since `.github/mergify.yml` relies on branch protection, a PR can still merge if one of the omitted crate tests fails.
### Expected behavior
Every `Test ` job for a publishable crate should be required before merge.
### Actual behavior
The workflow runs the tests, but GitHub does not enforce all of them as merge gates. Failures in the omitted jobs are visible in CI but do not block merge.
### Relevant log output
```shell
# .github/workflows/ci.yml
jobs:
test:
name: Test ${{ matrix.crate }}
# cargo metadata-derived publishable crates include:
libp2p-stream
libp2p-upnp
libp2p-webrtc-utils
libp2p-webrtc-websys
libp2p-websocket-websys
# GitHub live check metadata for PR #6404 on 2026-04-29
Test libp2p-core -> isRequired: true
Test libp2p-kad -> isRequired: true
Test libp2p-quic -> isRequired: true
Test libp2p-stream -> isRequired: false
Test libp2p-upnp -> isRequired: false
Test libp2p-webrtc-utils -> isRequired: false
Test libp2p-webrtc-websys -> isRequired: false
Test libp2p-websocket-websys -> isRequired: false
query($owner:String!, $repo:String!, $pr:Int!) {
repository(owner:$owner, name:$repo) {
pullRequest(number:$pr) {
commits(last:1) {
nodes {
commit {
statusCheckRollup {
contexts(first:100) {
nodes {
... on CheckRun {
name
isRequired(pullRequestNumber:$pr)
conclusion
status
}
}
}
}
}
}
}
}
}
}
# .github/mergify.yml
# All branch protection rules are implicit
```
### Possible Solution
Update the active branch-protection configuration so every publishable crate test generated by `ci.yml` is required. Add drift detection between the publishable crate list and the checks GitHub marks as required.
OR
1. Add these five checks to the current required merge checks:
- `Test libp2p-stream`
- `Test libp2p-upnp`
- `Test libp2p-webrtc-utils`
- `Test libp2p-webrtc-websys`
- `Test libp2p-websocket-websys`
2. After updating the settings, verify the fix on any open PR by checking that GitHub reports those jobs as `isRequired: true`.
3. Add a small CI/admin check that compares:
- the current publishable crate list from `cargo metadata`
- the set of `Test ` jobs GitHub marks as required
This keeps the immediate fix small and gives maintainers a simple way to catch future drift.
### Version
_No response_
### Would you like to work on fixing this bug?
Yes
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with .github/workflows/ci.yml to inspect how publishable crates become Test jobs, then review .github/mergify.yml and the required-check metadata from PR #6404. Confirm where branch protection is configured, ensure the five named checks are required, and verify that a publishable-crate list cannot drift from required checks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github, github-actions, rust
- Domain
- ci-cd, devops
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100