Release Process
Release Process
- 1. Determine if the Release is Consensus-Breaking
- 2. Create a GitHub Release
- 3. Write an Upgrade Plan
- 4. Issue Upgrade on TestNet
- 5. Issue Upgrade on MainNet
This document is for the Pocket Network protocol team's internal use only.
- 1. Determine if the Release is Consensus-Breaking
- 2. Create a GitHub Release
- 3. Write an Upgrade Plan
- 4. Issue Upgrade on TestNet
- 5. Issue Upgrade on MainNet
1. Determine if the Release is Consensus-Breaking
TODO(#791): The process of adding the consensus-breaking
label is still not foolproof.
-
Find consensus breaking changes: Review merged Pull Requests (PRs) with the
consensus-breaking
label. If any exist, assume the release will require an upgrade. Here is a link for convenience. -
Verify a Full Node: Deploy a Full Node on TestNet and allow it to sync and operate for a few days to verify that no accidentally introduced consensus-breaking changes affect the ability to sync. See the instructions in the Quickstart Guide for deploying a Full Node.
-
Update Upgrade List: If the new release includes an upgrade transaction for automatic upgrades, add the new release to the table in the Upgrades List.
UPDATE THE INFORMATION IN THE UPGRADES LIST DURING THE FOLLOWING STEPS IF ANYTHING CHANGES. If we plan to schedule an upgrade at a specific height, update the height. If the upgrade becomes consensus-breaking, ensure the table remains up-to-date.
2. Create a GitHub Release
You can find an example here.
- Tag the release: Create a new tag using the
make release_tag_bug_fix
ormake release_tag_minor_release
commands. - Publish the release: Create a new release in GitHub, using the "Generate release notes" button in the GitHub UI.
- Document the release: Append and complete the following section above the generated GitHub release notes:
## Protocol Upgrades
- **Planned Upgrade:** ❌ Not applicable for this release.
- **Breaking Change:** ❌ Not applicable for this release.
- **Manual Intervention Required:** ✅ Yes, but only for Alpha TestNet participants. If you are participating, please follow the [instructions provided here](https://dev.poktroll.com/operate/quickstart/docker_compose_walkthrough#restarting-a-full-node-after-re-genesis-) for restarting your full node after re-genesis.
- **Upgrade Height:** ❌ Not applicable for this release.
## What's Changed
<!-- GitHub Release Notes continue here -->
Legend
- ✅ - Yes
- ❌ - No
- ❓ - Unknown/To Be Determined
- ⚠️ - Warning/Caution Required
3. Write an Upgrade Plan
Protocol upgrades are only necessary for consensus-breaking
changes. However, we can still issue an upgrade transaction to require Full Nodes and Validators to use a new version.
You can use the following template as a starting point.
- [ ] Determine the block height at which the upgrade should occur.
- Selected height: `INSERT_BLOCK_HEIGHT`
- [ ] Update the information in the [Upgrades List](./upgrade_list.md) and the GitHub Release.
- Upgrade details: `INSERT_LINK_TO_UPGRADE`
- [ ] Inform the community about the planned upgrade.
- Announcement: `INSERT_LINK_TO_ANNOUNCEMENT`
- [ ] Prepare a contingency plan to address potential issues.
4. Issue Upgrade on TestNet
- Follow the Upgrade Procedure to upgrade existing/running Full Nodes and Validators to the new version of
poktroll
. - Monitor the network's health metrics to identify any significant changes, such as the loss of many validators due to an unexpected consensus-breaking change.
5. Issue Upgrade on MainNet
- Repeat the upgrade process on the MainNet, following the same steps as on the TestNet.
- Ensure that the upgrade height is set correctly and communicated to the community.
- Monitor the network closely during and after the upgrade to ensure a smooth transition.
TODO_IMPROVE(@olshansk, @okdas): Link to real notion docs after we've iterated on this process a few times: