Only one sample is rendered per filter execution. Gray inputs affect components before the sample collection start in the rendering process (i.e. at initialization time). So we can't change gray inputs from sample to sample, only from full rendering to rendering and only manually (or via a batch rendering script). We don't have control scripts either, but even if we get that at some point, they will most likely not support per sample change (their connection context of ins and outs probably remain gray).
Also you have to consider the difference between inputs and outputs - it is not allowed to create a connection feedback:
Noise A -> Script A
Script A -> Noise A (input)
So the script that would take care of looping cannot define properties of one of its sources.
However some of you describe can be achieved indirectly. Variation can be thought of as different regions in the same source, and roughness can be thought of as scaling the source differently (not 100% correct though). Variation changes can be simulated by offsetting coordinates so each loop fetches from a different region in the source (assumes non seamless mode), and to increase "roughness" you multiply coordinates by a number > 1, to decrease you either divide or multiply by a number in range [0..1[. This assumes that you set roughness to 100 initially and found an initial scale level.
It gets a bit complicated, and it would be a great deal easier if a parent script component were allowed to configure inputs in its sources (by allocating them at initialization time, thus disabling them for traditional connections).