Here are two idea for them.
First, empty CDS in bot inventory being used to expand their memory, logically CDS should have a memory equal to the largest one among bots, so 32kb for now, and for each CDS in an inventory, a bot see his memory capacity increased by this amount, and if we remove too many and the current program simply don't have enough space, the robot just get stuck until we add back the necessary CDS.
What about a special slot in the Worker Assembler that allow to put a CDS which will be the default program for the bot who came out, as an example, that some automatically fill their inventory with empty CDS, or with log for the steambot, or an example with the actual fuel consumption bug, with stones and a log.
About storage, I think the possibility to separate some storages from the rest would be useful, there is some things that can't be done because of how they act all as general storage.
Edit:
Possibility for robot to take or store item from/to the nearest storage, if my idea about unlinking storage from main is implemented, this would need ability to independently target nearest general, a specific general or a specific unlinked one.
For bot programming, setting conditions with numerical value,until/ if x object amount in x storage is <,> or = to n value.