Skip to content

Absorb raindex-interface back into raindex (rainix#296) #68

Description

@thedavidmeister

Part of the org-wide repo refactor tracked in rainlanguage/rainix#296 — phase 2, interface absorption.

What

Fold this interface repo back into raindex, 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.

raindex's own dependency on this package disappears outright on absorption. Only one external consumer takes this interface without raindex itself.

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:

  • raindex.governance

Ordering — hard prerequisite, not a preference

Do not start this until raindex 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

  • raindex has completed phase 1 and its lane publishes cleanly
  • Interfaces moved into raindex, imports rewritten
  • Interface-only consumers migrated to the raindex package
  • raindex publishes a revision containing the interfaces
  • This repo archived

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