Understanding B tree key deletion step from CLRS algorithm
You are probably overthinking it by thinking in terms of predecessor/successor nodes.

The rule just says, if the key to be deleted has both children at least capacity, you cannot take a predecessor(or successor) from its left(or right) child without violating the B-Tree property. So, we decide that we will merge it with both its children and push the decision to delete one level downward. That's it.

An intermediate step in 2c. would be where G is pushed downward and merged with [DE] and [JK] to give

[[AB] , [C], [DEGJK], [L], [NO]]

Now we can apply the algorithm to this node [DEGJK], and since it's a leaf node, step 1 will apply here and we can simply delete G from it.