Skip to content

Split deploy half out of rain.math.float (rainix#296) #257

Description

@thedavidmeister

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:

  1. 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.
  2. 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.
  3. 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.
  4. Slim this repo to the library half.
  5. 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

  • Cut verified one-way
  • .deploy repo created with the deploy half
  • .deploy repo released, pins published
  • This repo slimmed to the library half
  • Deploy-pin consumers migrated
  • This repo's release lane publishes cleanly

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions