I think we’re thinking similar. Although, in the future state, I’d expect it to be something like
experiment:
...
runtime:
...
monty:
...
environment:
_target_: ${monty.class:tbp.monty.environments.HabitatEnvironment}
...
environment:
_target_: ${monty.class:tbp.monty.simulators.HabitatSimulator}
...
Monty would only receive the monty: ... portion of configuration to instantiate. Similarly, Environment would only receive the environment: ... (monty sibling one) portion of configuration to instantiate.
In my translation above, habitat_ipc.server part of the tree ends up being the simulator (there’s a separate discussion that on the environment side, environment and simulator are pretty much the same). The habitat_ipc.client part of the tree ends up being the HabitatEnvironment which is basically the interface to the enviroment (local or remote).
I think the general shape is like the above, although the details will probably look different once we get to that point.
Yes, this aligns with our intentions as well. Namespace things correctly before extracting them. That’s part of our plan for extracting experimental framing, for example.