wifi-densepose/vendor/midstream/docs/CRATES_IO_NAMING_CONFLICT.md

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

[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