Well, I guess won't be adding simplisitc universal gestation and maturity periods then...
I did think about adding an optional, configurable cost that would only be accessed at reproduction. That would address some of the concerns while still having the potential to stem runaway reproduction since reproduction would no longer be free, but as below, this is too simplisitc. Besides, I don't think we want a single sim wide reproduction cost for all species. Rather, it should be something that is highly dependent on an individual species specific morphology, evolutionary niche and reproduction strategy. Generation times should subject to selection based on costs.
The waste idea might serve to deal with the gestation side of the issue, but it doesn't do anything for the maturity side of things. Cancerous growth through binary fan out would still be possible. Also, anything that requires that a waste removal gene evolve scares me since evolving such a gene is non-trivial. You'd have to have a way to ramp up the waste 'cost' over time in an evo sim to evolve such a thing I would guess. I beleive this is why most evo sims simply turn off the waste threshold or set it so high as to not get triggerred.
I think Nums has the right idea, a 'gestation/maturity period' countdown timer of some sort that counts down from birth and from reproduction. There is an associated user-settable cost that when a bot reproduces, gets multiplied by the log of the timer's value (or potentially, some other definable curve). If the bot waits long enough, the act of reproduction is free (it still must provide nrg to it's offspring). Reproducing before the timer hits 0 has some cost.
Note that we could decide the two cases - gestation and maturity - should have different initial timer values, say the timer has a longer period for maturity (bots have to grow up before they can cheaply reproduce) but a shorter time for gestation (once mature, I can repeat reproduction at the same cost in less time than it took me to grow up).
Bots will need to have access to this information to make reasonable decisions about when and whether to reproduce. But instead of just making the timer value available - a value that gets magically multiplied by a user specified cost value bot's can't access - I think it would be better if the bots knew exactly how much nrg it was going to cost to reproduce in any given cycle. So, I suggest a new read-only sysvar called .reprocost whose value in any given cycle will be a function of the individual bot's countdown timer, a sim-wide user-supplied cost for reproduction and CostX (if using dynamic costs). Thus bots can evolve effective strategies for reproduction based on what it is going to cost them, for example, taking advantage of low CostX periods to reproduce more often.
I would suggest we want the initial value of the timer for any given individual (and for that of newly born offspring) to be based to some degree upon it's physical and morphological elements - it's mass and size for example. (The value for newly born offspring would be a function of the parent's morphology.)
At first blush, I am tempted to say the larger and more massive a bot is, the higher the timer value should be. After all, it takes a mommy elephant 22 months to gestate a baby elephant, but bacteria can divide in hours, but I think this may be too simplisitc. I think we do want bots to be able to evolve different 'natural' generation times through selection pressure on their morphological elements.
I will probably implement this pretty soon. If any one has refinements or critisisms , please offer them up!