Skip to content

Split rain.math.float into a library half and a new rain.math.float.deploy #262

Description

@thedavidmeister

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.yamlrainix-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
  • src/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.sol
  • test/src/lib/deploy/* (LibDecimalFloatDeploy, checkLogTablesDeployed, DeployProd, DeployTaggedConstants) and test/script/CopyArtifacts.t.sol
  • Deploy lifecycle: manual-sol-artifacts.yaml, tag-triggered package-release.yamlrainix-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.
  • Track the pending push-free tag-release change (rainix-tag-release: make deploy releases push-free (works under branch protection) rainix#338) — the new deploy repo should adopt whatever release flow #338 lands (PR-the-snapshot → tag → publish), not re-introduce a push-back.

Consumer impact

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).

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