In computer science, there is a notion of "pure" functions. There are many definitions for the term, but the simplest one would be that they have no side-effects and are therefore stateless.
For example, a function that adds two vectors and returns the result is pure.
As a counter-example, a function that takes a number and subtracts it from the player's health is not pure, because it modifies the state of the player.
If Bolt was able to detect which functions are pure, it could remove the control input and output port on the associated invocation units. These are often a big source of confusion for new users.
For example, Input.GetButtonDown is pure, which means you don't need to connect its control ports and still safely retrieve the value output port. However, there is no clear indication of that in the UI, and new users will end up creating control connections that clutter their graph for no reason.
The problem is that C#/.NET language analysis and reflection does not provide a way to determine whether a method is pure. We could introduce a [Pure] attribute for custom user methods, but that wouldn't apply to built-in Unity methods, for example. It seems that the only way to support that would be to manually analyse each Unity method and store it in a "pure functions" bank, but that is incredibly tedious and prone to break on Unity version changes.
Customer support service by UserEcho