I don't handle humbling situations well, but I'm embarrassed to say it was my problem.
The tech came out this morning and said he was getting 50 Mbps up on his tester, so that pretty much narrowed the problem down to my equipment.
Since none of my equipment had changed, and I previously got good UL speeds on it, I ruled out the possibility of the problem being mine. I had forgotten that I enabled QoS a few months ago. I have an old Linksys E3000 router with the "latest" firmware installed. Turns out it has a bug where enabling QoS and leaving the Upstream Bandwidth set to "auto" caps the UL to 2 Mbps. Setting it to manual and over-provisioning at least 2 Mbps higher than your actual provisioned speed allows the full UL bandwidth.
I can't believe such a serious bug has survived at least 4 firmware revisions, and the very popular wifi router having never received an official fix. In fact, the major bug is barely mentioned online.
This embarrassment could have been avoided if only I had waited a few more days to address the problem, since a new router is being delivered today that would have resolved the issue.