My own experience is pretty good, but not 100%. I burned a lot of CDs from 2001 to 2006 or so. Most were discarded at some point, but in late 2019 I ripped all that I had (39 CDs) with (GNU) ddrescue. The vast majority (77%) had some small amount of read errors. I was able to recover 99.88% on the worst disk (a brand I'm not familiar with: "D"). That disk was about 15 years old. That's pretty good, but not 100%.
This experience underlined to me the importance of having parity files in addition to the disks themselves. When I do a Blu-ray backup now (roughly once a year for the most important files), I also burn a DVD with par2 files.
Back in the 00s I didn't verify checksums, but as a test I checked zip, gz, and png files on the oldest disk I had (Jan. 2001, 100% recovered). Those files have internal checksums to detect corruption. All those files passed. I should probably perform the same check on the other disks.
Edit: I ran my script to check internal checksums on my disk image for my worst disk and 19 out of 635 files tested were corrupt, all png files. That is worse than the recovery percentage that ddrescue reports (97.01% valid vs. 99.88% recovered). That's roughly 0.2% lost per year.