Thanks Afmob for showing me that I'd reached naked singles earlier than I'd realised, and for pointing out a typo.
Prelims
a) R1C12 = {13}
b) R1C67 = {19/28/37/46}, no 5
c) R2C12 = {49/58/67}, no 1,2,3
d) R2C67 = {17/26/35}, no 4,8,9
e) R34C8 = {29/38/47/56}, no 1
f) R34C9 = {29/38/47/56}, no 1
g) R45C1 = {17/26/35}, no 4,8,9
h) R56C2 = {15/24}
i) R8C45 = {17/26/35}, no 4,8,9
j) R9C56 = {49/58/67}, no 1,2,3
k) 20(3) cage at R6C3 = {389/479/569/578}, no 1,2
l) 7(3) cage at R8C6 = {124}
Steps resulting from Prelims
1a. Naked pair {13} in R1C12, locked for R1 and N1, clean-up: no 7,9 in R1C67
1b. Naked triple {124} in 7(3) cage at R8C6, CPE no 1,2,4 in R8C89
2. 45 rule on R12 1 innie R2C4 = 8, clean-up: no 2 in R1C7, no 5 in R2C12
2a. Max R67C4 = 16 -> min R6C3 = 4
3. 45 rule on C89 1 innie R6C8 = 2, clean-up: no 9 in R34C8, no 9 in R3C9, no 4 in R5C2
3a. 45 rule on C89 3 outies R567C7 = 20 = {389/479/569/578}, no 1
4. 45 rule on N7 2(1+1) outies R6C1 + R9C4 = 12 = {39/57}/[66/84], no 1,4 in R6C1, no 1,2 in R9C4
5. 45 rule on C12 4(3+1) outies R789C3 + R9C4 = 11
5a. Min R789C3 = 6 -> max R9C4 = 5, clean-up: min R6C1 = 7 (step 4)
5b. Min R9C4 = 3 -> max R789C3 = 8 -> R789C3 = {123/124/125/134}, no 6,7,8,9, 1 locked for C3 and N7
6. 13(3) cage at R3C1 = {148/157/238/247/256} (cannot be {139} which clashes with R1C2, cannot be {346} which clashes with R2C12), no 9
6a. Min R3C12 = 6 -> max R4C2 = 7
7. 45 rule on C6789 4 innies R5679C6 = 29 = {5789}, locked for C6, clean-up: no 1,3 in R2C7, no 7,9 in R9C5
7a. 17(3) cage at R6C6 must contain one of 1,2,3,4 -> R7C5 = {1234}
8. 45 rule on C12 2 innies R78C2 = 2 outies R9C34 + 10
8a. Min R9C34 = 4 -> min R78C2 = 14, no 2,3,4 in R78C2
9. Double hidden killer triple 1,2,4 in R1C67, 7(3) cage at R8C6 and rest of C67 for C67, R1C67 contains one of 2,4, 7(3) cage = {124} -> rest of C67 contains two of 1,2,4 -> 16(4) cage at R3C6 = {1258/1267/1348/1357/1456/2347/2356} (cannot be {1249} which contains all of 1,2,4) -> no 9 in R34C7
9a. 3 in C6 only in R2C67 = [35] or 16(4) cage -> 16(4) cage = {1267/1348/1357/2347/2356} (cannot be {1258/1456} which clashes with R2C67 = [35], blocking cages)
10. 9 in R3 only in 24(4) cage at R2C4 = {1689/2589/3489}, no 7
11. 13(3) cage at R3C1 cannot be 8[23] which clashes with R1C2 + R56C2 (killer ALS block), cannot be 8[41] which clashes with R56C2 -> no 8 in R3C1
12. 8 in C1 only in R6789C1, locked for 36(7) cage at R6C1, no 8 in R9C2
12a. 36(7) cage containing 8 must also contain 1 -> R9C3 = 1
12b. 7(3) cage at R8C6 = {124}, 1 locked for R8, clean-up: no 7 in R8C45
13. R45C1 = {17/26/35}, R56C2 = {15}/[24] -> combined cage R45C1 + R56C2 = {17}[24]/{26}{15}/{35}[24], 2 locked for N4
14. R78C3 (step 5b) = {23/24/25/34} -> 21(4) cage at R7C2 = {2379/2469/2478/2568/3459/3468} (cannot be {3567} because R78C3 cannot contain both of 3,5)
14a. 36(7) cage at R6C1 must contain 9
14b. R6C1 + R9C4 (step 4) = [75/84/93]
14c. 21(4) cage = {2469/2478/2568/3459/3468} (cannot be {2379} with R6C1 + R9C4 = [93] because R789C3 + R9C4 must total 11, step 5)
14d. R78C3 = {24/25/34} = 6,7 -> R9C34 = 4,5 (step 5) = [13/14], no 5 in R9C4, clean-up: no 7 in R6C1
15. Killer quad 1,2,3,4 in R7C5, R8C45, R8C6 and R9C4, locked for N8, clean-up: no 9 in R8C6
15a. Killer pair 5,6 in R8C45 and R9C56, locked for N8
15b. 9 in N8 only in R7C46, locked for R7
16. 45 rule on C6789 2 innies R59C6 = 1 outie R7C5 + 12
16a. R7C5 + R59C6 = 1{58}/3{78}/4[97] (cannot be 2[95] which clashes with R8C45, killer IOD clash) -> no 2 in R7C5
16b. 2 in N8 only in R8C456, locked for R8
17. Consider placements for R9C4 = {34}
R9C4 = 3 => R8C45 = {26}
or R9C4 = 4 => R9C7 = 2, R8C6 = 1, R7C5 = 3 => R8C45 = {26}
-> R8C45 = {26}, locked for R8 and N8, clean-up: no 7 in R9C6
17a. Naked pair {14} in R8C67, locked for R8 and 7(3) cage at R8C6 -> R9C7 = 2, clean-up: no 6 in R2C6
17b. Naked pair {58} in R9C56, locked for R9 and N8
17c. Naked pair {79} in R7C46, locked for R7
18. R78C3 (step 14d) = {25/34} (cannot be {24} because 2,4 only in R7C3)
18a. 2,4 only in R7C3 -> R7C3 = {24}
18b. R78C3 = {25/34} = 7 -> R9C34 = 4 (step 5) = [13] -> R9C4 = 3, R6C1 = 9 (step 4), clean-up: no 4 in R2C2
19. 8 in C1 only in R78C1, locked for N7
19a. R9C34 = [13] = 4 -> R78C2 = 14 (step 8) = [59], 9 placed for D/, R8C3 = 3 -> R7C3 = 4 (cage sum), placed for D/, clean-up: no 4 in R2C1, no 1 in R56C2
19b. Naked pair {67} in R9C12, locked for R9 and N7 -> R78C1 = [28], clean-up: no 6 in R45C1
19c. R7C5 = 1 -> R67C6 = 16 = [79], 7 placed for D\
19d. R2C12 = [76], 6 placed for D\, R2C7 = 5 -> R2C6 = 3, R2C8 = 1, placed for D/, clean-up: no 1 in R45C1, no 6 in R4C8, no 6 in R4C9
19e. R8C89 = [57], 5 placed for D\, clean-up: no 6 in R3C8, no 4 in R34C9
19f. R9C1 = 6, placed for D/
[Thanks Afmob for pointing out that it's naked singles from here, without using the diagonals. Afmob uses SimpleSudoku to check for singles. I only check manually for naked single when I think I may have reached that stage.]
20. Naked pair {35} in R45C1, locked for C1 and N4 -> R1C1 = 1, placed for D\
20a. R56C2 = [24], R3C12 = [48] -> R4C2 = 1 (cage sum), clean-up: no 3,7 in R4C8, no 3 in R4C9
21. R3C6 = 1 (hidden single in C6), R4C6 = 2, placed for D/
21a. R34C6 = [12] = 3 -> R34C7 = 13 = [76], R3C8 = 3 -> R4C8 = 8
22. R1C9 = 8, placed for D/, R5C5 = 3, placed for D\
22a. R1C67 = [64], R1C8 = 9, R9C8 = 4, R9C9 = 9, placed for D\
and the rest is naked singles, without using the diagonals.