Rather than introducing this linearization logic, let's just use a setting in the Adder object which lets us force a linear pipeline. Better to keep the logic internal to the pipeweld layer.
Originally posted by @nathanjmcdougall in #1595
This is an architectural issue. Before adding a function to a module we should consider multiple options, at least two. Functions should be placed in the module most close to the level of abstraction to which it belongs, not necessarily closest to where to is used. For example, functions which extend a utility module with some follow-up logic to be used in a higher-level module belong in the utility module, not the higher-level module in which it is used. Consult with import linter contracts.
We should update the agent config with these principles
Originally posted by @nathanjmcdougall in #1595
This is an architectural issue. Before adding a function to a module we should consider multiple options, at least two. Functions should be placed in the module most close to the level of abstraction to which it belongs, not necessarily closest to where to is used. For example, functions which extend a utility module with some follow-up logic to be used in a higher-level module belong in the utility module, not the higher-level module in which it is used. Consult with import linter contracts.
We should update the agent config with these principles