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-tag src/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
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 (newrainlang.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 at scale: 9 deploy artifacts and 7 concrete contracts —
Rainlang,RainlangExpressionDeployer,RainlangInterpreter,RainlangParser,RainlangStoreandRainlangReferenceExtern. That is seven deploy suites against rain.factory's one.Its release lane is wedged:
[package].versionis 0.1.8 and the publishedrainlangrevision is also 0.1.8, sorainix-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-binary0.1.1 → 0.1.3 bump on 2026-08-13 becauserainlang's published source importsrain-math-binary-0.1.1/src/lib/LibCtPop.soland 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.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
.deployrepo with the concrete contracts, deploy-pin lib, frozen snapshots and deploy scripts underrainix-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
src/generated/migrated to the frozen per-tag layoutrainlang.deploycreated with the deploy halfrainlang.deployreleased, pins publishedrain-math-binary0.1.3 bumps can proceed