80 lines
3.6 KiB
Plaintext
80 lines
3.6 KiB
Plaintext
Task 11 — PercentileTracker (news-store) + ImportanceScorer (news-server)
|
|
Workspace: /home/connor/docs/projects/news
|
|
Date: 2026-09-01
|
|
|
|
Files created/modified:
|
|
- crates/news-store/src/percentile.rs (new)
|
|
- crates/news-store/src/lib.rs (mod percentile; re-export PercentileTracker, MetricKind)
|
|
- crates/news-server/src/scoring.rs (ImportanceScorer + test)
|
|
- crates/news-server/src/lib.rs (re-export ImportanceScorer)
|
|
|
|
Note: StoreError::InsufficientData already existed in error.rs from an earlier todo,
|
|
so no change to error.rs was required.
|
|
|
|
================================================================================
|
|
$ cargo test -p news-store
|
|
================================================================================
|
|
running 17 tests
|
|
test tests::init_db_runs_migrations ... ok
|
|
test percentile::tests::rows_older_than_window_are_excluded ... ok
|
|
test sources::tests::seed_default_sources_is_idempotent ... ok
|
|
test percentile::tests::importance_and_relevance_are_independent_distributions ... ok
|
|
test items::tests::insert_if_new_dedupes_on_source_and_link ... ok
|
|
test sources::tests::list_enabled_returns_the_three_seeded_sources ... ok
|
|
test sources::tests::set_enabled_false_excludes_source_from_list_enabled ... ok
|
|
test percentile::tests::percentile_on_empty_window_returns_insufficient_data ... ok
|
|
test tests::raw_items_insert_is_reflected_in_fts_index ... ok
|
|
test clusters::tests::item_outside_45_minute_window_starts_new_cluster ... ok
|
|
test tests::migrating_an_already_migrated_pool_is_a_no_op ... ok
|
|
test items::tests::search_fts_no_match_returns_empty_vec ... ok
|
|
test items::tests::search_fts_returns_matching_items_ranked ... ok
|
|
test clusters::tests::same_source_repeats_create_one_cluster_with_both_members ... ok
|
|
test tests::raw_items_delete_removes_row_from_fts_index ... ok
|
|
test clusters::tests::source_count_is_distinct_sources_not_item_count ... ok
|
|
test percentile::tests::relevance_p90_of_1_to_100_is_exactly_90 ... ok
|
|
|
|
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
|
|
|
|
Doc-tests news_store
|
|
|
|
running 0 tests
|
|
|
|
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
|
|
|
|
================================================================================
|
|
$ cargo test -p news-server
|
|
================================================================================
|
|
running 4 tests
|
|
test scoring::trained_model_persists_and_reloads_with_same_total_samples ... ok
|
|
test scoring::matching_item_scores_higher_than_non_matching ... ok
|
|
test scoring::importance_scorer_matches_direct_formula ... ok
|
|
test scoring::blocklist_veto_returns_neg_infinity ... ok
|
|
|
|
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
|
|
|
|
================================================================================
|
|
$ cargo fmt --all --check
|
|
================================================================================
|
|
(no output)
|
|
|
|
exit status: 0
|
|
|
|
================================================================================
|
|
$ cargo clippy --workspace --all-targets -- -D warnings
|
|
================================================================================
|
|
Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.02s
|
|
|
|
exit status: 0
|
|
|
|
================================================================================
|
|
$ cargo test --workspace
|
|
================================================================================
|
|
Workspace totals after task 11:
|
|
- news-core: 18 passed
|
|
- news-ingest: 4 passed
|
|
- news-server: 4 passed
|
|
- news-store: 17 passed
|
|
- news-cli, news-web: 0 tests each
|
|
|
|
All commands green.
|