#22 - "system should write code that sorts a list, rather than just being able to sort lists."
Using symbolic techniques, synthesizing algorithms is tractable. See Sec5.3 on pg11- of http://saurabh-srivastava.com/pubs/popl10-synthesis.pdf - Figure 2(b) is the synthesized selection sort algorithm, and Table 3 has QuickSort synthesis time at 160seconds. Very old work (2010) and used templates to guide synthesis. SAT solvers have improved, and much more CPU cycles are available, so in 2016, exhaustively exploring the template space will be trivial.
I.e., rather than reconstructing code from concrete program execution traces, giving the synthesizer (AI?) the ability to manipulate symbolic spaces leads to a tractable search space. Finding specification-matching programs within this symbolic space is doable.