SiliconCompiler can send a chip-design task to another machine, but a Cocotb testbench also runs Python that may exist only on the engineer's laptop. The framework now lets each task declare its Python source files and installed packages, so a remote worker knows what to carry before it starts the simulator.
The boundary is deliberately narrow. A Cocotb task names Cocotb and its test modules. A Verilator compile task names Cocotb because it links the library, but it doesn't claim to execute the user's tests. Tasks that run no user Python declare nothing. That distinction prevents the remote package from growing into an accidental copy of the developer's entire environment.
Electronic design automation (EDA) flows often call Python from inside a much larger tool invocation, which hides software dependencies until the remote job fails. If you maintain a distributed flow, declare the environment at the task boundary and add one test where a required package is absent. That failure will tell you whether the declaration is real metadata or only documentation.