Review and integration#
Stage 3 of the contribution workflow. Once your pull request is open, CI runs
automatically and routes reviewers. Iterate until CI is green and all required
approvals are obtained, then the change is squash-merged into develop.
If CI blocks your PR or you need to understand tier classification, see CI automation and contribution tiers.
CI green or CI red#
The moment the pull request is opened the CI starts running. From there the journey forks: a green path that ends with a released tag and a DOI, or a red path that loops back to the contributor until the CI turns green.
flowchart TD
Open([PR opened]) --> CI{CI status}
%% Path A · green
CI -->|green| GreenPath
subgraph GreenPath[Path A · CI green to release]
direction TB
Review[01 · Review<br/>SME · Maintainer<br/>ESA on Tier 2+]
Approve[02 · Approve<br/>stale approvals dismissed on push]
Merge[03 · Squash merge<br/>develop → release → main]
Released[04 · Released<br/>tagged + GitHub Release + DOI]
Review --> Approve --> Merge --> Released
end
%% Path B · red
CI -->|red| RedPath
subgraph RedPath[Path B · CI red, iterate, loop back]
direction TB
ReadLog[01 · Read the failing job log]
Iterate[02 · Iterate<br/>address comments · push fixes<br/>sign each commit]
Rerun[03 · Re-run<br/>stale approvals are dismissed]
ReadLog --> Iterate --> Rerun
end
Rerun -.->|loop back| CI
classDef green fill:#E8F5E9,stroke:#43A047,color:#000
classDef red fill:#FFEBEE,stroke:#E53935,color:#000
class GreenPath green
class RedPath red
When CI fails, read the failing job log, fix the issue, and push again. Each push re-triggers the pipeline and dismisses any stale approval. The sticky comment from the guidance bot summarises the tier, the job status, and the reviewers still required.
Open and update your pull request#
When you’re ready to ask for a code review, file a pull request. Before you do, complete the pre-submission checklist).
Navigate to your repository on GitHub at your-username/BPS (or the main repository if working directly)
Click on “Branches”
Click on the “Compare” button for your feature branch
Select the “base” and “compare” branches, if necessary. This will be
developandfeature/your-feature-name, respectively.
To submit a pull request:
Navigate to your repository on GitHub
Click on the “Pull Request” button
Click on “Commits” and “Files Changed” to verify the diff one last time
Write a description following the PR template
Click “Create Pull Request”
Using draft pull requests#
If you don’t think your request is ready to be merged, use GitHub’s Draft PR feature:
Indicate that the code is still work-in-progress
Allow reviewers to provide early feedback
Don’t block other work or confuse reviewers about readiness
Can be converted to a regular pull request when ready
Mention anything you’d like particular attention for, such as a complicated change or some code you are not happy with.
If you need to make more changes after submitting your PR, push to your branch. The pull request updates automatically and CI re-runs. See Practical workflow) for commands.
Accepting an intentional baseline change#
If your PR intentionally changes processor output (e.g. a scientific fix or new algorithm), the baseline check will report a difference and CI may elevate the PR to a higher tier. See CI automation and contribution tiers) for how that works.
To get the change merged:
Confirm with the relevant SME (auto-assigned via
CODEOWNERS) that the change is correct.Update
test/baseline/reference outputs in the same PR so the new behaviour becomes the new baseline.The SME reviews the diff (code + baseline update) and approves via a standard GitHub review.
There is no baseline:accepted label any more; SME approval flows through the native CODEOWNERS-required review on the PR.
Responding to reviews#
Address all reviewer comments promptly (< 3 days)
Update the PR with requested changes
CI re-runs automatically on each push
Iterate until all approvals are obtained
Release-related files such as VERSION and CHANGELOG.md require ESA approval via CODEOWNERS. See branch protection rules for the full policy.
After merge#
Your pull request is squash-merged into develop, the linked issue closes automatically, and the change follows the normal release path when promoted.
You may delete your feature branch. See Practical workflow) for commands.
Previous: Implementation | Next: CI automation and contribution tiers