Add ruvnet/midstream (AIMDS real-time inference) and ruvnet/sublinear-time-solver (sublinear optimization algorithms) as vendored dependencies under vendor/.
8.2 KiB
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:
error: crate temporal-compare@0.1.0 already exists on crates.io index
This means:
- Someone else owns these crate names
- We cannot publish under these names
- 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-compareorruv-temporal-comparenanosecond-scheduler→midstream-schedulerorruv-schedulerstrange-loop→midstream-strange-looporruv-strange-looptemporal-attractor-studio→midstream-attractor-studiotemporal-neural-solver→midstream-neural-solverquic-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:
[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:
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-comparewith existing crate from crates.io (v0.5.0) - Replace
nanosecond-schedulerwith 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)
- ✅ Keep aimds-core published (already done)
- ✅ Document naming conflict (this file)
- ✅ Update AIMDS README with installation via git clone
- ✅ Test AIMDS locally with path dependencies
- ✅ Commit and push documentation
Short Term (Next 2-4 hours)
Option A - Rename Midstream Crates:
-
Rename all Midstream crates with
midstream-prefix:# 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 -
Update all imports across workspace:
// BEFORE: use temporal_compare::TemporalComparator; // AFTER: use midstream_temporal_compare::TemporalComparator; -
Update AIMDS dependencies:
[dependencies] midstream-temporal-compare = "0.1" midstream-scheduler = "0.1" midstream-strange-loop = "0.1" -
Test and publish:
cargo test --workspace cargo publish (each crate)
📝 Current Workaround
For now, AIMDS works perfectly as a workspace:
# 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:
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