nighthawk
nighthawk copied to clipboard
Consider compound StepControllers
oschaaf: I wonder if this might get simpler if it would be split into two step controllers, one for the exponential search, and one for the binary search. The consuming code would run a chain of step controllers, where any failure encountered along the way terminates it. On a side note, if configuration would also support that granularity, this would allow functionality which reminds me of ADSR :-)
I can also imagine a case where a step controller could have several modes and it might dynamically go back to a mode repeatedly based on feedback. In a case like that, we would want more custom transitions than a simple chain. So this might be the kind of custom things that a step controller should take responsibility for, beneath the overall step controller interface. We could implement a compound step controllers that does a simple chain of phases, and refactor this exponential search into it actually. Actually, in one of these compound step controller config protos, it could take an array of subsidiary step controller plugin TypedExtensionConfigs, and support calling any existing StepControllers through their interfaces. While consolidating IsConverged and IsDoomed (#466), we could add a status like ShouldTransitionToStepControllerWithName with a name string.
That makes sense to me, and sounds great. Thanks for sharing that vision here.