"using your method you may not reach the best set of hyperparameters."
Of course you are right. It is an efficiency trade-off of speed vs effectiveness. Whether this is worth it or not depends on the use-case. Here it is worth it, because the performance of the modelling is not sensitive to the parameter we search for first. Being in the ball-park is enough. And, for the second set of parameters, we need to do a full grid search (the parameters are booleans and strings); thus, this would drive the cost regarding repetition high.
cleanly split codebase into components with clear responsibilities
I agree and it was my first instinct as well. However, I am not sure this type of separation of concerns should be done on the level of ClearML if speed is a consideration. ClearML has quite a bit of overhead cost (in terms of runtime) for each pipeline component. I have looked into Kedro for implementing separation of concerns, but I am not yet sure how to combine Kedro with ClearML yet, as there is no official support from either of the other.
What do you think?