But then GPS went off the rails and used a 10-bit number for count weeks, resulting in the 19-year week number roll-over (WNRO) problem. A few bits more would have solved a lot of problems..
Given that the first GPS satellites were launched in 1978, saving a few bits was standard practice at the time -- bits were expensive. Code of the time also often had two-digit years (the infamous Y2K problem).
It's 1500. The full data set is 37500 but you get there by spreading the larger message across several subframes. The full data set includes ephemeris data for all other satellites. It's precisely as long as it needs to be. This also means there is a built in fixed maximum number of satellites in constellation.
The time code gets 300 bits. It lasts 6 seconds and it's repeated every 30 seconds. Critically, it will always occur precisely on the top (:00 seconds) of the minute, or the bottom (:30 seconds) of the minute.
Interestingly, most of the time code is used for /correction/ parameters, as precise values for these are required to accurately calculate time. Satellites themselves drift in performance as they age so these parameters are not static for the lifetime of the deployment.
And, yes, I understand that time message gets sent at a much higher rate, hence the “it’s not that simple” part.
But I still have a hard time to believe that it would have been impossible to find 2 or 3 bits in the overall message to include the MSBs for the weeks. GPS units with built-in support for WNRO (due to permanent storage) would be able to ignore it, other units would be able to correct the epoch after 12 minutes (or a multiple in case of data corruption.)
It would have been possible but it would have required a trade off against the other data in the message; however, the goal of GPS is to provide accurate position data, not to provide convenient "calendar time" to individuals. Which is why they spent so lavishly on high precision correction parameters and so sparsely on low precision time of calendar parameters.
From the start, GPS has been used for accurate time keeping as well. And for later versions of the GPS protocol the week number was increased to 13 bits.
Ref: https://en.wikipedia.org/wiki/GPS_week_number_rollover