We need an interface to support user-defined drivers for jobs with fixed hierarchies (e.g.):
void cells_to_process(framework_driver& driver) { ... }
PHLEX_REGISTER_DRIVER(d, config)
{
// We want to express a hierarchy that looks like:
//
// run
// │
// ├ subrun
// │ │
// │ └ spill
// │
// └ calibration_period
//
// This is done by specifying the hierarchy "paths".
d.driver(phlex::fixed_hierarchy{{"run", "subrun", "spill"},
{"run", "calibration_period"}},
cells_to_process);
}