InternalADRs
ADR-0019: Strict Dependency Graph Between Packages
Enforce a strict package dependency graph to prevent architectural erosion.
Status
Accepted
Context
Even with multiple packages, accidental imports can break layering and portability.
Decision
We enforce the following dependency graph:
@rippledb/core- depends on nothing (or only tiny pure deps)
@rippledb/clientand@rippledb/server- depend on
@rippledb/core
- depend on
@rippledb/store-*- depend on
@rippledb/core(and optionally@rippledb/clientinterfaces)
- depend on
@rippledb/db-*- depend on
@rippledb/core(and optionally@rippledb/serverinterfaces)
- depend on
@rippledb/bind-*- depend on
@rippledb/core(for types likeDbEvent) and on their UI library - must not be required by core/client/server
- depend on
Alternatives Considered
- Free-form dependency structure
- Everything depends on everything
Consequences
- Prevents architectural erosion
- Enables use in many environments
- Requires linting or workspace constraints (recommended)