While investigating a silent merge conflict in #33135 I noticed that #32983 changed the descriptor Parse function signature from const std::string& descriptor to std::span<const char> descriptor.
Calling that new version of Parse with a string literal will trigger a confusing “Invalid characters in payload” due to the trailing “\0”.
It can be worked around by having (the test) wrap string literals in std::string(), but that’s easy to forget.
Using string_view is easier and more compact than (as a previous version of this PR did) checking for trailing \0.
Also add a test.