From ff8882b2fcef5b7dfa86ac97cde407cc7b9ae3d5 Mon Sep 17 00:00:00 2001 From: Alexander Hentschel Date: Wed, 3 Jul 2024 22:19:09 -0700 Subject: [PATCH 1/7] [draft] iteration of branching convention --- DEVELOPMENT.md | 117 ++++++++++++++++++++++---- docs/flow-go_branching-convention.png | Bin 0 -> 174719 bytes 2 files changed, 101 insertions(+), 16 deletions(-) create mode 100644 docs/flow-go_branching-convention.png diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 616dbfdb5ff..f4128c5b806 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,24 +1,107 @@ # Development -## Feature Release Flow - -### Branching Strategy +Please carefully read our [Coding Conventions](./CodingConventions.md). + +## Branching Convention + +**This convention is _binding_ for all PR requests in this repo!** +Deviating from this convention has a significant risk of compromising mainnet. +If you feel that the branching convention could be improved, please prepare a concrete proposal and add an agenda item for +a [Core Protocol Working Group](https://github.com/onflow/Flow-Working-Groups/tree/main/core_protocol_working_group) meeting. + +### Overview +On a conceptual level, we maintain three categories of branches: +* The **deployment branches** version software is was/is/shoud be running on testnet and mainnet. + The naming convention is `v0.minor` and loosely follows semantic versioning. The major version is currently pinned to `0`, + as the Flow protocol is not yet fully implemented. The minor version increases at every Height-Coordinated-Upgrade [HCU] or spork (points of breaking downwards compatibility). + In a nutshell, you can think of the minor as a version number for the overall protocol. Each time there is a change in the protocol, such that nodes + running the old and new version can't be mixed, the minor version increases and we create a new deployment branch + (usually from `master`). +* `master` accumulates all revisions and features that are either fully downwards compatible or can be rolled out via an HCU. Probably the majority of PRs + can be merged directly to master or via a feature branch. Furthermore, our ability to roll out upgrades to the live network via HCUs will significantly increase over time. +* For most **feature branches**, the protocol changes they implement will hopefully be small enough to be deployed via an HCU (and hence can be merged to `master`). + Though, for the foreseeable future, large and broadly-breaking improvements will be necessary for a fast evolution and feature-completion of Flow. + Such features should be kept in their individual feature branches. +* The `spork` branch, will be created in preparation of a new spork from the most recent `master`. Feature branches holding HCU-**in**compatible upgrades will be + consolidated on this `spork` branch. The spork branch is intended to be very short-lived and only exist for a few weeks right before the testnet spork. + When the Flow network has committed to the spork on a governance level (at the moment, largely coordinated by the Flow Foundation), the `spork` branch will be + merged back to `master`. + +We are purposefully continuing the usage of the 'spork' terminology here, to describe a "severely breaking change". +Specifically, spork describes a deployment of new node software, which requires the entire network to be stopped and rebooted. +We only carry over a snapshot of the execution state but fully re-initialize the protocol state. Thereby, major upgrades of the protocol, +incl. migrations of the entire execution state to a new formats become reasonably straight forward. +Additional context on HCU vs sporks can be found [here](https://developers.flow.com/networks/node-ops/node-operation/hcu#hcu-versus-spork). + + + +#### Motivations +* Based on the decentralized nature of blockchain networks, continuous deployment is practically intractable (without compromising decentralization). +Therefore, longer wait times for features until their deployment must be accounted for in the development process. This convention has been incrementally +developed and refined based on the multi-year learnings of managing the deployment of the flow network. +* Deployment branches, `master` containing a runnable snapshot of the most recent development state and feature branches are intuitively exactly what you + would expect without further flow-specific context. We just _extend_ the common convention by a few edge cases accounting for the upgrade-constraints of a blockchain network: + * On a specific deployment branch, there can only be non-braking changes. This is to prevent accidents where we roll out new node + software incrementally to one node after another, but then discover later that there is some specific case where the two versions don't work together and mainnet halts. + * Due to the limitations of upgrades that can be rolled out via HCUs, we have to separate spork-level features. That is the scenario we address with long-living + feature branches and the spork branch. +* You may wonder why we don't just use a single spork branch right away. So `master` would contain all HCU-compatible upgrades and the spork-branch _in addition_ also the HCU-**in**compatible upgrades. + We optimize for the case where the majority of changes is HCU-compatible, while we have very few HCU-incompatible features in the pipeline which in tendency go very deep in one specific area of the code base. + If we collected the HCU-incompatible features in a single 'spork' branch, we would need to merge master into that. That means an engineer would need to know all HCU-incompatible features + currently in the pipeline to resolve merge conflicts. In our model where teams develop features in parallel, it has proven to be efficient for each team to maintain their own HCU-incompatible feature + branches and regularly merge the evolving `master` into them. As feature branches stay aligned with `master`, the last remaining step of merging all the feature branches together is usually not a big lift. +* During the limited lifetime of the `spork` branch, the evolution of `master` should be very small. Generally, the engineering team is more focused on testing, a significant portion of features will have + completed their development in time for the spork and new features start in their own branches anyway. + + +### The [master](https://github.com/onflow/flow-go/tree/master) branch + +The `master` branch is intended to only contain features for the _immediately_ upcoming release. +This is under the assumption that we already committed to the type of upgrade (HCU vs Spork). + +**Generally only HCU-compatible changes are allowed to be mered to `master`**. It is the responsibilities of the developers to provide conclusive evidence why +their change can be deployed via HCU. For fully downwards-compatible changes, this explanation can be omitted. Otherwise, please provide a brief summary in your PR +targeting master as of why the code changes are HCU-compatible (for example "only affects transaction execution and verification"). More details are provided in the +[breaking change classification](#breaking-change-classifications) section below. + + +### Deployment branches + +- For every HCU and spork, a new deployment branch will be created from master. This branch will be tagged and used to update testnet and then mainnet. +- **Only non-breaking changes** can be committed to a deployment branch, such that nodes running the older and newer version on this branch can be mixed. + In other words, a single deployment branch spans _all_ patches that are protocol-compatible without an HCU. +- Each time there is a breacking-change in the protocol (see [breaking change classification](#breaking-change-classifications) below), + the minor version increases and we create a new deployment branch from `master`. + +#### Naming Convention: +The naming convention is `v0.minor`, with the major version currently pinned to `0`. +The minor version increments at every Height-Coordinated-Upgrade [HCU] or spork (points of breaking downwards compatibility). +An example is the branch `v0.33`. Extensions of the branch names are allowed but optional, for example including key differences +such as cryptographic stack (e.g. `v0.33-relic`), storage implementation (e.g. `v0.33-storehouse`), etc. Patch versions (e.g. `0.33.0`) are usually only included in tags and builds. + + +### Feature branches +- During development, all features should live on a feature branch. +- For small features, this will be a simple working branch. These branches have the naming scheme `/-`, for example `kan/123-fix-known-issue` +- For larger features, this may be a shared feature branch with other team members. Feature branches have the naming scheme `feature/`. -#### The [master](https://github.com/onflow/flow-go/tree/master) branch +### The `spork` branch -- The `master` branch is intended to only contain features for the immediately upcoming release, whether it is a [Height Coordinated Upgrade (HCU) or a Spork](https://developers.flow.com/networks/node-ops/node-operation/hcu#hcu-versus-spork). +The spork branch was specifically introduced for managing spork-level changes. Sporks are very far apart (targeted at 12 months intervals) and for of the time in between sporks, +the `spork` branch is not needed. HCU-compatible features are merged to `master` and HCU-incompatible features live in their own feature branches until shortly before the spork. +In an ideal world, where we finalize the spork date a few months ahead of time and _always_ stick to it, the `spork` branch would not be needed at all. -#### HCU or Spork specific branches +Unfortunately, despite our best efforts it has happened that needed to postpone the spork just a few weeks before it was supposed to happen. +In fact, given the magnitude and depth of changes being rolled out in a spork, needing to postpone with short notice is actually a reasonably plausible scenario. +And the `spork` branch helps us to handle this scenario: -- For every HCU and spork, a branch will be created from master. This branch will be tagged and used to update testnet and then mainnet. -- Only non-breaking changes (see: [breaking change classification](#breaking-change-classifications)) can be committed to these HCU or spork specific branches. +Unless we are absolutely sure the spork is going to happen when planned, limit `master` to HCU-compatible changes only. Thereby we keep our options open +to postpone the spork and if needed to continue with HCUs (e.g. for time-sensitive security fixes). However, we also need to consolidate our +HCU-**in**compatible (major breaking) changes, resolve conflicts and test to keep our options open for actually sporking on the planned date, +which we do on the `spork` branch. -#### Feature branches -- During development, all features should live on a feature branch. -- For small features, this will be a simple working branch. These branches have the naming scheme `/-, for example `kan/123-fix-known-issue` -- For larger features, this may be a shared feature branch with other team members. Feature branches have the naming scheme `feature/`. -### Upgrade Path Eligibility +## Upgrade Path Eligibility - When a feature branch is ready to be merged, the desired upgrade path onto Mainnet must be determined (if any). The options are: - Height Coordinated Upgrade (HCU) @@ -35,17 +118,19 @@ - All HCU upgrades can go directly into the `master` branch - All spork upgrades must live on their own feature branch until the last HCU before the spork has been performed (usually approximately 1 month before the Spork). - It is the responsibility of the DRI to keep this feature branch in a mergeable state. - - If the spork is scheduled to occur within a month, all the feature branches can be merged into `master`. However, if the exact spork date has not been decided then a special spork branch may be created from master to merge all the feature branches. This is to consolidate all the feature branches while accommodating any additional HCUs that may occur between then and the spork date. + - If the spork is scheduled to occur within a month, all the feature branches can be merged into `master`. + However, if the exact spork date has not been decided, then a special `spork` branch may be created from master to merge all the feature branches. + This is to consolidate all the feature branches while accommodating any additional HCUs that may occur between then and the spork date. - Suggestion: once a sprint, merge `master` into the feature branch. More frequent merges are easier, as they avoid complex conflict resolutions -### End of Release Cycle +## End of Release Cycle - At the end of every release cycle, we will tag a commit that includes all desired features to be released - This commit will be tagged according to [semantic versioning guidelines](https://dapperlabs.notion.site/Changes-to-handling-git-tags-5e39af7c723a428a915bd88901fc1274) - Release notes must be written up, describing all features included in this tag -### Benchmark Testing +## Benchmark Testing [Benchmarking](https://www.notion.so/Benchmarking-e3d89e3aadb44b0787da9bb7703b0dae?pvs=21) diff --git a/docs/flow-go_branching-convention.png b/docs/flow-go_branching-convention.png new file mode 100644 index 0000000000000000000000000000000000000000..6f549b4b3f3f94c9a354a68162251d01b845f302 GIT binary patch literal 174719 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

Ta=}8`OG(2BC@B)3ckr%+m?8HZDDgJ<>L}OzpAU zp1)ABDlIPFI!gVk!i~6o=^=20$NL2}MI<8VkM@1zY?8MXh|h8qG0V85pHkQLvD|dY z=|7v!!ynme+DBNYnBPF5mnCICw9RfJCo Lh{WWZt11M#WMYI27l@MsE0m-M!#a= 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 Date: Wed, 3 Jul 2024 22:28:05 -0700 Subject: [PATCH 2/7] testing image display --- DEVELOPMENT.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index f4128c5b806..e1df28ee089 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -33,7 +33,17 @@ We only carry over a snapshot of the execution state but fully re-initialize the incl. migrations of the entire execution state to a new formats become reasonably straight forward. Additional context on HCU vs sporks can be found [here](https://developers.flow.com/networks/node-ops/node-operation/hcu#hcu-versus-spork). + + + + + + + #### Motivations * Based on the decentralized nature of blockchain networks, continuous deployment is practically intractable (without compromising decentralization). From 2c0e080d624564dc3464fc40f9f15664b3a3588d Mon Sep 17 00:00:00 2001 From: Alexander Hentschel Date: Wed, 3 Jul 2024 22:29:10 -0700 Subject: [PATCH 3/7] image sizing --- DEVELOPMENT.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index e1df28ee089..900e8abbd39 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -37,10 +37,10 @@ Additional context on HCU vs sporks can be found [here](https://developers.flow. TEMPORARY to show the image, will be replaced with commented-out version below before merge --> - + From 352ae2a00246c8ce0bf5f410f9c7f1261b9e54d9 Mon Sep 17 00:00:00 2001 From: Alexander Hentschel Date: Fri, 5 Jul 2024 09:58:13 -0700 Subject: [PATCH 4/7] Apply suggestions from code review Co-authored-by: Jordan Schalm Co-authored-by: Janez Podhostnik <67895329+janezpodhostnik@users.noreply.github.com> --- DEVELOPMENT.md | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 900e8abbd39..53d5fba1631 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -11,7 +11,7 @@ a [Core Protocol Working Group](https://github.com/onflow/Flow-Working-Groups/tr ### Overview On a conceptual level, we maintain three categories of branches: -* The **deployment branches** version software is was/is/shoud be running on testnet and mainnet. +* The **deployment branches** version software was/is/should be running on testnet and mainnet. The naming convention is `v0.minor` and loosely follows semantic versioning. The major version is currently pinned to `0`, as the Flow protocol is not yet fully implemented. The minor version increases at every Height-Coordinated-Upgrade [HCU] or spork (points of breaking downwards compatibility). In a nutshell, you can think of the minor as a version number for the overall protocol. Each time there is a change in the protocol, such that nodes @@ -33,15 +33,9 @@ We only carry over a snapshot of the execution state but fully re-initialize the incl. migrations of the entire execution state to a new formats become reasonably straight forward. Additional context on HCU vs sporks can be found [here](https://developers.flow.com/networks/node-ops/node-operation/hcu#hcu-versus-spork). - - + - @@ -51,7 +45,7 @@ Therefore, longer wait times for features until their deployment must be account developed and refined based on the multi-year learnings of managing the deployment of the flow network. * Deployment branches, `master` containing a runnable snapshot of the most recent development state and feature branches are intuitively exactly what you would expect without further flow-specific context. We just _extend_ the common convention by a few edge cases accounting for the upgrade-constraints of a blockchain network: - * On a specific deployment branch, there can only be non-braking changes. This is to prevent accidents where we roll out new node + * On a specific deployment branch, there can only be non-breaking changes. This is to prevent accidents where we roll out new node software incrementally to one node after another, but then discover later that there is some specific case where the two versions don't work together and mainnet halts. * Due to the limitations of upgrades that can be rolled out via HCUs, we have to separate spork-level features. That is the scenario we address with long-living feature branches and the spork branch. @@ -69,7 +63,7 @@ developed and refined based on the multi-year learnings of managing the deployme The `master` branch is intended to only contain features for the _immediately_ upcoming release. This is under the assumption that we already committed to the type of upgrade (HCU vs Spork). -**Generally only HCU-compatible changes are allowed to be mered to `master`**. It is the responsibilities of the developers to provide conclusive evidence why +**Generally only HCU-compatible changes are allowed to be merged to `master`**. It is the responsibilities of the developers to provide conclusive evidence why their change can be deployed via HCU. For fully downwards-compatible changes, this explanation can be omitted. Otherwise, please provide a brief summary in your PR targeting master as of why the code changes are HCU-compatible (for example "only affects transaction execution and verification"). More details are provided in the [breaking change classification](#breaking-change-classifications) section below. @@ -80,7 +74,7 @@ targeting master as of why the code changes are HCU-compatible (for example "onl - For every HCU and spork, a new deployment branch will be created from master. This branch will be tagged and used to update testnet and then mainnet. - **Only non-breaking changes** can be committed to a deployment branch, such that nodes running the older and newer version on this branch can be mixed. In other words, a single deployment branch spans _all_ patches that are protocol-compatible without an HCU. -- Each time there is a breacking-change in the protocol (see [breaking change classification](#breaking-change-classifications) below), +- Each time there is a breaking-change in the protocol (see [breaking change classification](#breaking-change-classifications) below), the minor version increases and we create a new deployment branch from `master`. #### Naming Convention: From e6efaa9359f016e9c7de490333c7b37854c70b1e Mon Sep 17 00:00:00 2001 From: Alexander Hentschel Date: Fri, 5 Jul 2024 14:56:38 -0700 Subject: [PATCH 5/7] Apply suggestions from code review Co-authored-by: Peter Argue <89119817+peterargue@users.noreply.github.com> --- DEVELOPMENT.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 53d5fba1631..7e3a08885e5 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -10,8 +10,8 @@ If you feel that the branching convention could be improved, please prepare a co a [Core Protocol Working Group](https://github.com/onflow/Flow-Working-Groups/tree/main/core_protocol_working_group) meeting. ### Overview -On a conceptual level, we maintain three categories of branches: -* The **deployment branches** version software was/is/should be running on testnet and mainnet. +On a conceptual level, we maintain four categories of branches: +* **deployment branches** contain software versions that was/is/should be running on testnet and mainnet. The naming convention is `v0.minor` and loosely follows semantic versioning. The major version is currently pinned to `0`, as the Flow protocol is not yet fully implemented. The minor version increases at every Height-Coordinated-Upgrade [HCU] or spork (points of breaking downwards compatibility). In a nutshell, you can think of the minor as a version number for the overall protocol. Each time there is a change in the protocol, such that nodes @@ -91,11 +91,11 @@ such as cryptographic stack (e.g. `v0.33-relic`), storage implementation (e.g. ` ### The `spork` branch -The spork branch was specifically introduced for managing spork-level changes. Sporks are very far apart (targeted at 12 months intervals) and for of the time in between sporks, -the `spork` branch is not needed. HCU-compatible features are merged to `master` and HCU-incompatible features live in their own feature branches until shortly before the spork. +The spork branch was specifically introduced for managing spork-level changes. Sporks are very far apart (targeted at 12 months intervals), so the `spork` branch is not needed for the time in between sporks. +HCU-compatible features are merged to `master` and HCU-incompatible features live in their own feature branches until shortly before the spork. In an ideal world, where we finalize the spork date a few months ahead of time and _always_ stick to it, the `spork` branch would not be needed at all. -Unfortunately, despite our best efforts it has happened that needed to postpone the spork just a few weeks before it was supposed to happen. +Despite our best efforts, occasionally circumstances arise that require us to postpone the spork just a few weeks before it was supposed to happen. In fact, given the magnitude and depth of changes being rolled out in a spork, needing to postpone with short notice is actually a reasonably plausible scenario. And the `spork` branch helps us to handle this scenario: From c0d09091b00ed01d17de7a1063714e1cfc011f93 Mon Sep 17 00:00:00 2001 From: Alexander Hentschel Date: Fri, 5 Jul 2024 15:44:18 -0700 Subject: [PATCH 6/7] acknowledge policy limitations. that deviations should be clearly communicated --- DEVELOPMENT.md | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 7e3a08885e5..459ad7e2b15 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -2,16 +2,22 @@ Please carefully read our [Coding Conventions](./CodingConventions.md). -## Branching Convention +## Branching Policy -**This convention is _binding_ for all PR requests in this repo!** -Deviating from this convention has a significant risk of compromising mainnet. -If you feel that the branching convention could be improved, please prepare a concrete proposal and add an agenda item for +**This convention is _binding_** **for all PR requests in this repo**, as +deviations pose a significant risk to mainnet liveness. If you believe the branching convention could be improved, +please prepare a concrete proposal and add an agenda item for a [Core Protocol Working Group](https://github.com/onflow/Flow-Working-Groups/tree/main/core_protocol_working_group) meeting. - + +(⭒) There may be scenarios where the Branching Policy has its limitations, and one-off deviations could be beneficial. +This includes accidental deviations that, once discovered, are not easily undone. +These cases should be carefully tracked and require awareness and detailed coordination. +It is the responsibility of team members working on branches that break the policy to ensure +the _entire_ engineering team working on `flow-go` is informed and stays in the loop. + ### Overview -On a conceptual level, we maintain four categories of branches: -* **deployment branches** contain software versions that was/is/should be running on testnet and mainnet. +Conceptually, we maintain four categories of branches: +* **deployment branches** contain software versions that were/are/should be running on testnet and mainnet. The naming convention is `v0.minor` and loosely follows semantic versioning. The major version is currently pinned to `0`, as the Flow protocol is not yet fully implemented. The minor version increases at every Height-Coordinated-Upgrade [HCU] or spork (points of breaking downwards compatibility). In a nutshell, you can think of the minor as a version number for the overall protocol. Each time there is a change in the protocol, such that nodes @@ -19,13 +25,13 @@ On a conceptual level, we maintain four categories of branches: (usually from `master`). * `master` accumulates all revisions and features that are either fully downwards compatible or can be rolled out via an HCU. Probably the majority of PRs can be merged directly to master or via a feature branch. Furthermore, our ability to roll out upgrades to the live network via HCUs will significantly increase over time. -* For most **feature branches**, the protocol changes they implement will hopefully be small enough to be deployed via an HCU (and hence can be merged to `master`). - Though, for the foreseeable future, large and broadly-breaking improvements will be necessary for a fast evolution and feature-completion of Flow. - Such features should be kept in their individual feature branches. -* The `spork` branch, will be created in preparation of a new spork from the most recent `master`. Feature branches holding HCU-**in**compatible upgrades will be +* Most **feature branches** implement protocol changes small enough to be deployed via an HCU (and hence can be merged to `master`). + However, for the foreseeable future, large and broadly-breaking improvements will be necessary for a fast evolution and + feature-completion of Flow. Such features should be kept in their individual feature branches. +* The `spork` branch will be created in preparation of a new spork from the most recent `master`. Feature branches holding HCU-**in**compatible upgrades will be consolidated on this `spork` branch. The spork branch is intended to be very short-lived and only exist for a few weeks right before the testnet spork. - When the Flow network has committed to the spork on a governance level (at the moment, largely coordinated by the Flow Foundation), the `spork` branch will be - merged back to `master`. + When the Flow network has committed to the spork on a governance level (currently coordinated by the Flow Foundation), + the `spork` branch will be merged back to `master`. We are purposefully continuing the usage of the 'spork' terminology here, to describe a "severely breaking change". Specifically, spork describes a deployment of new node software, which requires the entire network to be stopped and rebooted. From 35ef732696aa04fc9e49ac54226f78b65e296c87 Mon Sep 17 00:00:00 2001 From: Alexander Hentschel Date: Mon, 8 Jul 2024 21:02:09 -0700 Subject: [PATCH 7/7] Update DEVELOPMENT.md Co-authored-by: Leo Zhang --- DEVELOPMENT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 459ad7e2b15..8b447224ecb 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -52,7 +52,7 @@ developed and refined based on the multi-year learnings of managing the deployme * Deployment branches, `master` containing a runnable snapshot of the most recent development state and feature branches are intuitively exactly what you would expect without further flow-specific context. We just _extend_ the common convention by a few edge cases accounting for the upgrade-constraints of a blockchain network: * On a specific deployment branch, there can only be non-breaking changes. This is to prevent accidents where we roll out new node - software incrementally to one node after another, but then discover later that there is some specific case where the two versions don't work together and mainnet halts. + software incrementally to one node after another, but then discover later that there is some specific case where the two versions don't work together and network halts. * Due to the limitations of upgrades that can be rolled out via HCUs, we have to separate spork-level features. That is the scenario we address with long-living feature branches and the spork branch. * You may wonder why we don't just use a single spork branch right away. So `master` would contain all HCU-compatible upgrades and the spork-branch _in addition_ also the HCU-**in**compatible upgrades.