mirror of
https://github.com/ruvnet/RuView
synced 2026-08-07 20:01:43 +00:00
feat: vendor midstream and sublinear-time-solver libraries
Add ruvnet/midstream (AIMDS real-time inference) and ruvnet/sublinear-time-solver (sublinear optimization algorithms) as vendored dependencies under vendor/. Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
+306
@@ -0,0 +1,306 @@
|
||||
# crates.io Naming Conflict - Midstream Crates
|
||||
|
||||
**Date**: 2025-10-27
|
||||
**Status**: ⚠️ NAMING CONFLICT
|
||||
|
||||
---
|
||||
|
||||
## 🚨 Issue
|
||||
|
||||
The Midstream crate names are **already taken** on crates.io by other packages with different ownership:
|
||||
|
||||
| Our Crate | Existing on crates.io | Version | Owner |
|
||||
|-----------|----------------------|---------|-------|
|
||||
| temporal-compare | ✅ Exists | 0.5.0 | Different owner |
|
||||
| nanosecond-scheduler | ✅ Exists | 0.1.1 | Different owner |
|
||||
| strange-loop | ✅ Exists | 0.3.0 | Different owner |
|
||||
| temporal-attractor-studio | ❓ Unknown | - | - |
|
||||
| temporal-neural-solver | ❓ Unknown | - | - |
|
||||
| quic-multistream | ❓ Unknown | - | - |
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Discovery
|
||||
|
||||
Attempted publication resulted in:
|
||||
```bash
|
||||
error: crate temporal-compare@0.1.0 already exists on crates.io index
|
||||
```
|
||||
|
||||
This means:
|
||||
1. Someone else owns these crate names
|
||||
2. We cannot publish under these names
|
||||
3. We need alternative names or approach
|
||||
|
||||
---
|
||||
|
||||
## 📊 Impact on AIMDS
|
||||
|
||||
### Current Status
|
||||
|
||||
**✅ aimds-core v0.1.0**: Published successfully to crates.io
|
||||
**❌ aimds-detection**: Cannot publish (depends on `temporal-compare`)
|
||||
**❌ aimds-analysis**: Cannot publish (depends on multiple Midstream crates)
|
||||
**❌ aimds-response**: Cannot publish (depends on `strange-loop`)
|
||||
|
||||
### Dependency Tree
|
||||
|
||||
```
|
||||
aimds-core (✅ published)
|
||||
└─ No Midstream deps
|
||||
|
||||
aimds-detection (❌ blocked)
|
||||
├─ aimds-core (✅ available)
|
||||
├─ temporal-compare (❌ name conflict)
|
||||
└─ nanosecond-scheduler (❌ name conflict)
|
||||
|
||||
aimds-analysis (❌ blocked)
|
||||
├─ aimds-core (✅ available)
|
||||
├─ temporal-attractor-studio (❓ unknown)
|
||||
├─ temporal-neural-solver (❓ unknown)
|
||||
└─ strange-loop (❌ name conflict)
|
||||
|
||||
aimds-response (❌ blocked)
|
||||
├─ aimds-core (✅ available)
|
||||
├─ aimds-detection (❌ blocked)
|
||||
├─ aimds-analysis (❌ blocked)
|
||||
└─ strange-loop (❌ name conflict)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Solution Options
|
||||
|
||||
### Option A: Rename Midstream Crates (Recommended)
|
||||
|
||||
**Rename with unique prefix**:
|
||||
- `temporal-compare` → `midstream-temporal-compare` or `ruv-temporal-compare`
|
||||
- `nanosecond-scheduler` → `midstream-scheduler` or `ruv-scheduler`
|
||||
- `strange-loop` → `midstream-strange-loop` or `ruv-strange-loop`
|
||||
- `temporal-attractor-studio` → `midstream-attractor-studio`
|
||||
- `temporal-neural-solver` → `midstream-neural-solver`
|
||||
- `quic-multistream` → `midstream-quic` (might be available)
|
||||
|
||||
**Pros**:
|
||||
- ✅ Can publish all crates independently
|
||||
- ✅ Midstream available as standalone libraries
|
||||
- ✅ Clear ownership and branding
|
||||
- ✅ AIMDS can use published versions
|
||||
|
||||
**Cons**:
|
||||
- ❌ Requires refactoring all imports
|
||||
- ❌ Cargo.toml updates across workspace
|
||||
- ❌ Documentation updates
|
||||
- ❌ Time investment (~2-4 hours)
|
||||
|
||||
**Estimated Time**: 2-4 hours (rename, update, test, publish)
|
||||
|
||||
---
|
||||
|
||||
### Option B: Keep Path Dependencies (Current Approach)
|
||||
|
||||
**Use workspace path dependencies**:
|
||||
```toml
|
||||
[dependencies]
|
||||
temporal-compare = { path = "../../../crates/temporal-compare" }
|
||||
nanosecond-scheduler = { path = "../../../crates/nanosecond-scheduler" }
|
||||
```
|
||||
|
||||
**Pros**:
|
||||
- ✅ No naming conflicts
|
||||
- ✅ Fast development iteration
|
||||
- ✅ Guaranteed compatibility
|
||||
- ✅ Already working locally
|
||||
|
||||
**Cons**:
|
||||
- ❌ Users must clone entire Midstream repo
|
||||
- ❌ Cannot publish remaining AIMDS crates to crates.io
|
||||
- ❌ Harder for users to install
|
||||
- ❌ Not standalone packages
|
||||
|
||||
**Installation for Users**:
|
||||
```bash
|
||||
git clone https://github.com/ruvnet/midstream.git
|
||||
cd midstream/AIMDS
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Option C: Vendor Dependencies (Not Recommended)
|
||||
|
||||
**Copy Midstream code into AIMDS crates**:
|
||||
- Inline all temporal-compare code
|
||||
- Inline all nanosecond-scheduler code
|
||||
- Remove external dependencies
|
||||
|
||||
**Pros**:
|
||||
- ✅ Can publish to crates.io
|
||||
- ✅ Standalone AIMDS crates
|
||||
|
||||
**Cons**:
|
||||
- ❌ Massive code duplication
|
||||
- ❌ Loses upstream updates
|
||||
- ❌ Harder to maintain
|
||||
- ❌ Larger crate sizes
|
||||
|
||||
**Not Recommended** - defeats purpose of modular design
|
||||
|
||||
---
|
||||
|
||||
### Option D: Use Different Crates (Not Recommended)
|
||||
|
||||
**Replace Midstream deps with public alternatives**:
|
||||
- Replace `temporal-compare` with existing crate from crates.io (v0.5.0)
|
||||
- Replace `nanosecond-scheduler` with existing crate (v0.1.1)
|
||||
- Find alternatives for other deps
|
||||
|
||||
**Pros**:
|
||||
- ✅ Can publish immediately
|
||||
- ✅ Uses established crates
|
||||
|
||||
**Cons**:
|
||||
- ❌ Different APIs and functionality
|
||||
- ❌ Breaks integration with Midstream
|
||||
- ❌ Loses validated performance
|
||||
- ❌ Requires major refactoring
|
||||
|
||||
**Not Recommended** - loses core functionality
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Recommended Path Forward
|
||||
|
||||
### Immediate (Current Session)
|
||||
|
||||
1. **✅ Keep aimds-core published** (already done)
|
||||
2. **✅ Document naming conflict** (this file)
|
||||
3. **✅ Update AIMDS README** with installation via git clone
|
||||
4. **✅ Test AIMDS locally** with path dependencies
|
||||
5. **✅ Commit and push** documentation
|
||||
|
||||
### Short Term (Next 2-4 hours)
|
||||
|
||||
**Option A - Rename Midstream Crates**:
|
||||
|
||||
1. **Rename all Midstream crates** with `midstream-` prefix:
|
||||
```bash
|
||||
# In each Cargo.toml
|
||||
name = "midstream-temporal-compare" # was temporal-compare
|
||||
name = "midstream-scheduler" # was nanosecond-scheduler
|
||||
name = "midstream-strange-loop" # was strange-loop
|
||||
name = "midstream-attractor" # was temporal-attractor-studio
|
||||
name = "midstream-neural-solver" # was temporal-neural-solver
|
||||
name = "midstream-quic" # was quic-multistream
|
||||
```
|
||||
|
||||
2. **Update all imports** across workspace:
|
||||
```rust
|
||||
// BEFORE:
|
||||
use temporal_compare::TemporalComparator;
|
||||
|
||||
// AFTER:
|
||||
use midstream_temporal_compare::TemporalComparator;
|
||||
```
|
||||
|
||||
3. **Update AIMDS dependencies**:
|
||||
```toml
|
||||
[dependencies]
|
||||
midstream-temporal-compare = "0.1"
|
||||
midstream-scheduler = "0.1"
|
||||
midstream-strange-loop = "0.1"
|
||||
```
|
||||
|
||||
4. **Test and publish**:
|
||||
```bash
|
||||
cargo test --workspace
|
||||
cargo publish (each crate)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 Current Workaround
|
||||
|
||||
**For now, AIMDS works perfectly as a workspace**:
|
||||
|
||||
```toml
|
||||
# AIMDS/Cargo.toml
|
||||
[workspace]
|
||||
members = [
|
||||
"crates/aimds-core",
|
||||
"crates/aimds-detection",
|
||||
"crates/aimds-analysis",
|
||||
"crates/aimds-response",
|
||||
]
|
||||
|
||||
[workspace.dependencies]
|
||||
# Local path dependencies work fine
|
||||
temporal-compare = { path = "../crates/temporal-compare" }
|
||||
nanosecond-scheduler = { path = "../crates/nanosecond-scheduler" }
|
||||
# ... etc
|
||||
```
|
||||
|
||||
**Users install via**:
|
||||
```bash
|
||||
git clone https://github.com/ruvnet/midstream.git
|
||||
cd midstream/AIMDS
|
||||
cargo build --release
|
||||
cargo test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Decision Required
|
||||
|
||||
**Question for project owner**: Should we:
|
||||
|
||||
A) **Rename Midstream crates** (2-4 hours investment, full crates.io publication)
|
||||
B) **Keep path dependencies** (works now, requires git clone for users)
|
||||
C) **Hybrid approach** (publish only AIMDS-specific code, keep Midstream as git submodule)
|
||||
|
||||
---
|
||||
|
||||
## 📊 Comparison Matrix
|
||||
|
||||
| Criteria | Option A (Rename) | Option B (Path Deps) | Option C (Vendor) |
|
||||
|----------|------------------|----------------------|-------------------|
|
||||
| **crates.io Publication** | ✅ Full | ⚠️ Partial | ✅ Full |
|
||||
| **User Installation** | ✅ Easy | ⚠️ Moderate | ✅ Easy |
|
||||
| **Maintainability** | ✅ Good | ✅ Good | ❌ Poor |
|
||||
| **Development Speed** | ⚠️ Slow | ✅ Fast | ❌ Very Slow |
|
||||
| **Code Duplication** | ✅ None | ✅ None | ❌ High |
|
||||
| **Time Investment** | ⚠️ 2-4 hours | ✅ 0 hours | ❌ 8+ hours |
|
||||
| **Midstream Updates** | ✅ Easy | ✅ Easy | ❌ Manual |
|
||||
| **Standalone Use** | ✅ Yes | ❌ No | ✅ Yes |
|
||||
|
||||
**Recommendation**: **Option A (Rename)** - One-time investment for long-term benefits
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Related Documentation
|
||||
|
||||
- **aimds-core on crates.io**: https://crates.io/crates/aimds-core
|
||||
- **Publication Status**: docs/AIMDS_PUBLICATION_STATUS.md
|
||||
- **AIMDS README**: /workspaces/midstream/AIMDS/README.md
|
||||
- **Midstream Platform**: https://github.com/ruvnet/midstream
|
||||
|
||||
---
|
||||
|
||||
## 📅 Timeline
|
||||
|
||||
**If choosing Option A (Rename)**:
|
||||
|
||||
- Hour 1: Rename Cargo.toml files, update package names
|
||||
- Hour 2: Update all imports across codebase (find/replace)
|
||||
- Hour 3: Test compilation, fix remaining issues
|
||||
- Hour 4: Publish 6 Midstream crates, then 3 AIMDS crates
|
||||
|
||||
**Total**: 4 hours to complete publication
|
||||
|
||||
---
|
||||
|
||||
**Status**: Awaiting decision on path forward.
|
||||
|
||||
**Current State**: aimds-core published ✅, remaining crates work via path dependencies ✅
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
Reference in New Issue
Block a user