Action spaces#

Per the plan §3 contract, every env exposes Dict({"design": Dict({...}), "runtime": Dict({...})}). Either half may be empty (e.g. for SwmmRTCEnv the design Dict is empty).

Runtime (RTC) factories#

Applied every step via the appropriate engine setter.

Factory

Space

Engine surface

OrificeSetting

Box([0, 1]^n)

Controls.set_link_setting

Design (CIP) factories#

Applied once per episode, between SolverAdapter.open() and SolverAdapter.initialize().

Factory

Space

Engine surface

LinkRoughness

Box([low, high]^n)

Links.set_roughness

LinkLength

Box

Links.set_length

LinkDiameter

Box

Links.set_xsect (preserves shape, rewrites geom1)

NodeMaxDepth

Box

Nodes.set_max_depth

Additional factories ship as benchmark scenarios that need them come online.

Defensive clipping#

All factories np.clip the sampled value into bounds before calling the engine, so an agent that overshoots its action space doesn’t crash the simulator.