Task 9 — title-similarity clustering in news-core + ClusterRepo in news-store Workspace: /home/connor/docs/projects/news Date: 2026-09-01 Files created/modified: - crates/news-core/src/clustering.rs (new) - crates/news-core/src/lib.rs (+ pub mod clustering;) - crates/news-store/src/clusters.rs (new) - crates/news-store/src/lib.rs (+ pub mod clusters; + re-export ClusterRepo) ================================================================================ $ cargo test -p news-core ================================================================================ ... running 18 tests test clustering::tests::identical_titles_have_similarity_one ... ok test clustering::tests::disjoint_titles_have_similarity_zero ... ok test clustering::tests::stopword_difference_keeps_syndication_titles_high ... ok test clustering::tests::should_cluster_respects_threshold ... ok ... test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests news_core test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ================================================================================ $ cargo test -p news-store ================================================================================ ... running 13 tests test clusters::tests::source_count_is_distinct_sources_not_item_count ... ok test clusters::tests::item_outside_45_minute_window_starts_new_cluster ... ok test clusters::tests::same_source_repeats_create_one_cluster_with_both_members ... ok ... test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s Doc-tests news_store test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ================================================================================ $ cargo fmt --all --check ================================================================================ (no output) exit status: 0 ================================================================================ $ cargo clippy --workspace --all-targets -- -D warnings ================================================================================ ... Checking news-core v0.1.0 Checking news-server v0.1.0 Checking news-ingest v0.1.0 Checking news-web v0.1.0 Checking news-store v0.1.0 Checking news-cli v0.1.0 Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.46s exit status: 0