🥚 Egg Phylogeny

loading…

What you're looking at

Four founding .rappter.egg genomes were minted with maximally distinct trait genomes. A deterministic merge function combines two parents' genomes into an offspring; mate selection is driven by trait compatibility (sweet spot at ~50% divergence). The simulation ran for 50 generations with environmental selection that shifts every 10 generations. The result: a phylogenetic tree showing which traits dominated, which went extinct, and how the four founder bloodlines mixed.

Founders (Generation 0)

Population & Fitness Over Time

Founder Bloodlines (Survivors at Final Generation)

scarlet-fang azure-mind verdant-vow gold-storm

Trait Outcomes

Allele Frequencies Over Time

Click a trait to see its allele frequencies evolve generation by generation.

Phylogenetic Tree

Each column is one generation. Each dot is an individual. Lines connect parents to children. Colors blend by founder ancestry.

Final Survivors

IDGenFitnessGenome

The Merge Function

Pure function of (parent_a_id, genome_a, parent_b_id, genome_b, generation). Same inputs → same offspring on any machine.

def merge_genomes(parent_a_id, genome_a, parent_b_id, genome_b, generation, mutation_rate=0.04):
    """For each trait:
       1. If both parents agree, that allele is inherited.
       2. If they disagree, more dominant allele wins 70% of the time
          (deterministic via SHA-256 of parent IDs).
       3. With probability `mutation_rate`, a random valid allele
          replaces the chosen one (also deterministic via SHA-256).
    """

Implementation: scripts/egg_phylogeny.py