Files
ruvnet--RuView/vendor/midstream/docs/CRATES_IO_NAMING_CONFLICT.md
T
rUv 407b46b206 feat: vendor midstream and sublinear-time-solver libraries (#109)
Add ruvnet/midstream (AIMDS real-time inference) and
ruvnet/sublinear-time-solver (sublinear optimization algorithms)
as vendored dependencies under vendor/.
2026-03-02 23:34:05 -05:00

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:

  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

Rename with unique prefix:

  • temporal-comparemidstream-temporal-compare or ruv-temporal-compare
  • nanosecond-schedulermidstream-scheduler or ruv-scheduler
  • strange-loopmidstream-strange-loop or ruv-strange-loop
  • temporal-attractor-studiomidstream-attractor-studio
  • temporal-neural-solvermidstream-neural-solver
  • quic-multistreammidstream-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

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


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


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:

    # 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:

    // BEFORE:
    use temporal_compare::TemporalComparator;
    
    // AFTER:
    use midstream_temporal_compare::TemporalComparator;
    
  3. Update AIMDS dependencies:

    [dependencies]
    midstream-temporal-compare = "0.1"
    midstream-scheduler = "0.1"
    midstream-strange-loop = "0.1"
    
  4. 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



📅 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