talon-core 0.4.1

Core retrieval engine for Talon: hybrid search (BM25 + semantic + reranker), indexing, and graph-aware ranking over markdown corpora.
Documentation
use super::*;
use crate::embed::EmbedDiagnostics;

#[test]
fn embed_pass_stats_from_diagnostics_passthrough() {
    let stats: EmbedPassStats = EmbedDiagnostics {
        processed: 3,
        succeeded: 2,
        failed: 1,
        dimension_mismatch: false,
        diagnostics: vec!["a".into(), "b".into()],
    }
    .into();
    assert_eq!(stats.processed, 3);
    assert_eq!(stats.succeeded, 2);
    assert_eq!(stats.failed, 1);
    assert!(stats.remediation.is_none());
    assert_eq!(stats.diagnostics, vec!["a".to_string(), "b".to_string()]);
}

#[test]
fn dimension_mismatch_populates_remediation() {
    let stats: EmbedPassStats = EmbedDiagnostics {
        processed: 2,
        succeeded: 1,
        failed: 1,
        dimension_mismatch: true,
        diagnostics: vec!["dim mismatch".into()],
    }
    .into();
    assert!(stats.dimension_mismatch);
    let remediation = stats.remediation.as_deref().unwrap_or("");
    assert!(remediation.contains("--force"));
    assert!(remediation.contains("vec_chunks") || remediation.contains("dimensionality"));
}

#[test]
fn embed_pass_options_defaults_use_sidecar_model_ids() {
    let opts = EmbedPassOptions::defaults();
    assert_eq!(opts.chunk_embedding_model, "embed");
    assert_eq!(opts.document_embedding_model, "embed_chunked");
    assert!(!opts.force);
    assert!(opts.restrict_paths.is_empty());
}