Part of the org-wide repo refactor tracked in rainlanguage/rainix#296.
What
Split this repo into a library half (stays here, autopublishes to Soldeer on merge via rainix-autopublish) and a deploy half (new rain.math.float.deploy repo, releases only on a manual sol-v* tag via rainix-tag-release). Every repo must end up strictly one or the other, never both.
Why this repo
Carries both halves: 3 deploy artifacts, 1 concrete contract.
Its release lane is wedged: [package].version is 0.1.7 and the published rain-math-float revision is also 0.1.7, so rainix-autopublish's next-version invariant rejects every run.
Method
Follow the precedent set by rainlanguage/rain.factory#46, which verified the cut was clean before moving anything:
- Confirm the cut is one-way — interfaces import nothing concrete, concrete imports the interfaces, the deploy-pin lib is isolated. A clean cut is what makes the rest mechanical.
- Create the
.deploy repo with the concrete contracts, the deploy-pin lib, the frozen src/generated/<tag>/ snapshots, script/Deploy.sol and script/BuildPointers.sol, plus rainix-tag-release CI. It depends on this repo's Soldeer package.
- Release the
.deploy repo so its pins publish. Requires a human: the on-chain deploy is a manual dispatch, and the tag is cut by hand.
- Slim this repo to the library half.
- Migrate any consumer importing the deploy pins.
Steps 1, 2 and 4 are authorable now. Soldeer revisions are immutable and this org carries the version inside the import path, so existing consumers stay pinned to working revisions throughout and only move when someone deliberately bumps — at which point a mistake is a compile error, never a silent resolution.
Done when
Part of the org-wide repo refactor tracked in rainlanguage/rainix#296.
What
Split this repo into a library half (stays here, autopublishes to Soldeer on merge via
rainix-autopublish) and a deploy half (newrain.math.float.deployrepo, releases only on a manualsol-v*tag viarainix-tag-release). Every repo must end up strictly one or the other, never both.Why this repo
Carries both halves: 3 deploy artifacts, 1 concrete contract.
Its release lane is wedged:
[package].versionis 0.1.7 and the publishedrain-math-floatrevision is also 0.1.7, sorainix-autopublish's next-version invariant rejects every run.Method
Follow the precedent set by rainlanguage/rain.factory#46, which verified the cut was clean before moving anything:
.deployrepo with the concrete contracts, the deploy-pin lib, the frozensrc/generated/<tag>/snapshots,script/Deploy.solandscript/BuildPointers.sol, plusrainix-tag-releaseCI. It depends on this repo's Soldeer package..deployrepo so its pins publish. Requires a human: the on-chain deploy is a manual dispatch, and the tag is cut by hand.Steps 1, 2 and 4 are authorable now. Soldeer revisions are immutable and this org carries the version inside the import path, so existing consumers stay pinned to working revisions throughout and only move when someone deliberately bumps — at which point a mistake is a compile error, never a silent resolution.
Done when
.deployrepo created with the deploy half.deployrepo released, pins published