from multi_swarm.genome.hypothesis import HypothesisAgentGenome, ModelTier def test_genome_creation_defaults(): g = HypothesisAgentGenome( system_prompt="Pensa come un fisico.", feature_access=["close", "volume"], temperature=0.9, top_p=0.95, model_tier=ModelTier.C, lookback_window=200, cognitive_style="physicist", ) assert g.id is not None assert g.parent_ids == [] assert g.generation == 0 def test_genome_serialization_roundtrip(): g = HypothesisAgentGenome( system_prompt="Pensa come un biologo.", feature_access=["close", "high", "low"], temperature=1.1, top_p=0.9, model_tier=ModelTier.C, lookback_window=300, cognitive_style="biologist", parent_ids=["abc"], generation=5, ) payload = g.to_dict() g2 = HypothesisAgentGenome.from_dict(payload) assert g2.system_prompt == g.system_prompt assert g2.feature_access == g.feature_access assert g2.temperature == g.temperature assert g2.parent_ids == g.parent_ids assert g2.generation == g.generation assert g2.id == g.id def test_genome_id_is_deterministic_on_content(): g1 = HypothesisAgentGenome( system_prompt="X", feature_access=["close"], temperature=0.5, top_p=0.9, model_tier=ModelTier.C, lookback_window=100, cognitive_style="x", ) g2 = HypothesisAgentGenome( system_prompt="X", feature_access=["close"], temperature=0.5, top_p=0.9, model_tier=ModelTier.C, lookback_window=100, cognitive_style="x", ) assert g1.id == g2.id