Skip to content

Some publishable crate test jobs are not required merge checks #6405

@failuresmith

Description

@failuresmith

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

  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 <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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions