Another Assassin where I'd got stuck and came back to it later, then finding the breakthrough as I've commented under step 16.
The key to this puzzle is clearly the interaction between the 15(4) cage at R5C9 and the 14(4) cage in N9, which I took some time to find. The first remark after manu's walkthrough is a neat piece of logic, which would give the first placement immediately by using a technically harder step.
The IOE in Ed's step 10 is neat! I've suggest by PM that it ought to be included as another IOE example in the Killer Techniques topic because it's simpler than the two already posted by Ed and Afmob.
My solving path was much more like Afmob's one than the other two although my later stages could probably a lot shorter if I'd remembered to use step 11 again after I'd fixed R2C4.
I'll rate A148 at Easy 1.25 to 1.25 since, although longer, it's about the same difficulty level as Afmob's walkthrough; that is, of course, ignoring the fact that I got stuck.
Here is my walkthrough.
Thanks Ed for your comments, particularly on step 18 where I've added a clarification and noted that I'd missed a combo elimination.Prelims
a) 13(2) cage in N3 = {49/58/67}, no 1,2,3
b) R34C5 = {18/27/36/45}, no 9
c) R3C89 = {39/48/57}, no 1,2,6
d) R4C67 = {17/26/35}, no 4,8,9
e) R6C34 = {49/58/67}, no 1,2,3
f) R67C5 = {16/25/34}, no 7,8,9
g) R7C12 = {12}, locked for R7 and N7, clean-up: no 5,6 in R6C5
h) 13(2) cage in N7 = {49/58/67}, no 3
i) 20(3) cage in N2 = {389/479/569/578}, no 1,2
j) R1C567 = {124}, locked for R1, clean-up: no 9 in R2C9
k) 20(3) cage in N5 = {389/479/569/578}, no 1,2
l) 19(3) cage in N6 = {289/379/469/478/568}, no 1
m) R9C345 = {489/579/678}, no 1,2,3
n) 14(4) cage in N9 = {1238/1247/1256/1346/2345}, no 9
1. 45 rule on N3 2 innies R13C7 = 5 = [14/23/41]
2. 45 rule on N7 2 innies R79C3 = 15 = {69/78}, no 3,4,5
2a. 13(2) cage in N7 = {49/58} (cannot be {67} which clashes with R79C3), no 6,7
2b. Killer pair 8,9 in R79C3 and 13(2) cage, locked for N7
3. 45 rule on N23 2 innies R2C4 + R3C5 = 7 = {16/25/34}, no 7,8,9, clean-up: no 1,2 in R4C5
3a. Killer triple 1,2,4 in R1C56 and R2C4 + R3C5, locked for N2
4. 45 rule on N78 2 innies R7C5 + R8C6 = 8 = [35/53/62], clean-up: no 3 in R6C5
5. 45 rule on R789 3 innies R7C578 = 14 = {347/356}, no 8,9, 3 locked for R7
6. 45 rule on N9 2 innies R7C78 = 1 outie R8C6 + 6
6a. Min R8C6 = 2 -> min R7C78 = 8 -> max R56C9 = 7, no 7,8,9
7. 45 rule on R89 2 outies R7C69 = 1 innie R8C4 + 11
7a. Max R7C69 = 17 -> max R8C4 = 6
8. 45 rule on C6789 1 innie R6C6 = 2 outies R18C5 + 3
8a. Min R18C5 = 3 -> min R6C6 = 6
8b. Max R18C5 = 6, no 6,7,8,9 in R8C5
9. 45 rule on C1234 2 outies R29C5 = 1 innie R4C4 + 12
9a. Max R29C5 = 17 -> max R4C4 = 5
9b. Min R4C4 = 3 -> min R29C5 = 15, no 3,4,5
10. 20(3) cage in N5 = {389/479/569/578}
10a. R4C4 = {345} -> no 3,4,5 in R5C5
11. 45 rule on N1 2 innies R3C23 = 1 outie R2C4 + 6
11a. Max R2C4 = 6 -> max R3C23 = 12, min R45C1 = 11, no 1
12. 45 rule on N69 3 outies R458C6 = 10 = {127/136/145/235}, no 8,9
13. Hidden killer pair 1,2 in R13C7 and 15(3) cage for N3 -> 15(3) cage must contain one of 1,2
13a. 15(3) cage in N3 = {159/168/258/267} (cannot be {249/348} which clash with R13C7, cannot be {357/456} which don’t contain 1 or 2), no 3,4
14. 15(4) cage at R5C9 = {1347/1356/2346} (cannot be {1257} which clashes with combinations of R7C578), CPE no 3 in R89C9
15. 9 in N9 locked in 25(4) cage at R8C6 = {2689/3589/3679/4579} (cannot be {1789} because R8C6 only contains 2,3,5), no 1
15a. 2 of {2689} must be in R8C6 -> no 2 in R8C78 + R9C7
16. 1,2 in N9 locked in 14(4) cage
16a. Hidden killer pair 1,2 in R56C9 and R89C9 for C9 -> R89C9 cannot contain both of 1,2 -> R9C8 = {12}
16b. Killer pair 1,2 in R56C9 and R89C9, locked for C9
16c. 14(4) cage = {1247/1256}, no 8
[I got stuck a couple of steps later until I found step 16a so I’ve done a small rework. With hindsight, I could have done step 21 next.]
17. 8,9 in N9 locked in 25(4) cage at R8C6 (step 15) = {2689/3589}, no 4,7
18. 17(3) cage at R7C3 = {179/269/278/368/467} (cannot be {359} which clashes with R13C4 because 20(3) cage at R1C4 must contain one of 3,5 in R13C4, cannot be {458} which clashes with R13C4 + R4C4), no 5
18a. 4 of {467} must be in R7C4 (R7C34 cannot be {67} which clashes with R7C578), no 4 in R8C4
[Ed pointed that that 17(3) cage cannot be {368} which clashes with R7C5 + R8C6. This would eliminate 3 from R8C4.]
19. 45 rule on R89 4 outies R7C3469 = 28 = {4789/5689}
19a. Hidden killer pair 8,9 in R7C34 and R7C6 for R7, R7C34 cannot contain both of 8,9 -> R7C6 = {89}, R7C34 must contain one of 8,9
19b. 17(3) cage at R7C3 (step 18) = {179/269/278/368} (cannot be {467} which doesn’t contain 8 or 9), no 4
19c. 1,2,3 only in R8C4 -> R8C4 = {123}
19d. 4,5 of R7C3469 only in R7C9 -> R7C9 = {45}
20. 14(4) cage in N9 (step 16c) = {1247/1256}
20a. R7C9 = {45} -> no 4,5 in R89C9
21. 15(4) cage at R5C9 (step 14) = {1347/1356} (cannot be {2346} which clashes with 14(4) cage in N9 which must have 4 or 6 in C9), no 2, 1 locked in R56C9, locked for C9 and N6, clean-up: no 7 in R4C6
21a. R9C8 = 1 (hidden single in N9)
22. 14(3) cage in N8 = {149/158/248} (cannot be {167/257/347/356} because R7C6 only contains 8,9, cannot be {239} which clashes with R7C5 + R8C6), no 3,6,7
22a. R7C6 = {89} -> no 8,9 in R9C6
22b. 1 of {158} must be in R8C5 -> no 5 in R8C5
23. Naked triple {124} in R168C5, locked for C5, clean-up: no 5,7,8 in R34C5, no 2,3,5,6 in R2C4 (step 3)
23a. Naked pair {36} in R34C5, locked for C5, clean-up: no 1,4 in R6C5
23b. R67C5 = [25], R7C9 = 4, R8C6 = 3 (step 4), clean-up: no 9 in R1C8, no 8 in R3C8, no 5,6 in R4C7, no 7 in R7C78 (step 5)
23c. Naked pair {36} in R7C78, locked for R7, N9 and 15(4) cage at R5C9, clean-up: no 9 in R9C3 (step 2)
23d. Naked pair {15} in R56C9, locked for C9 and N6, clean-up: no 8 in R1C8, no 7 in R3C8
23e. Naked pair {27} in R89C9, locked for C9, clean-up: no 6 in R1C8, no 5 in R3C8
24. R1C6 = 2 (hidden single in N2), R9C6 = 4, R8C5 = 1, R7C6 = 9 (step 22), R1C5 = 4, R2C4 = 1, R1C7 = 1, R3C7 = 4 (step 1), R8C4 = 2, R89C9 = [72], clean-up: no 8 in R3C9, no 9 in R8C1, no 6 in R9C3 (step 2)
25. Naked pair {39} in R3C89, locked for R3 and N3 -> R34C5 = [63], clean-up: no 5 in R4C6
25a. Naked pair {68} in R12C9, locked for C9 and N3 -> R4C9 = 9, R3C89 = [93]
25b. 2 in N3 locked in R2C78, locked for R2
26. R9C1 = 3, R9C4 = 6 (hidden singles in R9), clean-up: no 7 in R6C3
26a. R9C2 = 9 (hidden single in N7), R8C1 = 4
26b. Naked pair {56} in R8C23, locked for R8 -> R8C78 = [98], R9C7 = 5
26c. Naked pair {78} in R79C3, locked for C3, clean-up: no 5 in R6C4
27. R1C4 = 3 (hidden single in C4), R2C5 + R3C4 = 17 = [98], R7C34 = [87], R9C35 = [78], R5C5 = 7, R4C4 + R6C6 = 13 = [58], clean-up: no 5,6 in R6C3
27a. Naked pair {49} in R6C34, locked for R6
28. Naked pair {27} in R24C7, locked for C7
28a. Naked pair {36} in R67C7, locked for C7 -> R5C7 = 8
29. 4 in C8 locked in R45C8
29a. R4C9 = 9 -> R45C8 = 10 = {46}, locked for C8 and N6 -> R6C78 = [37], R1C8 = 5, R2C9 = 8, R1C9 = 6, R1C3 = 9, R2C78 = [72], R23C6 = [57], R2C1 = 6, R6C34 = [49], R2C23 = [43], R5C4 = 4, R45C8 = [46], R5C6 = 1, R4C67 = [62], R4C3 = 1, R6C12 = [56], R5C123 = [932], R4C2 = 8 (cage sum), R3C1 = 1 (cage sum)
and the rest is naked singles