Thanks Afmob for pointing out the technically simpler way to do step 9, showing that I'd reached naked singles slightly earlier in step 19 and for correcting a few typos.
Prelims
a) R1C45 = {18/27/36/45}, no 9
b) R1C78 = {29/38/47/56}, no 1
c) R2C67 = {49/58/67}, no 1,2,3
d) R34C1 = {16/25/34}, no 7,8,9
e) R5C45 = {69/78}
f) R56C8 = {29/38/47/56}, no 1
g) R67C4 = {29/38/47/56}, no 1
h) R7C89 = {39/48/57}, no 1,2,6
i) R9C34 = {19/28/37/46}, no 5
j) R9C78 = {19/28/37/46}, no 5
k) 11(3) cage at R3C4 = {128/137/146/236/245}, no 9
l) 11(3) cage at R6C1 = {128/137/146/236/245}, no 9
m) 21(3) cage at R7C1 = {489/579/678}, no 1,2,3
n) 12(4) cage at R7C2 = {1236/1245}, no 7,8,9
1. 45 rule on N1234 1 innie R3C4 = 4, clean-up: no 5 in R1C45, no 3 in R4C1, no 7 in R67C4, no 6 in R9C3
1a. R3C4 = 4 -> R4C45 = 7 = {16/25}, no 3,7,8
1b. 37(7) cage at R1C3 must contain 4, locked for N1
2. 45 rule on N4 2 outies R3C12 = 9 = [18/27/36/63], clean-up: no 2 in R4C1
2a. 45 rule on N3 2 innies R3C78 = 7 = {16/25}
2b. R1C78 = {29/38/47} (cannot be {56} which clash with R3C78), no 5,6 in R1C78
[I originally had a combined cage R3C12 + R3C78 here; it’s been replaced by a killer pair in step 10c.]
3. 45 rule on N7 2 innies R89C3 = 12 = {39/48}/[57], no 1,2,6, no 7 in R8C3, clean-up: no 8,9 in R9C4
4. 45 rule on N9 2 innies R78C7 = 10 = {19/28/37/46}, no 5
5. 45 rule on R6789 2 innies R6C89 = 13 = {49/58/67}, no 1,2,3, clean-up: no 8,9 in R5C8
6. 45 rule on N3 3 outies R123C6 = 15 = {168/258/357} (cannot be {159/267} which clash with R3C78, no 9
6a. 22(5) cage at R1C6 = {12568/13567}, CPE no 1,5,6 in R3C5
6b. 9 in N2 only in R2C45 + R3C5, locked for 37(7) cage at R1C3, no 9 in R123C3 + R2C2
6c. 9 in N1 only in 16(3) cage at R1C1 = {169/259}, no 3,7,8
6d. Combined cage 16(3) cage + R3C12 = {169}[27]/{259}[18]/{259}{36}, 2 locked for N1
6e. 3 in N1 only in R1C3 + R2C23 + R3C123, CPE no 3 in R3C5
7. 45 rule on R5 4 innies R5C6789 = 12 = {1236/1245}, 1,2 locked for R5, clean-up: no 4 in R6C8, no 9 in R6C9 (step 5)
7a. 18(3) cage at R5C1 = {369/378/459} (cannot be {468/567} which clash with R5C45)
8. 45 rule on C1 2 innies R56C1 = 1 outie R1C2 + 1
8a. Min R56C1 = 4 -> min R1C2 = 5
8b. Max R56C1 = 10, min R5C1 = 3 -> max R6C1 = 7
8c. 2 in N1 only in R123C1, locked for C1
9. 14(3) cage at R1C9 = {149/158/167/239/248/257/347} (cannot be {356} which clashes with R3C78)
9a. 3 in N3 only in R1C78 = {38} or in 14(3) cage = {239/347} -> 14(3) cage = {149/167/239/257/347} (cannot be {158/248} which contain 8 but not 3, locking-out cages), no 8
[Note. There was a similar step in N9 after step 4 but I haven’t used it (yet) as it doesn’t give any candidates eliminations.]
[Afmob pointed out that {158} also clashes with R3C78 and {248} clashes with R1C78; which are technically simpler than using locking-out cages.]
10. 9 in N2 only in R2C45 + R3C5
10a. 45 rule on N23 3 remaining innies R2C45 + R3C5 = 17 cannot contain both of 8 and 9 -> no 8 in R2C45 + R3C5
10b. 37(7) cage at R1C3 must contain 8, locked for N1, clean-up: no 1 in R3C1 (step 2), no 6 in R4C1
10c. Killer pair 2,6 in R3C12 and R3C78, locked for R3
10d. Killer pair 2,6 in 16(3) cage at R1C1 and R3C12, locked for N1
11. 18(3) cage at R3C2 = {279/369/378/468/567} (cannot be {189/459} because R3C2 only contains 3,6,7), no 1
11a. 45 rule on N4 3 innies R4C123 = 16
11b. 18(3) cage = {279/369/378/567} (cannot be {468} because R4C123 cannot be = 4{48}), no 4 in R4C23
11c. R4C123 = 16 = {169/178/259/457} (cannot be {268/367} because R4C1 only contains 1,4,5, cannot be {349/358} which clash with 18(3) cage at R5C1), no 3 in R4C23
11d. Killer pair 1,5 in R4C123 and R4C45, locked for R4
11e. Killer pair 7,9 in R4C123 and 18(3) cage at R5C1, locked for N4
12. Hidden killer triple 1,2,3 in 16(3) cage at R1C1, R34C1 and R56C1 for C1, 16(3) cage contains one of 1,2 in C1, R34C1 contains one of 1,2,3 -> R56C1 must contain one of 1,3
12a. R56C1 = R1C2 + 1 (step 8)
12b. R1C2 = {569} -> R56C1 = 6,7,10 = [51/34/43/61/73/91], no 8 in R5C1, no 5,6 in R6C1
12c. 8 in C1 only in 21(3) cage at R7C1, locked for N7, clean-up: no 4 in R89C3 (step 3), no 2,6 in R9C4
12d. 21(3) cage = {489/678}, no 5
[I can see a forcing chain which gives a placement, but probably not much more. Since Ed said that this puzzle can be solved without using a forcing chain I won’t use it, at least for now.]
[Taking step 12 further …]
13. 18(3) cage at R5C1 (step 7a) = {369/378/459}
13a. R56C1 (step 12b) = [51/34/43/61/91] (cannot be [73] which clashes with 18(3) cage = {378}, CCC), no 7 in R5C1
[Cracked. The rest is fairly straightforward.]
13b. 7 in C1 only in 21(3) cage at R7C1 (step 12d) = {678}, locked for C1 and N7, clean-up: no 3 in R3C2 (step 2), no 1 in R4C1, no 5 in R8C3 (step 3), no 3 in R9C4
13c. Naked pair {39} in R89C3, locked for C3 and N7
13d. Naked pair {39} in R89C3, CPE no 3,9 in R9C5
14. R4C123 (step 11c) = {259/457}, no 8, 5 locked for R4 and N4, clean-up: no 2 in R4C45 (step 1a)
14a. Naked pair {16} in R4C45, locked for R4 and N5, clean-up: no 9 in R5C45, no 5 in R7C4
14b. Naked pair {78} in R5C45, locked for R5 and N5, clean-up: no 3 in R7C4
14c. 18(3) cage at R5C1 = {369} (only remaining combination) -> R5C3 = 6, R5C12 = {39}, locked for R5 and N4, clean-up: no 5,8 in R6C8, no 5,8 in R6C9 (step 5)
14d. 11(3) cage at R6C1 = {128} (only remaining combination) -> R6C1 = 1, R6C23 = {28}, locked for R6 and N4, clean-up: no 9 in R7C4
14e. Naked pair {57} in R4C23, locked for R4 and 18(3) cage at R3C2 -> R3C2 = 6, R4C1 = 4 -> R3C1 = 3, R5C12 = [93], clean-up: no 1 in R3C78 (step 2a)
15. Naked pair {25} in R12C1, locked for N1 -> R1C2 = 9, clean-up: no 2 in R1C78
15a. Naked quad {1478} in R123C3 + R2C2, locked for 37(7) cage at R1C3 -> R3C5 = 9, R2C45 = {26/35}
16. Naked pair {25} in R3C78, locked for R3, N3 and 22(5) cage at R1C6, no 2,5 in R12C6, clean-up: no 8 in R2C78
16a. R1C78 = {38} (cannot be {47} which clashes with R2C78), locked for R1 and N3, clean-up: no 1,6 in R1C45
16b. Naked pair {27} in R1C45, locked for R1 and N2
16c. R123C6 (step 6) = {168} (only remaining combination), locked for C6 and N2
17. 1 in N3 only in 14(3) cage at R1C9, locked for C9
17a. R5C7 = 1 (hidden single in N6), clean-up: no 9 in R78C7 (step 4), no 9 in R9C8
17b. R5C7 = 1 -> 17(4) cage at R4C6 = {1259/1349/1358}
17c. 4,5 only in R5C6 -> R5C6 = {45}
17d. 2 in R5 only in R5C89, locked for N6
18. 19(4) cage at R4C8 = {2368} (only remaining combination because R4C89 only contain 3,8,9, R5C9 only contains 2,4,5 and R6C9 only contains 4,6,7) -> R56C9 = [26], R4C89 = {38}, locked for R4 and N6 -> R4C67 = [29], R5C6 = 5 (cage sum), R5C8 = 4 -> R6C8 = 7, R6C7 = 5, R3C78 = [25]
18a. 6 in N3 only in R2C78 = [76] -> 14(3) cage at R1C9 = [491]
18b. Naked pair {38} in R14C8, locked for C8 -> R7C8 = 9 -> R7C9 = 3
18c. R78C7 = 10 (step 4) = {46}, locked for N9 -> R9C7 = 8
19. R6C7 = 5 -> R6C6 + R7C7 = 13 = [94]
and the rest is naked singles.