Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -394,8 +394,10 @@ expected addresses, expected code hashes, and dependency lists.
network before anything migrates onto it.
- **Deploy-repo lifecycle**: a manual `sol-v*` tag is the sole release trigger
(`rainix-tag-release`), because this repo carries deployed concretes whose
pins consumers rely on. `[package].version` is the LAST released version and
moves only in lockstep with its snapshots.
pins consumers rely on. `[package].version` is the version of the LAST Soldeer
publish, and it moves only in lockstep with the frozen `src/generated/<tag>/`
record that release writes. A version published before this lifecycle has no
such record.
- **Deploy, then verify, then tag** — in that order, and they are three separate
things. `script/Deploy.sol` broadcasts the suite `DEPLOYMENT_SUITE` names to
every network in `supportedNetworks()`, dispatched by hand through
Expand Down
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -307,10 +307,12 @@ Three separate steps, in this order. Nothing automatic ever broadcasts.

This is a deploy repo: it carries deployed concretes whose addresses and
codehashes consumers pin, so releases are **manual `sol-v*` tags**, not merges.
`[package].version` is the LAST released version, naming the current
`src/generated/<tag>/` snapshots, and only a release moves it. Every version
published under the previous merge-driven lifecycle stays published; consumers
pin exact versions and are unaffected.
`[package].version` is the version of the LAST Soldeer publish, and only a
release moves it. A release cut under this lifecycle also names the frozen
`src/generated/<tag>/` record `cutRelease()` wrote for it. Every version
published under the previous merge-driven lifecycle predates that record and has
none, so `src/generated/` holds no directory for it; those versions stay
published, and consumers pin exact versions and are unaffected.

## Install

Expand Down
8 changes: 5 additions & 3 deletions foundry.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
[package]
name = "rain-deploy"
# Deploy repo: this is the LAST released version, naming the current
# src/generated/<tag>/ snapshot, not a next-version slot. A normal PR does not
# bump it; only a `sol-v*` tag release moves it, in lockstep with the snapshot.
# Deploy repo: this is the version of the LAST Soldeer publish, not a
# next-version slot. A normal PR does not bump it; only a `sol-v*` tag release
# moves it, in lockstep with the frozen src/generated/<tag>/ record that release
# writes. A version published before this lifecycle has no such record, so
# src/generated/ holds no directory for it.
version = "0.1.5"

# SPDX-License-Identifier: LicenseRef-DCL-1.0
Expand Down
2 changes: 1 addition & 1 deletion src/lib/LibRainDeploySnapshot.sol
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ error EmptyRelease(string tag);
library LibRainDeploySnapshot {
/// The rolling snapshot's directory name. A sibling of the frozen tag
/// directories rather than a file beside them, so `src/generated/` reads as
/// `candidate/ 0_1_5/ 0_1_6/` and "which one is current" is answered by
/// `candidate/ 0_1_6/ 0_1_7/` and "which one is current" is answered by
/// looking.
string constant CANDIDATE = "candidate";

Expand Down
Loading