AI-First Merge Strategy #9104
matthewkeil
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Why this discussion exists
In the age of AI development there will be a lot more
build the full thingstyle development that will serve to rough-out large features. But all of this code still needs to undergo human refactor and review to get it a finalized state that can actually get merged tounstable. This has created a few problems:unstableExisting Process using
epbs-devnet-0as an example to explain the issues."Hey lodekeeper, please use the existing chunks that we have and build the rest of the epbs devnet-0 branch to get us live". Now we have a "long-running branch" that has served us well as a roadmap for what chunks need to be built out to get things stabilized. We build bits and pieces into PR's and are working to get them all merged. But this has created an issue. When building one of the chunks, the range sync PR, there is no way to test this code. The functionality was extracted, semi-copy and paste, and then refactored manually to get it ready for actual merge to unstable. There is no existing way to test this code until all features from devnet-0 branch are rebased on top of that PR. And furthermore all of the other PR's that are currently under review are not in the
unstablethat the range sync PR was based on.The "hacked together" branch 0 is what is currently being run by ethpandaops. This is also the branch that hotfixes are getting merged into so that we can keep up with bugs and spec updates. "Proper" PR's into
epbs-devnet-0branch is unrealistic at the pace of devnet development and also unnecessary. Just hack it together and get it to run.This is where the issue lies. We have moving targets when it comes to coordination across the team.
The solution of "just read the open PR's" is an inadequate coordination mechanism.
Those are all moving targets and a small amount of automation fixes this situation.
How to potentially solve this situation
Can make a cron job that on a daily basis takes each
epbs-feature-*branch and squashes it into a single commit onepbs-post-merge-state. So on a daily basis theepbs-post-merge-statewill reflect the currentunstableand a set of commits the PRs currently under review.epbs-post-merge-statebecomes the "canonical"unstablethat epbs (or whatever fork we are working on). Then the same cron job will refactorepbs-devnet-0-remainderbranch so it matches the functionality ofepbs-devnet-0.epbs-devnet-0-remainderwill be the branch that we can run on our local infrastructure to sanity check that all the code we are merging is actually good.This resolves two issues.
unstableunstableContribution Process
I would like to build out "range sync" to get it ready for PR. That functionality is currently part of the
devnet-0amalgamated branch. The process I would follow is something like this:epbs-post-merge-stateepbs-devnet-0-remainderas a basis to extract the functionality I want to work onepbs-devnet-0-remainderand save it asepbs-devnet-0-remainder-range-sync-removedepbs-range-syncbranch to get it to a point where I'm ready to put it on a feature group to test things outdevnet-0fixes incorporated intoepbs-devnet-0-remainder-range-sync-removedepbs-devnet-0-remainder-range-sync-removedon myepbs-range-syncbranch and fix conflictsepbs-devnet-0-remainder-range-sync-removedto ano-groupserver to sanity check that my branch actually worksBeta Was this translation helpful? Give feedback.
All reactions