That is documented do:
and also to perform certain checks on the code inside the routine: namely, it can forbid assignments to the parameter.
That is not in conflict with the rest of the doc.
Here is another bit from that doc:
Specifying a parameter as Constant is giving the compiler a hint that the contents of the parameter will not be changed by the called routine
There is a difference between "assignments to the parameter" (changing it directly)
and
"contents of the parameter will not be changed by the called routine" which is any change, including change by pointer hacks, change by calling other functions that change it, .....