# Fixture 6 (noise_floor) — see development/CAMPAIGN_CLUSTERING.md §2. # # Composite of all five prior fixtures plus N additional Delivery-only # noise scanners. Tests that the clusterer holds every campaign # together AND keeps every noise observation as its own singleton # in the presence of cross-fixture interference. # # This is a CONTROL fixture: if any of the five constituent fixtures # regresses inside the combined corpus but passes individually, the # regression is in cross-corpus interaction (signal collisions, # clusterer ambiguity, factory ID re-use, …). Catches a class of bugs # that single-corpus fixtures cannot. # # Composition is expressed by listing the constituent fixtures here; # the test file's loader expands this into a full `corpus.campaigns` # spec at load time so the factory itself stays unaware. This format # is fixture-6-specific — no other fixture uses ``include_fixtures``. # # Pass condition: ``composite_signals_clusterer`` (fingerprint OR C2 # union-find — see fixture_harness.py) resolves every campaign and # leaves every noise scanner singleton. The bounds in # ``noise_floor.expected.yaml`` are global across the merged corpus. # # No standalone adversarial test for fixture 6 — each constituent # fixture already ships its own. What this fixture catches is # CROSS-fixture interference, which is a different failure mode from # the in-fixture adversarial cases. include_fixtures: - shared_wordlist.yaml - vpn_hopping.yaml - lone_wolf.yaml - paused_campaign.yaml - multi_operator.yaml extra_noise_scanners: 10