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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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