Repository navigation
Split deploy half out of rainlang (rainix#296) #552
Description
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 rainlang.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 at scale: 9 deploy artifacts and 7 concrete contracts — Rainlang, RainlangExpressionDeployer, RainlangInterpreter, RainlangParser, RainlangStore and RainlangReferenceExtern. That is seven deploy suites against rain.factory's one.
Its release lane is wedged: [package].version is 0.1.8 and the published rainlang revision is also 0.1.8, so rainix-autopublish's next-version invariant rejects every run. It has been failing since 2026-07-16.
This is currently blocking other work. Six repos could not complete the rain-math-binary 0.1.1 → 0.1.3 bump on 2026-08-13 because rainlang's published source imports rain-math-binary-0.1.1/src/lib/LibCtPop.sol and it cannot republish.
Two complications rain.factory did not have
src/generated/is flat, not the frozen per-tagsrc/generated/<tag>/layout. The split includes migrating to the snapshot model, not just relocating files.- Five Rust crates publish to crates.io in the same release lane —
rainlang_bindings,rainlang_dispair,rainlang_parser,rainlang-eval,rainlang_test_fixtures— as a lockstep set. Reconciling a crates.io cadence against a deploy tag is new ground.
Because of both, this should follow the smaller proofs (rain.extrospection, rain.tofu.erc20-decimals, rain.pyth, rain.flare, rain.metadata, rain.math.float) rather than lead them.
Method
Follow rainlanguage/rain.factory#46: verify the cut is one-way first, then create the .deploy repo with the concrete contracts, deploy-pin lib, frozen snapshots and deploy scripts under rainix-tag-release; release it; slim this repo; migrate consumers.
Soldeer revisions are immutable and this org carries the version inside the import path, so existing consumers stay pinned to working revisions throughout.
Done when
- Cut verified one-way
-
src/generated/migrated to the frozen per-tag layout - Rust crate release cadence reconciled with the deploy tag
-
rainlang.deploycreated with the deploy half -
rainlang.deployreleased, pins published - This repo slimmed to the library half
- Release lane publishes cleanly
- The blocked
rain-math-binary0.1.3 bumps can proceed
Activity
Slim to the library half: the deploy half moves to rainlang.deploy
Merge pull request #575 from rainlanguage/2026-09-06-base-rainlang-ab…
Merge pull request #576 from rainlanguage/2026-09-06-slim-to-library