Congratulations to all who managed to solve Assassin 78. I must admit I was really struggling until I got a hint from Afmob. It was a good hint, just enough to make me think how to use it. Many thanks for that!

After that it was pretty straightforward with the work I'd already done being helpful.
Really nice walkthrough, Mike! You got to the heart of things very quickly.
Here is my walkthrough for Assassin 78, including the hint after step 23.
Many thanks to Para for corrections and feedback.
Prelims
a) R23C3 = {16/25/34}, no 7,8,9
b) R3C78 = {29/38/47/56}, no 1
c) R7C23 = {39/48/56}, no 1,2,6
d) R78C7 = {18/27/36/45}, no 9
e) 24(3) cage in N1 = {789}, locked for N1
f) 11(3) cage in N2 = {128/137/146/236/245}, no 9
g) 11(3) cage in N3 = {128/137/146/236/245}, no 9
h) 7(3) cage in N4 = {124}, locked for N4
i) 21(3) cage at R4C6 = {489/579/678}, no 1,2,3
j) 11(3) cage in N7 = {128/137/146/236/245}, no 9
k) 22(3) cage in N8 = 9{58/67}, 9 locked for N8
1. 45 rule on N1 1 outie R4C1 = 1 innie R1C3 + 1, no 1,3 in R1C3, no 8,9 in R4C1
2. 45 rule on N12 1 innies R1C6 = 2 outies R4C14 + 1
2a. Min R4C14 = 4 -> min R1C6 = 5
2b. Max R1C6 = 9 -> max R4C14 = 8, no 6,7,8,9 in R4C4
3. 45 rule on N9 1 innie R9C7 = 1 outie R6C9 + 1, no 9 in R6C9, no 1 in R9C7
4. 45 rule on N89 2 outies R6C69 = 1 innie R9C4 + 10
4a. Min R9C4 = 1 -> min R6C69 = 11, no 1, no 2 in R6C6, clean-up: no 2 in R9C7 (step 3)
4b. Max R6C69 = 17 -> max R9C4 = 7
5. 45 rule on N7 1 innie R7C1 = 1 outie R9C4 + 1, no 1,9 in R7C1
6. 45 rule on N4 2 outies R6C4 + R7C1 = 1 innie R4C1 + 3
6a. Max R4C1 = 7 -> max R6C4 + R7C1 = 10, no 9 in R6C4
6b. IOU no 3 in R6C4
7. 45 rule on N6 2 outies R3C9 + R4C6 = 1 innie R6C9 + 13
7a. Min R6C9 = 2 -> min R3C9 + R4C6 = 15, no 1,2,3,4,5
7b. Max R3C9 + R4C6 = 18 -> max R6C9 = 5, clean-up: no 7,8,9 in R9C7 (step 3)
7c. Min R6C69 = 11 (step 4a), no 3,4,5 in R6C6
8. 45 rule on N3 1 outie R1C6 = 1 innie R3C9 -> R1C6 = {6789}
9. 45 rule on N8 2 outies R6C6 + R9C7 = 1 innie R9C4 + 11, max R6C6 + R9C7 = 15 -> max R9C4 = 4, clean=up: no 6,7,8 in R7C1 (step 5)
10. 45 rule on C789 2 outies R14C6 = 1 innie R9C7 + 12
10a. Max
R14C6 = 17 -> max R9C7 = 5, clean-up: no 5 in R6C9 (step 3)
10b. Max R6C6 + R9C7 = 14 -> max R9C4 = 3 (step 9), clean-up: no 5 in R7C1 (step 5)
10c. Min R6C69 = 11 (step 4a), no 6 in R6C6
Para: "I think you missed the interactions between some 45-tests.
Because you said maximum of R6C6 + R9C7 was maximum 14: [95], but R9C6 = 5 means R14C6 = {89}, so really maximum was 12([75/84/93] if you use 45 on C789) and that gets you the same as in step 24."
Neat! That would have made the solution a lot quicker.
11. 45 rule on C89 2 outies R36C7 = 1 innie R1C8 + 4
11a. IOU no 4 in R6C7
12. 45 rule on N5 4 innies R46C46 = 24 = {1689/2589/2679/3489/3579/3678/4569/4578}
12a. 1 of {1689} must be in R4C4 -> no 1 in R6C4
13. 17(3) cage at R5C3 = {269/278/359/368/458/467}
13a. 2,4 of {278/467} must be in R6C4 -> no 7 in R6C4
14. 45 rule on R1 3 outies R2C247 = 1 innie R1C9 + 20
14a. Min R1C9 = 1 -> min R2C247 = 21, no 1,2,3
14b. Max R2C247 = 24 -> max R1C9 = 4
15.
Deleted. It was incorrect and also happened to be unnecessary. When I originally went through my walkthrough before posting it I thought it was probably unnecessary but hadn't seen the flaw which Para pointed out.
16. 45 rule on R89 2 outies R7C47 = 1 innie R8C9 + 6
16a. IOU no 6 in R7C4
17. 45 rule on R12 2 outies R3C36 = 1 innie R2C1 + 4
17a. IOU no 4 in R3C6
18. 45 rule on R6789 3 outies R5C138 = 1 innie R6C5 + 18
18a. Min R6C5 = 1 -> min R5C138 = 19, no 1
18b. Max R5C138 = 24 -> max R6C5 = 6
19. Min R9C7 = 3 -> min R14C6 = 15 (step 10) -> max R67C6 = 15 -> no 1 in R7C5
20. 17(4) cage at R8C6 = {1268/1358/1367/1457/2348/2357/2456}, must contain at least one of 5,6,7,8
in R8C6 + R9C56
21. 17(3) cage at R6C6 = {179/269/278/359/368/458/467}, must contain one of 5,6,7,8 in R7C56
21a. Hidden killer quad 5,6,7,8 in N8 -> 17(4) cage at R8C6 can only contain one of 5,6,7,8 in R8C6 + R9C56 and can also contain 5 in R9C7 = {1358/1457/2348/2357/2456} (cannot be {1268/1367} which contain two of 6,7,8)
21b. 6,7,8 of {1358/1457/2357/2456} must be in R8C6 +R9C56 -> no 5 in R8C6 + R9C56
22. 17(4) cage at R8C6 = {1358/1457/2348/2357/2456}
22a. If {1358} => R9C4 = 2 => no {278} in 17(3) cage at R6C6
22b. If {1457} => 22(3) cage = {589} => no {278} in 17(3) cage at R6C6
22c. If {2348/2357/2456} => no {278} in 17(3) cage at R6C6
22d. -> no {278} in 17(3) cage at R6C6 -> no 8 in R7C56 (8 of {368/458} must be in R6C6)
23. 17(3) cage at R6C6 = {179/269/359/368/458/467}
23a. {179} must be [971] and 7 of {467} must be in R6C6 -> no 7 in R7C6
At this stage I was struggling and Afmob gave me the hint that Mike had used a breakthrough step using 4 combined nonets. I ought to have thought to look for something larger than 2 combined nonets; I have used a L-shaped group of 3 nonets at least once in the past.
24. 45 rule on N3689 3 outies R146C6 = 1 innie R9C4 + 23 -> R146C6 = 24 = {789}, R9C4 = 1, R7C1 = 2 (step 5), clean-up: no 6 in R3C9 (step 8), no 7 in R7C5 (step 23), no 7 in R8C7
24a. Naked triple {789} in R146C6, locked for C6
24b. R5C1 + R6C12 = 22 = 9{58/67}, no 3, 9 locked for N4
25. Naked triple {789} in R1C126, locked for R1
26. 1 in N7 locked in R8C12, locked for R8, clean-up: no 8 in R7C7
26a. 11(3) cage in N7 = 1{37/46}, no 5,8
26b. R8C3 + R9C23 = 20 = {389/569/578} (cannot be {479} which clashes with 11(3) cage), no 4
27.
Deleted
28. 45 rule on C123 1 remaining outie R6C4 = 1 innie R1C3 + 2 -> R1C3 = {24
6}, R6C4 = {46
8}, clean-up: R4C1 = {35
7} (step 1)
29. R46C46 (step 12) = {2679/3489/3678/4578}
29a. Two of 7,8,9 must be in R46C6 -> no 8 in R6C4, clean-up: no 6 in R1C3 (step 28), no 7 in R4C1 (step 1)
29b. No combinations with R46C4 = {46} -> no 4 in R4C4
Step 29a inserted and original 29a renumbered.
Thanks Para for sorting out the errors in steps 27 and 28; I’d done my mental arithmetic the wrong way round in step 27 which, when corrected, was superseded by step 28.
30. R1C6 = R4C14 + 1 (step 2)
30a. R4C14 cannot total 6 -> no 7 in R1C6, clean-up: no 7 in R3C9 (step 8)
30b. 7 in R1 locked in R1C12 -> no 7 in R2C2
30c. 7 in C6 locked in R46C6, locked for N5
Para: "You could also have locked the 5 in R4C14 for R4 in this step".
31. 15(4) cage at R2C1 = {1356/2346}, 6 locked for N1, clean-up: no 1 in R23C3
32. Killer pair 2,4 in R1C3 and R23C3, locked for C3 and N1 -> R4C1 = 1, clean-up: no 8 in R7C2
33. Naked pair {24} in R45C2, locked for C2, clean-up: no 8 in R7C3
34. 8 in N7 locked in R8C3 + R9C23 = {389/578}, no 6
35. 6 in N7 locked in 11(3) cage = {146}
36. Grouped X-Wing for 6 in 15(4) cage at R2C1 and 11(3) cage in N7, locked for C12, clean-up: no 7 in 24(4) cage at R5C1 (step 24b)
Para: "That grouped x-wing is doing it the hard way as the 6 in C3 is locked for N4. If there's a workable grouped x-wing in which both cage are completely within one nonet (each) then there is always an easier locked candidates move available".
Agreed. I just happened to spot the grouped X-wing.
36a. Naked triple {589} in R5C1 + R6C12, locked for N4 -> R4C1 = 3, R1C3 = 2 (step 1), R6C4 = 4 (step 2
8), clean-up: no 5 in R23C3, no 5 in R9C7 (step 3)
37. 17(4) cage at R8C6 (step 22) = {2348} (only remaining combination) -> R9C5 = 8, clean-up: no 5 in 22(3) cage in N8
37a. 2 locked in R89C6, locked for C6
38. Naked triple {679} in 22(3) cage, locked for N8
[I missed 6 locked in R8C45 for R8 here. Fortunately it didn’t make much difference.]
39. 5 in N8 locked in R7C56, locked for R7, clean-up: no 7 in R7C23, no 4 in R8C7
39a. 17(3) cage at R6C6 (step 23) = {359/458}, no 7
40. R4C6 = 7 (hidden single in C6), R45C7 = 14 = {59/68}, no 4
41. Naked pair {34} in R23C3, locked for C3 -> R7C23 = [39], R7C4 = 7, clean-up: no 2,6 in R8C7
42. Naked pair {67} in R56C3, locked for C3 -> R9C23 = [75], R8C3 = 8, clean-up: no 1 in R7C7
43. Naked pair {45} in R7C56, locked for R7 and N8 -> R78C7 = [63], R9C7 = 4, R89C6 = [23], R6C9 = 3 (step 3), R9C1 = 6, R8C12 = [41], clean-up: no 5,7,8 in R3C8, no 8 in R45C7 (step 40)
44. Naked pair {15} in R23C1, locked for C1 and N1 -> R3C2 = 6, clean-up: no 5 in R3C7
45. Naked pair {89} in R12C2, locked for C2 and N1 -> R1C1 = 7, R6C2 = 5
46. R8C9 = 7 (cage sum), R8C8 = 5 (hidden single in R8)
47. R46C46 (step 29) = {4578} (only remaining combination) -> R4C4 = 5, R6C6 = 8, R1C6 = 9, R12C2 = [89], R45C7 = [95], R56C1 = [89], R1C7 = 1, R1C9 = 4, R3C9 = 9 (step 8), R9C89 = [92], clean-up: no 2,7 in R3C7, no 2 in R3C8
and the rest is naked singles