Skip to content

Modified deployment strategy proposal#1322

Open
RembrandtK wants to merge 8 commits intomainfrom
tmigone/deployment-proposal+rem
Open

Modified deployment strategy proposal#1322
RembrandtK wants to merge 8 commits intomainfrom
tmigone/deployment-proposal+rem

Conversation

@RembrandtK
Copy link
Copy Markdown
Contributor

@RembrandtK RembrandtK commented Apr 20, 2026

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 testnet and mainnet release 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.

tmigone and others added 7 commits April 20, 2026 11:19
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>
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
Copy link
Copy Markdown

codecov Bot commented Apr 20, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.55%. Comparing base (d348b77) to head (3fc6c64).
⚠️ Report is 2 commits behind head on main.

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            
Flag Coverage Δ
unittests 88.55% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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.
@RembrandtK RembrandtK marked this pull request as ready for review April 20, 2026 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants