You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Split rain.math.float into a library half and a new rain.math.float.deploy
rain.math.float is currently a hybrid: it runs the library lifecycle (package-release.yaml → rainix-autopublish, publishes rain-math-float on merge) yet carries the full deploy surface — deployed-contract addresses + codehashes, a frozen generated snapshot, deploy scripts, and deploy tests. That is exactly the mixing the library/deploy split convention prevents (same class as the raindex hybrid). Split it like rain.factory / rain.factory.deploy and rain.extrospection / rain.extrospection.deploy.
What stays in rain.math.float (library — rainix-autopublish, floats ^, no deploy surface)
src/lib/LibDecimalFloat.sol and the pure helpers: src/lib/format/, src/lib/parse/, src/lib/implementation/, src/lib/table/LibLogTable.sol
src/error/
any interface surface
Publishes rain-math-float. No concrete, no pins, no src/generated/, no deploy scripts, no deploy tests, no fs_permissions for src/generated.
What moves to the new rain.math.float.deploy (deploy — rainix-tag-release, exact-pin =0.8.25)
src/concrete/DecimalFloat.sol (the deployed concrete)
src/lib/deploy/LibDecimalFloatDeploy.sol — the pins: ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS (0xc51a1425…), LOG_TABLES_DATA_CONTRACT_HASH (0x2573004a…), ZOLTU_DEPLOYED_DECIMAL_FLOAT_ADDRESS (0x799632d2…), and the rest
test/src/lib/deploy/* (LibDecimalFloatDeploy, checkLogTablesDeployed, DeployProd, DeployTaggedConstants) and test/script/CopyArtifacts.t.sol
Deploy lifecycle: manual-sol-artifacts.yaml, tag-triggered package-release.yaml → rainix-tag-release with soldeer-package: rain-math-float-deploy, snapshot-generate-cmd = the pointers build. Depends on rain-math-float for the library surface. Publishes rain-math-float-deploy.
Anything importing LibDecimalFloatDeploy / the deployed addresses (e.g. rainlang's LibDecimalFloatDeploy.ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS) must repoint from rain-math-float to rain-math-float-deploy. An org-wide scan of rain-math-float importers, bucketed into library-only (unaffected) vs deploy-pin (must repoint), is part of the work.
Human / infra steps (agent flags, does not perform)
Creating the rainlanguage/rain.math.float.deploy repo, its CI secrets (PUBLISH_PRIVATE_KEY, SOLDEER_API_TOKEN, RPC fork secrets), and the on-chain deploy attestation are org-admin / human steps. The addresses already exist on-chain (deterministic Zoltu), so the deploy repo's first release attests existing pins rather than deploying fresh.
Precedent
rain.factory#46 (the original library/deploy split), rain.extrospection / rain.extrospection.deploy. Follow their repo shape, foundry.toml conventions, and CLAUDE.md structure (mind the 4096-byte agent-context cap).
Split rain.math.float into a library half and a new
rain.math.float.deployrain.math.float is currently a hybrid: it runs the library lifecycle (
package-release.yaml→rainix-autopublish, publishesrain-math-floaton merge) yet carries the full deploy surface — deployed-contract addresses + codehashes, a frozen generated snapshot, deploy scripts, and deploy tests. That is exactly the mixing the library/deploy split convention prevents (same class as the raindex hybrid). Split it like rain.factory / rain.factory.deploy and rain.extrospection / rain.extrospection.deploy.What stays in rain.math.float (library —
rainix-autopublish, floats^, no deploy surface)src/lib/LibDecimalFloat.soland the pure helpers:src/lib/format/,src/lib/parse/,src/lib/implementation/,src/lib/table/LibLogTable.solsrc/error/rain-math-float. No concrete, no pins, nosrc/generated/, no deploy scripts, no deploy tests, nofs_permissionsforsrc/generated.What moves to the new rain.math.float.deploy (deploy —
rainix-tag-release, exact-pin=0.8.25)src/concrete/DecimalFloat.sol(the deployed concrete)src/lib/deploy/LibDecimalFloatDeploy.sol— the pins:ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS(0xc51a1425…),LOG_TABLES_DATA_CONTRACT_HASH(0x2573004a…),ZOLTU_DEPLOYED_DECIMAL_FLOAT_ADDRESS(0x799632d2…), and the restsrc/generated/LogTables.pointers.sol(frozen deploy-pin snapshot)script/Deploy.sol,script/BuildPointers.sol,script/CopyArtifacts.sol,script/check-published-deploy-constants.sh,script/lib/LibEtchLogTables.sol,script/lib/LibCopyArtifacts.soltest/src/lib/deploy/*(LibDecimalFloatDeploy, checkLogTablesDeployed, DeployProd, DeployTaggedConstants) andtest/script/CopyArtifacts.t.solmanual-sol-artifacts.yaml, tag-triggeredpackage-release.yaml→rainix-tag-releasewithsoldeer-package: rain-math-float-deploy,snapshot-generate-cmd= the pointers build. Depends onrain-math-floatfor the library surface. Publishesrain-math-float-deploy.Consumer impact
Anything importing
LibDecimalFloatDeploy/ the deployed addresses (e.g. rainlang'sLibDecimalFloatDeploy.ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS) must repoint fromrain-math-floattorain-math-float-deploy. An org-wide scan ofrain-math-floatimporters, bucketed into library-only (unaffected) vs deploy-pin (must repoint), is part of the work.Human / infra steps (agent flags, does not perform)
Creating the
rainlanguage/rain.math.float.deployrepo, its CI secrets (PUBLISH_PRIVATE_KEY,SOLDEER_API_TOKEN, RPC fork secrets), and the on-chain deploy attestation are org-admin / human steps. The addresses already exist on-chain (deterministic Zoltu), so the deploy repo's first release attests existing pins rather than deploying fresh.Precedent
rain.factory#46 (the original library/deploy split), rain.extrospection / rain.extrospection.deploy. Follow their repo shape, foundry.toml conventions, and CLAUDE.md structure (mind the 4096-byte agent-context cap).