Skip to content

Close gap between URL writing and parser sections#905

Open
annevk wants to merge 1 commit intomainfrom
annevk/writing-parser-gap
Open

Close gap between URL writing and parser sections#905
annevk wants to merge 1 commit intomainfrom
annevk/writing-parser-gap

Conversation

@annevk
Copy link
Copy Markdown
Member

@annevk annevk commented Apr 14, 2026

  1. Domain-percent-encoded — error for percent-encoding in domains (e.g., exam%70le.com).
  2. Domain-non-strict — error when strict domain-to-ASCII would fail (e.g., _dmarc.example.com).
  3. Invalid-URL-unit — now also emitted for spaces in opaque paths (e.g., foo:bar baz).
  4. Writing grammar — non-special absolute URLs now allow opaque paths directly, fixing foo:a:b being incorrectly invalid.

Fixes #796. Fixes #797. Helps with #704.


💥 Error: 422 Unprocessable Entity 💥

PR Preview failed to build. (Last tried on Apr 14, 2026, 4:49 PM UTC).

More

PR Preview relies on a number of web services to run. There seems to be an issue with the following one:

🚨 Spec Generator - Spec Generator is the web service used to build bikeshed/ReSpec specs

🔗 Related URL

Error output:

[
    {
        "lineNum": "372:1",
        "messageType": "link",
        "text": "Multiple possible 'code point' dfn refs for '['/']'.\nArbitrarily chose https://w3c.github.io/i18n-glossary/#dfn-code-point\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:i18n-glossary; type:dfn; text:code point\nspec:infra; type:dfn; text:code point\n<a bs-line-number=\"372:1\" data-link-for=\"/\" data-link-type=\"dfn\" data-lt=\"code point\">code point</a>"
    },
    {
        "lineNum": "376:63",
        "messageType": "link",
        "text": "Multiple possible 'code point' dfn refs for '['/']'.\nArbitrarily chose https://w3c.github.io/i18n-glossary/#dfn-code-point\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:i18n-glossary; type:dfn; text:code point\nspec:infra; type:dfn; text:code point\n<a bs-line-number=\"376:63\" data-link-for=\"/\" data-link-type=\"dfn\" data-lt=\"code point\">code point</a>"
    },
    {
        "lineNum": "467:61",
        "messageType": "link",
        "text": "Multiple possible 'code points' dfn refs for '['/']'.\nArbitrarily chose https://w3c.github.io/i18n-glossary/#dfn-code-point\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:i18n-glossary; type:dfn; text:code point\nspec:infra; type:dfn; text:code point\n<a bs-line-number=\"467:61\" data-link-for=\"/\" data-link-type=\"dfn\" data-lt=\"code points\">code points</a>"
    },
    {
        "lineNum": "470:68",
        "messageType": "link",
        "text": "Multiple possible 'code points' dfn refs.\nArbitrarily chose https://w3c.github.io/i18n-glossary/#dfn-code-point\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:i18n-glossary; type:dfn; text:code point\nspec:infra; type:dfn; text:code point\n<a bs-line-number=\"470:68\" data-link-type=\"dfn\" data-lt=\"code points\">code points</a>"
    },
    {
        "lineNum": "554:42",
        "messageType": "link",
        "text": "Multiple possible 'code point' dfn refs for '['/']'.\nArbitrarily chose https://w3c.github.io/i18n-glossary/#dfn-code-point\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:i18n-glossary; type:dfn; text:code point\nspec:infra; type:dfn; text:code point\n<a bs-line-number=\"554:42\" data-link-for=\"/\" data-link-type=\"dfn\" data-lt=\"code point\">code point</a>"
    },
    {
        "lineNum": "588:1",
        "messageType": "link",
        "text": "Multiple possible 'scalar value' dfn refs for '['/']'.\nArbitrarily chose https://infra.spec.whatwg.org/#scalar-value\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:infra; type:dfn; text:scalar value\nspec:i18n-glossary; type:dfn; text:scalar value\n<a bs-line-number=\"588:1\" data-link-for=\"/\" data-link-type=\"dfn\" data-lt=\"scalar value\">scalar value</a>"
    },
    {
        "lineNum": "672:44",
        "messageType": "link",
        "text": "Multiple possible 'code points' dfn refs.\nArbitrarily chose https://w3c.github.io/i18n-glossary/#dfn-code-point\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:i18n-glossary; type:dfn; text:code point\nspec:infra; type:dfn; text:code point\n<a bs-line-number=\"672:44\" data-link-type=\"dfn\" data-lt=\"code points\">code points</a>"
    },
    {
        "lineNum": "986:62",
        "messageType": "link",
        "text": "Multiple possible 'ascii case-insensitive' dfn refs.\nArbitrarily chose https://infra.spec.whatwg.org/#ascii-case-insensitive\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:infra; type:dfn; text:ascii case-insensitive\nspec:i18n-glossary; type:dfn; text:ascii case-insensitive\n<a bs-line-number=\"986:62\" data-link-type=\"dfn\" data-lt=\"ASCII case-insensitive\">ASCII case-insensitive</a>"
    },
    {
        "lineNum": "1441:40",
        "messageType": "link",
        "text": "Multiple possible 'code point' dfn refs.\nArbitrarily chose https://w3c.github.io/i18n-glossary/#dfn-code-point\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:i18n-glossary; type:dfn; text:code point\nspec:infra; type:dfn; text:code point\n<a bs-line-number=\"1441:40\" data-link-type=\"dfn\" data-lt=\"code point\">code point</a>"
    },
    {
        "lineNum": "1444:63",
        "messageType": "link",
        "text": "Multiple possible 'code points' dfn refs.\nArbitrarily chose https://w3c.github.io/i18n-glossary/#dfn-code-point\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:i18n-glossary; type:dfn; text:code point\nspec:infra; type:dfn; text:code point\n<a bs-line-number=\"1444:63\" data-link-type=\"dfn\" data-lt=\"code points\">code points</a>"
    },
    {
        "lineNum": "1907:67",
        "messageType": "link",
        "text": "Multiple possible 'ascii case-insensitive' dfn refs.\nArbitrarily chose https://infra.spec.whatwg.org/#ascii-case-insensitive\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:infra; type:dfn; text:ascii case-insensitive\nspec:i18n-glossary; type:dfn; text:ascii case-insensitive\n<a bs-line-number=\"1907:67\" data-link-type=\"dfn\" data-lt=\"ASCII case-insensitive\">ASCII case-insensitive</a>"
    },
    {
        "lineNum": "1913:68",
        "messageType": "link",
        "text": "Multiple possible 'ascii case-insensitive' dfn refs.\nArbitrarily chose https://infra.spec.whatwg.org/#ascii-case-insensitive\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:infra; type:dfn; text:ascii case-insensitive\nspec:i18n-glossary; type:dfn; text:ascii case-insensitive\n<a bs-line-number=\"1913:68\" data-link-type=\"dfn\" data-lt=\"ASCII case-insensitive\">ASCII case-insensitive</a>"
    },
    {
        "lineNum": "2027:47",
        "messageType": "link",
        "text": "Multiple possible 'ascii case-insensitive' dfn refs.\nArbitrarily chose https://infra.spec.whatwg.org/#ascii-case-insensitive\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:infra; type:dfn; text:ascii case-insensitive\nspec:i18n-glossary; type:dfn; text:ascii case-insensitive\n<a bs-line-number=\"2027:47\" data-link-type=\"dfn\" data-lt=\"ASCII case-insensitive\">ASCII case-insensitive</a>"
    },
    {
        "lineNum": "2028:35",
        "messageType": "link",
        "text": "Multiple possible 'ascii case-insensitive' dfn refs.\nArbitrarily chose https://infra.spec.whatwg.org/#ascii-case-insensitive\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:infra; type:dfn; text:ascii case-insensitive\nspec:i18n-glossary; type:dfn; text:ascii case-insensitive\n<a bs-line-number=\"2028:35\" data-link-type=\"dfn\" data-lt=\"ASCII case-insensitive\">ASCII case-insensitive</a>"
    },
    {
        "lineNum": "2030:60",
        "messageType": "link",
        "text": "Multiple possible 'ascii case-insensitive' dfn refs.\nArbitrarily chose https://infra.spec.whatwg.org/#ascii-case-insensitive\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:infra; type:dfn; text:ascii case-insensitive\nspec:i18n-glossary; type:dfn; text:ascii case-insensitive\n<a bs-line-number=\"2030:60\" data-link-type=\"dfn\" data-lt=\"ASCII case-insensitive\">ASCII case-insensitive</a>"
    },
    {
        "lineNum": "2033:47",
        "messageType": "link",
        "text": "Multiple possible 'ascii case-insensitive' dfn refs.\nArbitrarily chose https://infra.spec.whatwg.org/#ascii-case-insensitive\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:infra; type:dfn; text:ascii case-insensitive\nspec:i18n-glossary; type:dfn; text:ascii case-insensitive\n<a bs-line-number=\"2033:47\" data-link-type=\"dfn\" data-lt=\"ASCII case-insensitive\">ASCII case-insensitive</a>"
    },
    {
        "lineNum": "2156:5",
        "messageType": "link",
        "text": "Multiple possible 'code points' dfn refs.\nArbitrarily chose https://w3c.github.io/i18n-glossary/#dfn-code-point\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:i18n-glossary; type:dfn; text:code point\nspec:infra; type:dfn; text:code point\n<a bs-line-number=\"2156:5\" data-link-type=\"dfn\" data-lt=\"code points\">code points</a>"
    },
    {
        "lineNum": "3570:65",
        "messageType": "link",
        "text": "Multiple possible 'TypeError' idl refs.\nArbitrarily chose https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-native-error-types-used-in-this-standard-typeerror\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:ecmascript; type:exception; text:TypeError\nspec:webidl; type:exception; text:TypeError\n{{TypeError}}"
    },
    {
        "lineNum": "3658:65",
        "messageType": "link",
        "text": "Multiple possible 'TypeError' idl refs.\nArbitrarily chose https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-native-error-types-used-in-this-standard-typeerror\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:ecmascript; type:exception; text:TypeError\nspec:webidl; type:exception; text:TypeError\n{{TypeError}}"
    },
    {
        "lineNum": "3973:4",
        "messageType": "link",
        "text": "Multiple possible 'TypeError' idl refs.\nArbitrarily chose https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-native-error-types-used-in-this-standard-typeerror\nTo auto-select one of the following refs, insert one of these lines into a <pre class=link-defaults> block:\nspec:ecmascript; type:exception; text:TypeError\nspec:webidl; type:exception; text:TypeError\n{{TypeError}}"
    },
    {
        "lineNum": null,
        "messageType": "failure",
        "text": "Did not generate, due to errors exceeding the allowed error level."
    }
]

This seems to be an issue with the Spec Generator service. PR Preview doesn't manage this service and so has no control over it. If you've identified an issue with it, you can report the issue to the maintainers of Spec Generator directly. Please be courteous. Thank you!

If you don't have enough information above to solve the error by yourself or if the issue doesn't seem related to Spec Generator, you can file an issue with PR Preview.

1. Domain-percent-encoded — error for percent-encoding in domains (e.g., exam%70le.com).
2. Domain-non-strict — error when strict domain-to-ASCII would fail (e.g., _dmarc.example.com).
3. Invalid-URL-unit — now also emitted for spaces in opaque paths (e.g., foo:bar baz).
4. Writing grammar — non-special absolute URLs now allow opaque paths directly, fixing foo:a:b being incorrectly invalid.

Fixes #796. Fixes #797. Helps with #704.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

"valid domain" does not match validation errors in the host parser "valid host string" does not allow for percent-encoding

1 participant