Follow-up on #11663 (comment).
As currently specified:
ident(1) is valid but produces an invalid <ident>
ident(initial) is valid but produces an invalid <custom-ident>
ident(custom) is valid but produces an invalid <dashed-ident>
ident(none) is valid but produces an invalid <keyframes-name>
The result of ident(1) could be escaped but this does not work for 2-4, so it would be more consistent to always validate the first argument (at parse time).
I presume that 3-4 and similar cases should also be validated at parse time. calc(-1) is a valid <number [0,∞]> and is clamped at computed value time. I do not think anything similar can be done for ident().