This document discusses using genetic programming and Clojure.spec to evolve program specifications that can describe sample data. It begins with an overview of genetic programming and the four tribes of programmers. It then explains how Clojure.spec allows defining specs, validating data against specs, and generating data from specs. The document demonstrates evolving a population of spec programs to find one that perfectly describes some sample data, and discusses how the evolved spec can now generate new data. It concludes by discussing possibilities for using Clojure.spec to enable self-healing code through horizontal code transfer between donor functions.