Rollup=never/always guidance

With our current PR velocity and relatively long per-PR testing times in CI, rollups are an unfortunate necessity. With that in mind, we currently have multiple people doing great work with rollups. However, they can't be omniscient, so they can use some guidance deciding whether a pull request is acceptable to rollup or not.

Please apply, when possible, either the @bors rollup=never or @bors rollup=always levels to a given PR during approval. If a PR may break a build but there is no reason to not roll it up, but is deemed unlikely to, then leave it in the neutral state (without an explicit rollup marker).

Use rollup=never if:

  • Your PR is too big and non-additive (note: adding 2000 lines of completely new tests is fine to rollup).
  • Messes too much with:
    • LLVM
    • bootstrap
    • build-manifest
  • May have performance implications
  • May cause unclear regressions (e.g., we would likely want to bisect to this PR specifically, as it would be hard to identify as the cause from a rollup)
  • Is otherwise dangerous to rollup

When you use rollup=never, please also leave a comment as to why you've used it.

Use rollup=always when:

  • Changes are limited to documentation, comments, etc. that is highly unlikely to fail a build
  • Changes are pure refactoring and cannot have performance implications
  • Your PR is not landing possibly-breaking or behavior altering changes
    • Feature stabilization without other changes is likely fine to rollup, though

Don't rollup=always if:

  • Your PR may be affected by MIR migrate mode
10 Likes

Should we also add this to forge?

4 Likes

What is "MIR migrate mode"?

1 Like

@XAMPPRocky I was told the this is already on forge https://forge.rust-lang.org/release/rollups.html

I think (but am not sure) this is referring to borrow-checker migrate/compare mode, which was used to migrate from AST to MIR borrow check. It's not as important now (since we have migrated), but it is still used for some feature gated borrow-checker features and it may be used again to test polonius.

EDIT: to clarify a bit more... compare-mode is not run in the CI by default; it only runs for a full bors test, so I guess Mark means that rolling up such PRs could cause spurious rollup failures that are not detected by the CI tests.

2 Likes