The problem with this is the following:
Factorio implements very, very much intelligence to avoid situations like in Minecraft, where identifiers of items needs to be fixed.
See
http://www.minecraftinfo.com/idlist.htm
Instead the "ID" of any item is handled internally and is never revealed to any mod etc. You don't need to care about it. Entities can be accessed via the name of the entity and the game ensures to make that access unique.
Which means in countermove: Any entity cannot change during game.
Which means: Once a recipe, a technology, an item, or other entities are loaded (which is done while startup of game), it cannot be changed anymore. This makes much sense, cause the entities are in storage and if you change the entity, then stop playing and load another the entity would keep changed.
Of course you can do this: Cause the data-section can access any lua function (the data.lua is just another lua-program), you can create random recipes during startup. But you cannot change that depended to the game you want to start/load.
See more about this loading mechanism in:
http://lua-api.factorio.com/latest/Data-Lifecycle.html
PS: I'm not saying this is not possible. It would enable a lot of interesting mods, I would apreciate. But I think it needs some more thinking to enable changing of entities during game and I think the right way to implement this would be
not to enable just a change of a recipe (or any other entity) during game.
That is simply because of this: Currently we as players from other games are very used to have recipes just changed (because something happens for example). That is just implemented in the way as above described: The game just changes the recipe-entity and suddenly all machines need different items.
But I think this is too much magic. It is like "Oh, I invented the wheels" and suddenly all skids have wheels. You need to admit: This is currently in very, very much games. It shortens things.
But in my opinion there needs to happen a second thing: You need to
upgrade the skids somehow. Some second event needs to happen, to enable the new skid to the old. Which means you to exchange skids with no wheels to skids with wheels. Which means: You still need and have the old skids and you also can produces the old ones.
And I think this second step is, what Factorio makes to what Factorio is.