# Bounds for fixture 6 (noise_floor).
#
# Composite corpus: ~14 campaign-driven attackers (across 5 prior
# fixtures' actors / rotations) + 18 truth-singleton noise rows
# (8 inherited from lone_wolf + 10 added by this fixture).
#
# A correct algorithm groups every campaign correctly and leaves
# every singleton singleton — score 1.0 across every metric.
#
# Singleton recall is the load-bearing metric here: noise
# absorption is the failure mode that makes campaign attribution
# useless in practice (a clusterer that pulls noise into real
# campaigns dilutes attribution to nothing). The bound floor on
# singleton_recall is what would catch that regression.
#
# Bounds are loose at v1; tighten as the algorithm matures.
adjusted_rand_index:
  min: 1.0
homogeneity:
  min: 1.0
completeness:
  min: 1.0
singleton_recall:
  min: 1.0
