Skip to content

Commit 72af785

Browse files
sgbettclaude
andcommitted
docs: add companion gem release protocol to CLAUDE.md
Codifies the rule that downstream gems (bsv-wallet-postgres, etc.) must be updated in the same release cycle when upstream interface methods change. Prompted by #351. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent fc994e3 commit 72af785

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

CLAUDE.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,22 @@ Custom implementations: RFC 6979 deterministic signing, Schnorr signatures, Base
8989
- All files use `# frozen_string_literal: true`
9090
- RuboCop targets Ruby 2.7; single-quoted strings preferred
9191

92+
## Releasing Companion Gems
93+
94+
The repo ships multiple gems with upstream/downstream dependencies:
95+
96+
```
97+
bsv-sdk → bsv-wallet → bsv-wallet-postgres
98+
```
99+
100+
When releasing `bsv-wallet` (or any gem that defines abstract interface methods):
101+
102+
1. **Check downstream gems** — if new methods were added to `StorageAdapter` (or any abstract base), every concrete adapter (`PostgresStore`, etc.) must implement them before release.
103+
2. **Raise dependency floors** — downstream gemspecs must pin `>= new_version` so Bundler cannot resolve a combination that compiles at runtime.
104+
3. **Release together** — downstream adapter gems should be updated and released in the same cycle as the interface gem, not left for a follow-up.
105+
106+
Failure to do this causes silent Bundler resolution success followed by `NoMethodError` at runtime (see #351).
107+
92108
## AI Software Architect Framework
93109

94110
This project uses the AI Software Architect framework for architectural decision tracking and reviews.

0 commit comments

Comments
 (0)