In your code from lines 334-348 (https://github.com/AlvinWen428/FeatureCP/blob/71c1b1ffba742ba90729bcc97997973a6a3c0110/conformal/icp.py#L334)
you seem to iterate over the different step size validation coverages and simply choose the first index>tolerance which is greater than (1 - val_significance) * 100. This can lead to trivial bands.
Consider the case where your smallest step gives you 99% validation coverage. By the current logic, you will choose the index as your step size and will thus get a trivial band.
In your code from lines 334-348 (https://github.com/AlvinWen428/FeatureCP/blob/71c1b1ffba742ba90729bcc97997973a6a3c0110/conformal/icp.py#L334) you seem to iterate over the different step size validation coverages and simply choose the first index>tolerance which is greater than (1 - val_significance) * 100. This can lead to trivial bands. Consider the case where your smallest step gives you 99% validation coverage. By the current logic, you will choose the index as your step size and will thus get a trivial band.
Am I missing something?