Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Node recommendations were easy because we just needed to check if a node could support the demands. Port recommendations are harder because we need to check if a node instance does support the demands, i.e. we need to check if the current workflow graph is a subset of all possible ontological workflow trees.
With the more complex surface energy example, I discovered that some of the transitive demands were not being passed in the old, simpler port recommendation. So here we really do the graph-to-graph comparison described above. It's working great, and you can even invalidate a bunch of upstream stuff on-the-fly by re-wiring it to the wrong sort of downstream input. However the already un-performant task of selecting a new node is even worse; from something like an 0.7s delay to something like a 1.5s delay. I want feature and functionality before efficiency, so let's keep this and make it more performant in a follow-up.