Open
Conversation
Signed-off-by: Tomás Migone <tomas@edgeandnode.com>
Signed-off-by: Tomás Migone <tomas@edgeandnode.com>
Signed-off-by: Tomás Migone <tomas@edgeandnode.com>
Signed-off-by: Tomás Migone <tomas@edgeandnode.com>
…tagging Replace long-lived deployed/testnet and deployed/mainnet branches with short-lived deployment/YYYY-MM-DD branches branched fresh from main per cycle. Each cycle deploys testnet then mainnet from the same branch and merges back to main when it closes; tags (deploy/<env>/YYYY-MM-DD/<name>) are the permanent record. - Add packages/deployment/scripts/tag-deployment.sh: scripted tag creation with annotated body (deployer, network, commit, per-address-book changes). Signed by default, preview and confirmation prompted, --base defaults to latest deploy/<env>/* tag, --yes for non-interactive. - Drop .github/workflows/deployment-tag.yml and backport-artifacts.yml; subsumed by scripted tagging and the cycle merge-back PR respectively. - Restate audit integrity as a byte-equality property; sketch an audit- integrity CI check as future work in Appendix A, with prerequisite to reorganize non-production Solidity into clearly-scoped directories.
Revise the deployment strategy to match the realistic pattern: a release is worked on over weeks with multiple testnet iterations, audit feedback, and rebases onto an advancing main — not a one-shot "cut, deploy, merge-back" cycle. Key shifts in the model: - Branches named by release (deployment/YYYY-MM-DD/<release-name>), not just by date. The date is the branch-start date; the release name disambiguates sibling efforts. - Testnet is the iteration environment; a branch may accumulate several testnet tags as audit feedback is worked in. The audit gate is at main entry (directly or via merge-back); deployment branches may carry interim, not-yet-audited contract edits during iteration. - Mainnet is the audit-complete commitment point. Mainnet deploys only happen from a deployment branch rebased onto audited main. - Only one active deployment branch at a time; abandoning and replacing with a fresh branch is normal across a long iteration. - Mermaid flowchart in the Overview shows the two-decision loop: "ready for mainnet?" (no: iterate) and "fast-forwards onto main?" (no: rebase or fresh branch). - Cut the redundant "Cycle merge-back" subsection; consolidated on "release" terminology throughout.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1322 +/- ##
========================================
Coverage 88.55% 88.55%
========================================
Files 75 75
Lines 4615 4615
Branches 981 823 -158
========================================
Hits 4087 4087
Misses 507 507
Partials 21 21
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Per-environment deployment branches replace the per-release cascade: each environment (testnet, mainnet, scratch) gets its own short-lived branch cut from main and FF-merged back. Testnet is now treated as staging — iteration happens on local network or scratch deployments, not on testnet. Rename feature/* to feat/*. Tagging required for testnet/mainnet only; optional elsewhere.
tmigone
approved these changes
Apr 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Building on and responding to: #1320
I think audit commit hashes complicate this and need more consideration. I propose we seek FF merges where practical. The applies both for audits into main (which we do not always do but would improve tracking) and from main onto a deployment branch. When FF does not apply, we should avoid merges that are not automatic clean merges.
This version focuses on seeking clean FF merges to and from main, so modifies the proposal by replacing long-lived
testnetandmainnetrelease branches with a cycle of branching for deployment from main, deploy to testnet and tag, if ready deploy to mainnet and tag, merge back to main and delete branch.It maintains having clear release branch naming and workflow, and tagging deployments. It provides a script to automate the deploy tags.