diff --git a/packages/contracts-bedrock/book/src/policies/release-process.md b/packages/contracts-bedrock/book/src/policies/release-process.md index cde30e67d25..65c0e822891 100644 --- a/packages/contracts-bedrock/book/src/policies/release-process.md +++ b/packages/contracts-bedrock/book/src/policies/release-process.md @@ -1,5 +1,9 @@ # Tagging and Release Process +This release process applies to all contract release namespaces: +- `op-contracts/vX.Y.Z`: Core protocol contracts +- `op-safe-contracts/vX.Y.Z`: Safe multisig extensions + ## Creating a tagged release First select a tag string based on the guidance in [Monorepo Contracts Release Versioning](./versioning.md#monorepo-contracts-release-versioning) @@ -44,10 +48,10 @@ efforts on the trunk branch. The process is as follows: 1. Make the fixes on `develop`. Increment the contracts semver as normal. -1. Create a new release branch, named `proposal/op-contracts/vX.Y.Z` off of the rc tag (all subsequent `-rc` tags - will be made from this branch). +1. Create a new release branch, named `proposal//vX.Y.Z` off of the rc tag (all subsequent `-rc` tags + will be made from this branch). For example: `proposal/op-contracts/vX.Y.Z` or `proposal/op-safe-contracts/vX.Y.Z`. 1. Cherry pick the fixes from `develop` into the release branch, and increment the semver as normal. If this increment results in any of the modified contracts' semver being equal to or greater than it is on `develop`, then the semver should immediately be increased on `develop` to be greater than on the release branch. This avoids a situation where a given contract has two different implementations with the same version. -1. After merging the changes into the new release branch, tag the resulting commit on the proposal branch as `op-contracts/vX.Y.Z-rc.n`. +1. After merging the changes into the new release branch, tag the resulting commit on the proposal branch as `/vX.Y.Z-rc.n` (e.g., `op-contracts/vX.Y.Z-rc.n` or `op-safe-contracts/vX.Y.Z-rc.n`). Create a new release for this tag per the instructions above. ## Finalizing a release diff --git a/packages/contracts-bedrock/book/src/policies/versioning.md b/packages/contracts-bedrock/book/src/policies/versioning.md index c40f16d79cf..e17bbf5f9f6 100644 --- a/packages/contracts-bedrock/book/src/policies/versioning.md +++ b/packages/contracts-bedrock/book/src/policies/versioning.md @@ -64,7 +64,10 @@ Individual contract versioning could be deprecated when the following conditions Versioning for monorepo releases works as follows: -- Monorepo releases continue to follow the `op-contracts/vX.Y.Z` naming convention. +- Monorepo releases follow the `op-contracts/vX.Y.Z` naming convention for core protocol contracts. +- Additional release namespaces exist for specialized contract categories: + - `op-safe-contracts/vX.Y.Z`: Safe multisig extensions (SaferSafes, LivenessModule2, TimelockGuard, DeputyPauseModule, etc.) +- Each namespace maintains its own independent semver versioning. - The version used for the next release is determined by the highest version bump of any individual contract in the release. - Example 1: The monorepo is at `op-contracts/v1.5.0`. Clarifying comments are made in contracts, so all contracts only bump the patch version. The next monorepo release will be `op-contracts/v1.5.1`. - Example 2: The monorepo is at `op-contracts/v1.5.1`. Various tech debt and code is cleaned up in contracts, but no features are added, so at most, contracts bumped the minor version. The next monorepo release will be `op-contracts/v1.6.0`.