diff --git a/CLAUDE.md b/CLAUDE.md index e04e3be..a42216f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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//` + 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 diff --git a/README.md b/README.md index 88ccf44..cb05137 100644 --- a/README.md +++ b/README.md @@ -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//` 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//` 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 diff --git a/foundry.toml b/foundry.toml index d2ba1a6..108d31e 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,8 +1,10 @@ [package] name = "rain-deploy" -# Deploy repo: this is the LAST released version, naming the current -# src/generated// 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// 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 diff --git a/src/lib/LibRainDeploySnapshot.sol b/src/lib/LibRainDeploySnapshot.sol index c8c684f..706df93 100644 --- a/src/lib/LibRainDeploySnapshot.sol +++ b/src/lib/LibRainDeploySnapshot.sol @@ -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";