CGNAT is a bit of a sticky one given all the different clauses...
eg, some providers offer public IP on Business or Higher plans, but not the basic resi plan. some providers offer a free public if you ask for it. some providers charge for it.
You would almost need to have asterix's for each isp with footnotes to detail the exact condition.