And that’s the real issue with the USB spec, almost everything is optional. This would be fine if cables were largely interchangeable, but they’re not.
What they should have are a handful of very well-defined tiers. Cables should maybe have three (basic, mid-range, high end), and ports can have a couple more.