Skip to content

Add arcane-affinity as optional dependency in arcane-infra with model selection #74

@rebelmachina

Description

@rebelmachina

Epic: #64 (AffinityEngine)
Depends on: #70 (AffinityEngine core)

What

  1. Add arcane-affinity as an optional dependency in crates/arcane-infra/Cargo.toml under a feature flag:
arcane-affinity = { path = "../arcane-affinity", optional = true }

[features]
affinity-clustering = ["dep:arcane-affinity"]
  1. Add a model selection constructor to ClusterManager:
pub fn with_model(model_type: &str) -> Self {
    let model: Arc<dyn IClusteringModel> = match model_type {
        #[cfg(feature = "affinity-clustering")]
        "affinity" => Arc::new(arcane_affinity::AffinityEngine::default()),
        _ => Arc::new(RulesEngine::new()),
    };
    Self::new(model, Arc::new(LocalPool::default()), SpatialIndex::new())
}

Acceptance criteria

  • cargo build --workspace passes (default features, no affinity)
  • cargo build --workspace --features arcane-infra/affinity-clustering passes
  • ClusterManager::with_model("affinity") creates an AffinityEngine instance
  • ClusterManager::with_model("rules") creates a RulesEngine instance (default)

Spec

See arcane-engine repo: in_08_00_integration_report.md §2.6

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions