Thanks Afmob for pointing out the extra elimination in step 24a and that I could simplify step 25.
Prelims
a) R1C67 = {79}
b) R23C1 = {39/48/57}, no 1,2,6
c) R2C56 = {49/58/67}, no 1,2,3
d) R34C9 = {69/78}
e) R45C3 = {49/58/67}, no 1,2,3
f) R45C8 = {14/23}
g) R56C2 = {14/23}
h) R67C1 = {29/38/47/56}, no 1
i) R78C9 = {13}
j) R8C45 = {15/24}
k) R9C34 = {19/28/37/46}, no 5
l) 9(3) cage at R3C4 = {126/135/234}, no 7,8,9
m) 9(3) cage at R3C6 = {126/135/234}, no 7,8,9
n) 20(3) cage at R5C9 = {389/479/569/578}, no 1,2
o) 11(3) cage at R6C3 = {128/137/146/236/245}, no 9
p) 34(5) cage at R4C5 = {46789}
Steps resulting from Prelims
1a. Naked pair {79} in R1C67, locked for R1
1b. Naked pair {13} in R78C9, locked for C9 and N9
1c. Naked quint {46789} in 34(5) cage at R4C5, locked for N5
2. 45 rule on N3 2 innies R1C7 + R3C9 = 15 = [78/96], clean-up: no 6,8 in R4C9
3. 45 rule on N4 2 innies R6C13 = 11 = {38/47/56}/[92], no 2 in R6C1, no 1 in R6C3, clean-up: no 9 in R7C1
4. 45 rule on N7 2 innies R7C1 + R9C3 = 9 = {27/36}/[54/81], no 4 in R7C1, no 8,9 in R9C3, clean-up: no 7 in R6C1, no 4 in R6C3 (step 3), no 1,2 in R9C4
5. 20(3) cage at R5C9 = {569/578} (cannot be {389} which clashes with R34C9, cannot be {479} which clashes with R4C9), no 3,4, 5 locked for N6
5a. Killer pair 7,9 in R4C9 and 20(3) cage, locked for N6
6. 12(3) cage at R8C6 = {138/156/237/246} (cannot be {129/147/345} which clash with R8C45), no 9
6a. Killer pair 1,2 in R8C45 and 12(3) cage, locked for N8
7. 45 rule on R89 3 innies R8C379 = 14 = {158/167/239/347/356} (cannot be {149/257} which clash with R8C45, cannot be {248} because R8C9 only contains 1,3)
7a. R8C9 = {13} -> no 1,3 in R8C3
8. 12(3) cage at R7C2 = {129/147/156/237/246/345} (cannot be {138} which clashes with R7C9 and there’s no 1,3 in R8C3), no 8
9. 45 rule on N2 1 outie R1C7 = 3 innies R3C456 + 1, R1C7 = {79} -> R3C456 = 6,8 = {123/125/134}, no 6, 1 locked for R3 and N2
10. 9(3) cage at R3C4 = {135/234}, CPE no 3 in R12C4
11. 11(3) cage at R6C3 = {128/137/146/236/245}
11a. 8 of {128} must be in R7C4 (because 1,2 only in R6C34) -> no 8 in R6C3, clean-up: no 3 in R6C1 (step 3), no 8 in R7C1, no 1 in R9C3 (step 4), no 9 in R9C4
11b. 4 of {245} must be in R7C4 -> no 5 in R7C4
11c. 9 in N8 only in R7C56, locked for R7
[I originally used 45 rule on C123 next, but this step is more powerful]
12. 45 rule on N478 1 outie R6C4 = 2 innies R7C56 + 15
12a. Max R7C56 = 17 -> max R6C4 = 2
12b. R6C4 = {12} -> R7C56 = 16,17 = {79/89}
13. 45 rule on N8 4 innies R7C456 + R9C4 = 27 = {3789/4689}, 8 locked for N8
14. Deleted.
15. 17(3) cage at R7C7 = {269/278/458/467}
15a. 2 of {269/278} must be in R7C78 (R7C78 cannot be {78} which clashes with R7C56, ALS block), no 2 in R8C7
16. 45 rule on R89 R8C379 (step 7) = {158/167/239/347/356}
16a. 2 of {239} must be in R8C3 -> no 9 in R8C3
17. 8,9 in N7 only in 24(4) cage at R8C1 = {1689/2589/3489}, no 7
18. R7C1 + R9C3 (step 4) = {27/36}/[54]
18a. 12(3) cage at R7C2 (step 8) = {147/156/237/345} (cannot be {246} which clashes with R7C1 + R9C3)
18b. Killer pair 1,3 in 12(3) cage at R7C9, locked for R7, clean-up: no 8 in R6C1, no 3 in R6C3 (step 3), no 6 in R9C3 (step 4), no 4 in R9C4
19. 45 rule on C123 3 outies R679C4 = 12 = {138/246} (cannot be {147} because R7C456 + R9C4, step 13, cannot contain both of 4,7, cannot be {237} = [273] because 11(3) cage at R6C3 cannot be [227]), no 7 in R79C4, clean-up: no 3 in R9C3, no 6 in R7C1 (step 4), no 5 in R6C1, no 6 in R6C3 (step 3)
20. 11(3) cage at R6C3 (step 11) = {128/245} (cannot be {146} because 4,6 only in R7C4), no 6,7, 2 locked for R6, clean-up: no 3 in R5C2, no 4 in R6C1 (step 3), no 7 in R7C1, no 2 in R9C3 (step 4), no 8 in R9C4
20a. 8 in N8 only in R7C456, locked for R7
21. 12(3) cage at R7C2 (step 18a) = {156/237/345} (cannot be {147} which clashes with R9C3)
21a. 24(4) cage at R8C1 (step 17) = {1689/3489} (cannot be {2589} which clashes with 12(3) cage), no 2,5
[Alternatively killer pair 2,5 in R7C1 + R9C3 and 12(3) cage, locked for N7]
22. Deleted. I used combined cages and locking cages to make eliminations in C3, but they were unnecessary after I spotted step 24 and would have increased the rating of my walkthrough.
23. 16(3) cage at R4C1 = {178/358/367/457} (cannot be {169} which clashes with R6C1, cannot be {259} which clashes with R6C3, cannot be {268} which clashes with R6C13, cannot be {349} which clashes with R56C2), no 2,9
23a. Hidden killer pair 1,3 in 16(3) cage and R56C2 for N4, R56C2 contains one of 1,3 -> 16(3) cage must contain one of 1,3 = {178/358/367} (cannot be {457} which doesn’t contain 1 or 3), no 4
[Just spotted; this cracks the puzzle – no further clean-ups.]
24. 45 rule on N7 1 outie R6C1 = 1 innie R9C3 + 2 -> R6C1 + R9C3 = [64/97]
24a. R45C3 = {58} (cannot be {49/67} which clashes with R6C1 + R9C3, IOD clash), locked for C3 and N4
[Thanks Afmob for pointing out that the IOD clash also eliminated {67}.]
25. R6C1 = 9 (hidden single in N4) -> R7C1 = 2, R9C3 = 7 (step 4) -> R9C4 = 3, R6C3 = 2 (step 3), R6C4 = 1, R7C4 = 8 (cage sum), clean-up: no 3 in R23C1, no 4 in R5C2, no 3 in R6C2, no 5 in R8C5
25a. Deleted
25b. R56C2 = [14], clean-up: no 4 in R4C8
25c. Naked pair {79} in R7C56, 7 locked for R7 and N8
26. 9(3) cage at R3C4 (step 10) = {234} (only remaining combination, cannot be {135} because 1,3 only in R3C5) -> R3C5 = 3, R34C4 = [42], R8C4 = 5 -> R8C5 = 1, R78C9 = [13], R1C4 = 6
26a. R3C6 = 1 (hidden single in R3)
26b. R1C5 = 2 (hidden single in N2), R2C4 = 9 (cage sum), R1C67 = [79], R3C9 = 6 (step 2), R4C9 = 9, R7C56 = [79]
26c. Naked pair {35} in R46C6, locked for C6 -> R2C56 = [58]
27. R9C1 = 1 (hidden single in N7) -> 24(4) cage at R8C1 (step 17) = {1689}, 6 locked for N7
28. R8C3 = 4, R7C23 = [53]
28a. Naked pair {46} in R7C78, locked for N7, R8C7 = 7 (cage sum)
29. R3C6 = 1 -> R4C67 = 8 = [53]
29a. R6C6 = 3, R7C56 = [79] = 16 -> R56C7 = 8 = [26]
30. R1C3 = 1, R23C3 = [69], R3C2 = 2 (cage sum)
31. 13(3) cage at R2C7 = {157} (only possible combination) -> R2C7 = 1, R3C78 = [57], R3C1 = 8 -> R2C1 = 4
and the rest is naked singles.