Task 10 — RelevanceScorer in news-server: FTS5 BM25 + persisted Naive Bayes + blocklist veto Workspace: /home/connor/docs/projects/news Date: 2026-09-01 Files created/modified: - crates/news-core/src/scoring/relevance.rs (+ Serialize, Deserialize on NaiveBayesModel) - crates/news-core/src/clustering.rs (pub fn tokenize; similarity unchanged) - crates/news-server/Cargo.toml (+ news-store, sqlx, serde_json deps; tokio + pretty_assertions dev-deps) - crates/news-server/src/error.rs (new) - crates/news-server/src/lib.rs (new) - crates/news-server/src/scoring.rs (new) - Cargo.toml (+ news-store workspace dependency) ================================================================================ $ cargo test -p news-server ================================================================================ running 3 tests test scoring::matching_item_scores_higher_than_non_matching ... ok test scoring::trained_model_persists_and_reloads_with_same_total_samples ... ok test scoring::blocklist_veto_returns_neg_infinity ... ok test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s Running unittests src/main.rs (target/debug/deps/news_server-cd986f0fa7a0cd55) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests news_server running 0 tests 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 ================================================================================ Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.79s exit status: 0 ================================================================================ $ cargo test --workspace ================================================================================ running 18 tests ... test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests news_core ... running 4 tests ... test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests news_ingest ... running 3 tests ... test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Doc-tests news_server ... running 13 tests ... 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 ================================================================================ Summary: all commands green. Workspace test count: 38 (news-core 18, news-store 13, news-ingest 4, news-server 3).