Part of the org-wide repo refactor tracked in rainlanguage/rainix#296 — phase 2, interface absorption.
What
Fold this interface repo back into rain.verify, and retire it.
Why
With deployment moving out to .deploy repos and everything resolved through Soldeer rather than git submodules, a separate interface repo stops earning its keep. It costs every consumer that needs both an extra pin and an extra set of versioned import prefixes to keep in step, and it lengthens every republish cascade.
rain.verify's own dependency on this package disappears outright on absorption.
Note this repo separately carries the startup_failure misconfiguration described in rainix#296 — its Package Release run never creates a job because it declares no caller permissions: block while the repo default is read. That is worth fixing regardless of whether this absorption goes ahead, since it currently cannot publish at all.
Compile cost of a fatter package is close to zero: Foundry compiles only what src/test/script transitively import, so unreached source is never parsed. This was confirmed during the rain-math-binary 0.1.3 campaign on 2026-08-13, where rain.verify bumped green while its siblings failed precisely because it never reaches the offending file.
Cost, stated honestly
Under the versioned-import convention, absorption couples interface-only consumers to the implementation's release cadence — they re-pin and rewrite import prefixes on every implementation release, not just on interface changes. Interfaces are stable and implementations churn, so this is a real cost borne by:
- rain.vats
- rain.vats.flare
Ordering — hard prerequisite, not a preference
Do not start this until rain.verify has completed its deploy/library split and its release lane publishes cleanly.
Today this interface repo is protecting its consumers from the core repo's release problems. Folding an interface into a core whose lane is wedged propagates the failure instead of escaping it.
Done when
Part of the org-wide repo refactor tracked in rainlanguage/rainix#296 — phase 2, interface absorption.
What
Fold this interface repo back into rain.verify, and retire it.
Why
With deployment moving out to
.deployrepos and everything resolved through Soldeer rather than git submodules, a separate interface repo stops earning its keep. It costs every consumer that needs both an extra pin and an extra set of versioned import prefixes to keep in step, and it lengthens every republish cascade.rain.verify's own dependency on this package disappears outright on absorption.
Note this repo separately carries the
startup_failuremisconfiguration described in rainix#296 — its Package Release run never creates a job because it declares no callerpermissions:block while the repo default isread. That is worth fixing regardless of whether this absorption goes ahead, since it currently cannot publish at all.Compile cost of a fatter package is close to zero: Foundry compiles only what
src/test/scripttransitively import, so unreached source is never parsed. This was confirmed during therain-math-binary0.1.3 campaign on 2026-08-13, where rain.verify bumped green while its siblings failed precisely because it never reaches the offending file.Cost, stated honestly
Under the versioned-import convention, absorption couples interface-only consumers to the implementation's release cadence — they re-pin and rewrite import prefixes on every implementation release, not just on interface changes. Interfaces are stable and implementations churn, so this is a real cost borne by:
Ordering — hard prerequisite, not a preference
Do not start this until rain.verify has completed its deploy/library split and its release lane publishes cleanly.
Today this interface repo is protecting its consumers from the core repo's release problems. Folding an interface into a core whose lane is wedged propagates the failure instead of escaping it.
Done when