We can narrow that down a bit.
T:\>pdfgrep "C[1-9][0-9]* " 22-007r1.pdf > constr22b.txt
T:\>grep "^ *[1-9][0-9]* *C[1-9][0-9]* " constr22b.txt | wc
663 10681 70120
Thus, the number of constraints is about 1 per page of the 22-007r1 draft.
As to the "shall"s, 663 are the responsibility of the compiler, leaving 1786 for the programmer to memorize and obey.