Do all these different ways have the same self-improvement power, in a way analogous to how all good programming languages are Turing-complete?
I think self-improvement power splits into two aspects: a) which layer of ‘execution substrate’ the optimization process can reach (source code, byte code, machine code, logic gates, production processes, physics) and b) which level of optimization complexity the process can reach. I think you refer to the latter. Also note that a Turing complete optimization process is probably harder to control than some process this is still fairly general but has some of the limitations proposed by Stuart Armstrong built in.
I think self-improvement power splits into two aspects: a) which layer of ‘execution substrate’ the optimization process can reach (source code, byte code, machine code, logic gates, production processes, physics) and b) which level of optimization complexity the process can reach. I think you refer to the latter. Also note that a Turing complete optimization process is probably harder to control than some process this is still fairly general but has some of the limitations proposed by Stuart Armstrong built in.