Skip to content

Commit 04fa7ab

Browse files
committed
docs: author MAINTENANCE.md with environment network definitions and development workflow (#1303)
**Motivation:** author MAINTENANCE.md with environment network definitions and development workflow **Modifications:** author MAINTENANCE.md **Result:** author MAINTENANCE.md
1 parent 4f27a36 commit 04fa7ab

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

MAINTENANCE.md

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Maintenance
2+
3+
This document outlines basic procedures for maintenance of PRs, and releases that maintainers of the repository should follow.
4+
5+
6+
## Enrivonment Network
7+
8+
Before getting into maintenance details, let's define environment network first.
9+
10+
| Environment | Environment Network | Definition and Practices |
11+
|-------------|---------------------|--------------------------|
12+
| mainnet | mainnet-ethereum | - mainnet production env on Ethereum<br>- only one single mainnet in foreseeable future<br>- external facing |
13+
| testnet | testnet-holesky<br>testnet-sepolia<br>testnet-hoodi | - testnet envs on Ethereum testnets like holesky or sepolia<br>- can be 1 or more testnet env networks for EigenLayer<br>- external facing, long lived for both internal and external developers to test on |
14+
| preprod | preprod-holesky<br>preprod-sepolia<br>preprod-hoodi | - preprod envs on Ethereum testnets like holesky or sepolia<br>- can be 1 or more preprod env networks for EigenLayer<br>- long lived for internal development and testing, before moving to testnets |
15+
16+
See blog [The Future of EigenLayer Testing: New & Improved Testnets & Tooling Coming Soon](https://www.blog.eigenlayer.xyz/the-future-of-eigenlayer-testing-new-and-improved-testnets-tooling-coming-soon/) for detailed motivation
17+
18+
19+
20+
## Development
21+
22+
### Code Review
23+
24+
Code reviewers take responsibility of making sure PRs are rigorously labeled, well formatted, well tested before merging them.
25+
26+
For first-time external contributors, a maintainer should review their PR carefully and then manually approve CI to run.
27+
28+
29+
### Branching Model
30+
31+
#### Development Branches
32+
33+
- `main (default)`:
34+
- The primary development and canonical branch where all new code are merged
35+
- It should remain stable enough for internal and external testing, ensuring continuous integration (CI) runs smoothly on every commit
36+
- Security audit will always happen on main by a given commit
37+
- `release-dev/xxx`:
38+
- For large features with many commits that will be breaking changes and we want to all-or-none in `main`, maintainer should create a `release-dev/xxx` branch to develop on
39+
- eg. release-dev/slashing-v1, release-dev/rewards-v2
40+
- These branches branch off from `main` for development, should be constantly rebased to `main` to be compatible with canonical branch, and will be merged back into `main` when the development is done and ready to deploy
41+
- release-dev branches should be merged into main for auditing, no auditing will be on release-dev branches
42+
43+
44+
### Merge PRs
45+
46+
We classify PRs into two types:
47+
48+
1. **Regular PRs** – Used for bug fixes, small changes, or incremental updates. Each PR is atomic itself.
49+
2. **Release-dev Merges** – Merging a release-dev branch into `main` after completing a major release. The release-dev branch and such a merge contains many regular PRs
50+
51+
We use different merge rules for each PR type.
52+
53+
- For regular PRs:
54+
- Always **rebase, squash, and merge**. Since multiple commits in a PR represent a single unit of work, merging them separately can be unnecessary or even break the code. Squashing ensures atomicity and keeps the commit history clean.
55+
- demonstration: PR -> squash -> `main` or `release-dev`
56+
57+
58+
- For release-dev merges:
59+
- Always **rebase and create a new commit to merge, never squash**
60+
- All commit history should be preserved - a release-dev branch contains multiple independent units of work, and squashing would create a massive, monolithic commit that erases history, making it difficult to track and understand individual changes.
61+
- The additional commit will act as a marker in `main` as end of a release-dev merge. With each release-dev merge having its own end marker, it will significantly simplify the cherry-picking process in release creation
62+
- demonstration: `release-dev` -> merge -> `main`
63+
64+
65+
66+
## Releases
67+
68+
69+
70+
## Release Manager
71+
72+

0 commit comments

Comments
 (0)