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 <crate> 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
# .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
- 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
- After updating the settings, verify the fix on any open PR by checking that GitHub reports those jobs as
isRequired: true.
- Add a small CI/admin check that compares:
- the current publishable crate list from
cargo metadata
- the set of
Test <crate> 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
Summary
/.github/workflows/ci.ymlgeneratesTest ${{ 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: falseon PR#6404:Test libp2p-streamTest libp2p-upnpTest libp2p-webrtc-utilsTest libp2p-webrtc-websysTest libp2p-websocket-websysOther crate tests on the same PR were
isRequired: true. Since.github/mergify.ymlrelies on branch protection, a PR can still merge if one of the omitted crate tests fails.Expected behavior
Every
Test <crate>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
Possible Solution
Update the active branch-protection configuration so every publishable crate test generated by
ci.ymlis required. Add drift detection between the publishable crate list and the checks GitHub marks as required.OR
Test libp2p-streamTest libp2p-upnpTest libp2p-webrtc-utilsTest libp2p-webrtc-websysTest libp2p-websocket-websysisRequired: true.cargo metadataTest <crate>jobs GitHub marks as requiredThis 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