# Bounds for fixture 1 (shared_wordlist). # # Ground truth: two distinct campaigns, one actor each → 2 truth-labels # of size 1. The clusterer must keep them separate. A correct algorithm # scores 1.0 across every metric on this fixture. # # Homogeneity is the load-bearing metric here: a clusterer that merges # the two campaigns based on shared credentials will tank homogeneity # (one predicted cluster contains members of two true campaigns). # # Bounds are loose at v1; tighten as the algorithm matures. Loosening # any bound to make CI pass requires PR-comment justification (per # CAMPAIGN_CLUSTERING.md §2). adjusted_rand_index: min: 1.0 homogeneity: min: 1.0 completeness: min: 1.0 singleton_recall: min: 1.0