You can probably get pretty good tracking if you work out the precise offset and scalar for your module, kind of like a manual calibration.
As @antisvin says, for other platforms we provide a system calibration method, which means that patches will work across devices as long as the device is calibrated. But for gen we've not yet figured out how to do this.
The value coming from Parameter A (which is the summed CV and knob value) is between 0 and 1, corresponding to the full scale range of your CV input which is (with the attenuator fully clockwise) apprx 0 to 10V, with some small variation due to component tolerances et c.
To calibrate, you need to work out exactly what the offset and range is. Maybe a good starting place is to change the min and max directly in your
param e.g. to something like this:
[param @name A @min 0.01 @max 9.99]
This will give you output values in the range 0.01 to 9.99 that more closely follow the (roughly) 0-10V input CV range.
To calibrate it, I would first send a 1V CV and note the difference from your expected frequency: f0*2. This is your offset, adjust @min accordingly. Then send maybe 5V, which should produce
f0*2^5 = 8404.0192Hz. If it is too high or too low, adjust your @max accordingly.
Obviously turning either the big A knob or the CV attenuator will throw the tuning completely off. But you could also use the knobs to tune it. To do so, set
@min 0 @max 10, then use knob A to adjust the offset (slightly less than fully counter-clockwise) and attenuator A to adjust the range (slightly less than fully clockwise).