{"abstract":"An opportunity exactly at the line end is ignored.","category":"Typography line breaking","checks":8,"contract":"Input [url, width]. Break opportunities (no hyphen added): after \":\"; after \"//\" (never between its slashes); before a single \"/\"; before . - _ ? # % ~; before or after = and &. While the rest exceeds the width, break at the latest opportunity within width characters, else hard-break at width. Return lines.","evaluation_group":"w2-typography-line-breaking-url-breaking","failed_approach":"Excluding the first position after the start is a different window error.","family":"w2-typography-line-breaking-url-breaking-candidate-window","id":"FA-80331","implementations":{"attempt":{"sha256":"f9b3ea0a8b7417444c3fe53a309fa9d0c5c0f0d1bb7adc90b02a1b39718b1ebe","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    url, width = x\n    n = len(url)\n    ok = set()\n    for p in range(1, n):\n        a, b = url[p - 1], url[p]\n        if a == ':':\n            ok.add(p)\n        elif a == '/' and url[p - 2:p] == '//':\n            ok.add(p)\n        elif b == '/' and a != '/' and url[p + 1:p + 2] != '/':\n            ok.add(p)\n        elif b in '.-_?#%~':\n            ok.add(p)\n        elif a in '=&' or b in '=&':\n            ok.add(p)\n    lines = []\n    start = 0\n    while n - start > width:\n        cands = [p for p in ok if start + 1 < p <= start + width]\n        cut = max(cands) if cands else start + width\n        lines.append(url[start:cut])\n        start = cut\n    lines.append(url[start:])\n    return lines\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('regression: candidate window', ['file:///usr/local/share/doc', 4], ['file', ':///', 'usr', '/loc', 'al', '/sha', 're', '/doc']), ('regression: candidate window', ['https://example.com/path/to/page.html', 4], ['http', 's://', 'exam', 'ple', '.com', '/pat', 'h/to', '/pag', 'e', '.htm', 'l']), ('partial-repair probe', ['file:///usr/local/share/doc', 5], ['file:', '///', 'usr', '/loca', 'l', '/shar', 'e/doc']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('control layout', ['https://x.io/search?term=line%20break&lang=en', 15], ['https://x.io', '/search?term=', 'line%20break&', 'lang=en']), ('control layout', ['mailto:someone@example.com', 13], ['mailto:', 'someone@examp', 'le.com']), ('control layout', ['file:///usr/local/share/doc', 14], ['file:///usr', '/local/share', '/doc'])], [('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 11], ['https://sub', '.domain', '.example.co', '.uk/~user', '/page']), ('regression: candidate window', ['https://x.io/search?term=line%20break&lang=en', 5], ['https', '://x', '.io', '/sear', 'ch', '?term', '=line', '%20br', 'eak&', 'lang=', 'en']), ('partial-repair probe', ['https://sub.domain.example.co.uk/~user/page', 6], ['https:', '//sub', '.domai', 'n', '.examp', 'le.co', '.uk/', '~user', '/page']), ('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 4], ['http', 's://', 'sub', '.dom', 'ain', '.exa', 'mple', '.co', '.uk/', '~use', 'r', '/pag', 'e']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('control layout', ['mailto:someone@example.com', 7], ['mailto:', 'someone', '@exampl', 'e.com']), ('control layout', ['ftp://files.site.net/pub/file-name_v2.tar.gz', 5], ['ftp:', '//', 'files', '.site', '.net', '/pub', '/file', '-name', '_v2', '.tar', '.gz'])], [('regression: candidate window', ['https://x.io/search?term=line%20break&lang=en', 6], ['https:', '//x.io', '/searc', 'h?term', '=line', '%20bre', 'ak&', 'lang=', 'en']), ('regression: candidate window', ['https://w.org/a=b/c&d', 11], ['https://w', '.org/a=b/c&', 'd']), ('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 4], ['http', 's://', 'sub', '.dom', 'ain', '.exa', 'mple', '.co', '.uk/', '~use', 'r', '/pag', 'e']), ('regression: candidate window', ['https://example.com/path/to/page.html', 4], ['http', 's://', 'exam', 'ple', '.com', '/pat', 'h/to', '/pag', 'e', '.htm', 'l']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('control layout', ['https://t.co/AbCdEf', 7], ['https:', '//t.co', '/AbCdEf']), ('control layout', ['https://sub.domain.example.co.uk/~user/page', 9], ['https://', 'sub', '.domain', '.example', '.co.uk/', '~user', '/page'])], [('regression: candidate window', ['ftp://files.site.net/pub/file-name_v2.tar.gz', 12], ['ftp://files', '.site.net', '/pub/file', '-name_v2.tar', '.gz']), ('regression: candidate window', ['https://www.docs.io/a/b/c#sec-3', 5], ['https', '://', 'www', '.docs', '.io/a', '/b/c', '#sec', '-3']), ('regression: candidate window', ['https://x.io/search?term=line%20break&lang=en', 4], ['http', 's://', 'x.io', '/sea', 'rch', '?ter', 'm=', 'line', '%20b', 'reak', '&', 'lang', '=en']), ('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 4], ['http', 's://', 'sub', '.dom', 'ain', '.exa', 'mple', '.co', '.uk/', '~use', 'r', '/pag', 'e']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('control layout', ['https://sub.domain.example.co.uk/~user/page', 16], ['https://sub', '.domain.example', '.co.uk/~user', '/page']), ('control layout', ['mailto:someone@example.com', 16], ['mailto:', 'someone@example', '.com'])], [('regression: candidate window', ['ftp://files.site.net/pub/file-name_v2.tar.gz', 9], ['ftp://', 'files', '.site.net', '/pub/file', '-name_v2', '.tar.gz']), ('regression: candidate window', ['https://t.co/AbCdEf', 4], ['http', 's://', 't.co', '/AbC', 'dEf']), ('partial-repair probe', ['mailto:someone@example.com', 6], ['mailto', ':', 'someon', 'e@exam', 'ple', '.com']), ('partial-repair probe', ['https://sub.domain.example.co.uk/~user/page', 6], ['https:', '//sub', '.domai', 'n', '.examp', 'le.co', '.uk/', '~user', '/page']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('control layout', ['https://sub.domain.example.co.uk/~user/page', 16], ['https://sub', '.domain.example', '.co.uk/~user', '/page']), ('control layout', ['mailto:someone@example.com', 8], ['mailto:', 'someone@', 'example', '.com'])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"b0b5b0f8c427eb959accf86397e7d800d7a2b7f21e1950b3665e3d7c9b55cc55","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    url, width = x\n    n = len(url)\n    ok = set()\n    for p in range(1, n):\n        a, b = url[p - 1], url[p]\n        if a == ':':\n            ok.add(p)\n        elif a == '/' and url[p - 2:p] == '//':\n            ok.add(p)\n        elif b == '/' and a != '/' and url[p + 1:p + 2] != '/':\n            ok.add(p)\n        elif b in '.-_?#%~':\n            ok.add(p)\n        elif a in '=&' or b in '=&':\n            ok.add(p)\n    lines = []\n    start = 0\n    while n - start > width:\n        cands = [p for p in ok if start < p < start + width]\n        cut = max(cands) if cands else start + width\n        lines.append(url[start:cut])\n        start = cut\n    lines.append(url[start:])\n    return lines\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('regression: candidate window', ['file:///usr/local/share/doc', 4], ['file', ':///', 'usr', '/loc', 'al', '/sha', 're', '/doc']), ('regression: candidate window', ['https://example.com/path/to/page.html', 4], ['http', 's://', 'exam', 'ple', '.com', '/pat', 'h/to', '/pag', 'e', '.htm', 'l']), ('partial-repair probe', ['file:///usr/local/share/doc', 5], ['file:', '///', 'usr', '/loca', 'l', '/shar', 'e/doc']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('control layout', ['https://x.io/search?term=line%20break&lang=en', 15], ['https://x.io', '/search?term=', 'line%20break&', 'lang=en']), ('control layout', ['mailto:someone@example.com', 13], ['mailto:', 'someone@examp', 'le.com']), ('control layout', ['file:///usr/local/share/doc', 14], ['file:///usr', '/local/share', '/doc'])], [('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 11], ['https://sub', '.domain', '.example.co', '.uk/~user', '/page']), ('regression: candidate window', ['https://x.io/search?term=line%20break&lang=en', 5], ['https', '://x', '.io', '/sear', 'ch', '?term', '=line', '%20br', 'eak&', 'lang=', 'en']), ('partial-repair probe', ['https://sub.domain.example.co.uk/~user/page', 6], ['https:', '//sub', '.domai', 'n', '.examp', 'le.co', '.uk/', '~user', '/page']), ('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 4], ['http', 's://', 'sub', '.dom', 'ain', '.exa', 'mple', '.co', '.uk/', '~use', 'r', '/pag', 'e']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('control layout', ['mailto:someone@example.com', 7], ['mailto:', 'someone', '@exampl', 'e.com']), ('control layout', ['ftp://files.site.net/pub/file-name_v2.tar.gz', 5], ['ftp:', '//', 'files', '.site', '.net', '/pub', '/file', '-name', '_v2', '.tar', '.gz'])], [('regression: candidate window', ['https://x.io/search?term=line%20break&lang=en', 6], ['https:', '//x.io', '/searc', 'h?term', '=line', '%20bre', 'ak&', 'lang=', 'en']), ('regression: candidate window', ['https://w.org/a=b/c&d', 11], ['https://w', '.org/a=b/c&', 'd']), ('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 4], ['http', 's://', 'sub', '.dom', 'ain', '.exa', 'mple', '.co', '.uk/', '~use', 'r', '/pag', 'e']), ('regression: candidate window', ['https://example.com/path/to/page.html', 4], ['http', 's://', 'exam', 'ple', '.com', '/pat', 'h/to', '/pag', 'e', '.htm', 'l']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('control layout', ['https://t.co/AbCdEf', 7], ['https:', '//t.co', '/AbCdEf']), ('control layout', ['https://sub.domain.example.co.uk/~user/page', 9], ['https://', 'sub', '.domain', '.example', '.co.uk/', '~user', '/page'])], [('regression: candidate window', ['ftp://files.site.net/pub/file-name_v2.tar.gz', 12], ['ftp://files', '.site.net', '/pub/file', '-name_v2.tar', '.gz']), ('regression: candidate window', ['https://www.docs.io/a/b/c#sec-3', 5], ['https', '://', 'www', '.docs', '.io/a', '/b/c', '#sec', '-3']), ('regression: candidate window', ['https://x.io/search?term=line%20break&lang=en', 4], ['http', 's://', 'x.io', '/sea', 'rch', '?ter', 'm=', 'line', '%20b', 'reak', '&', 'lang', '=en']), ('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 4], ['http', 's://', 'sub', '.dom', 'ain', '.exa', 'mple', '.co', '.uk/', '~use', 'r', '/pag', 'e']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('control layout', ['https://sub.domain.example.co.uk/~user/page', 16], ['https://sub', '.domain.example', '.co.uk/~user', '/page']), ('control layout', ['mailto:someone@example.com', 16], ['mailto:', 'someone@example', '.com'])], [('regression: candidate window', ['ftp://files.site.net/pub/file-name_v2.tar.gz', 9], ['ftp://', 'files', '.site.net', '/pub/file', '-name_v2', '.tar.gz']), ('regression: candidate window', ['https://t.co/AbCdEf', 4], ['http', 's://', 't.co', '/AbC', 'dEf']), ('partial-repair probe', ['mailto:someone@example.com', 6], ['mailto', ':', 'someon', 'e@exam', 'ple', '.com']), ('partial-repair probe', ['https://sub.domain.example.co.uk/~user/page', 6], ['https:', '//sub', '.domai', 'n', '.examp', 'le.co', '.uk/', '~user', '/page']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('control layout', ['https://sub.domain.example.co.uk/~user/page', 16], ['https://sub', '.domain.example', '.co.uk/~user', '/page']), ('control layout', ['mailto:someone@example.com', 8], ['mailto:', 'someone@', 'example', '.com'])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"8fa70934d9fd25644583887ac36538e2c4d71b2415869051184882ef49934f7f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    url, width = x\n    n = len(url)\n    ok = set()\n    for p in range(1, n):\n        a, b = url[p - 1], url[p]\n        if a == ':':\n            ok.add(p)\n        elif a == '/' and url[p - 2:p] == '//':\n            ok.add(p)\n        elif b == '/' and a != '/' and url[p + 1:p + 2] != '/':\n            ok.add(p)\n        elif b in '.-_?#%~':\n            ok.add(p)\n        elif a in '=&' or b in '=&':\n            ok.add(p)\n    lines = []\n    start = 0\n    while n - start > width:\n        cands = [p for p in ok if start < p <= start + width]\n        cut = max(cands) if cands else start + width\n        lines.append(url[start:cut])\n        start = cut\n    lines.append(url[start:])\n    return lines\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('regression: candidate window', ['file:///usr/local/share/doc', 4], ['file', ':///', 'usr', '/loc', 'al', '/sha', 're', '/doc']), ('regression: candidate window', ['https://example.com/path/to/page.html', 4], ['http', 's://', 'exam', 'ple', '.com', '/pat', 'h/to', '/pag', 'e', '.htm', 'l']), ('partial-repair probe', ['file:///usr/local/share/doc', 5], ['file:', '///', 'usr', '/loca', 'l', '/shar', 'e/doc']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('control layout', ['https://x.io/search?term=line%20break&lang=en', 15], ['https://x.io', '/search?term=', 'line%20break&', 'lang=en']), ('control layout', ['mailto:someone@example.com', 13], ['mailto:', 'someone@examp', 'le.com']), ('control layout', ['file:///usr/local/share/doc', 14], ['file:///usr', '/local/share', '/doc'])], [('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 11], ['https://sub', '.domain', '.example.co', '.uk/~user', '/page']), ('regression: candidate window', ['https://x.io/search?term=line%20break&lang=en', 5], ['https', '://x', '.io', '/sear', 'ch', '?term', '=line', '%20br', 'eak&', 'lang=', 'en']), ('partial-repair probe', ['https://sub.domain.example.co.uk/~user/page', 6], ['https:', '//sub', '.domai', 'n', '.examp', 'le.co', '.uk/', '~user', '/page']), ('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 4], ['http', 's://', 'sub', '.dom', 'ain', '.exa', 'mple', '.co', '.uk/', '~use', 'r', '/pag', 'e']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('control layout', ['mailto:someone@example.com', 7], ['mailto:', 'someone', '@exampl', 'e.com']), ('control layout', ['ftp://files.site.net/pub/file-name_v2.tar.gz', 5], ['ftp:', '//', 'files', '.site', '.net', '/pub', '/file', '-name', '_v2', '.tar', '.gz'])], [('regression: candidate window', ['https://x.io/search?term=line%20break&lang=en', 6], ['https:', '//x.io', '/searc', 'h?term', '=line', '%20bre', 'ak&', 'lang=', 'en']), ('regression: candidate window', ['https://w.org/a=b/c&d', 11], ['https://w', '.org/a=b/c&', 'd']), ('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 4], ['http', 's://', 'sub', '.dom', 'ain', '.exa', 'mple', '.co', '.uk/', '~use', 'r', '/pag', 'e']), ('regression: candidate window', ['https://example.com/path/to/page.html', 4], ['http', 's://', 'exam', 'ple', '.com', '/pat', 'h/to', '/pag', 'e', '.htm', 'l']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('control layout', ['https://t.co/AbCdEf', 7], ['https:', '//t.co', '/AbCdEf']), ('control layout', ['https://sub.domain.example.co.uk/~user/page', 9], ['https://', 'sub', '.domain', '.example', '.co.uk/', '~user', '/page'])], [('regression: candidate window', ['ftp://files.site.net/pub/file-name_v2.tar.gz', 12], ['ftp://files', '.site.net', '/pub/file', '-name_v2.tar', '.gz']), ('regression: candidate window', ['https://www.docs.io/a/b/c#sec-3', 5], ['https', '://', 'www', '.docs', '.io/a', '/b/c', '#sec', '-3']), ('regression: candidate window', ['https://x.io/search?term=line%20break&lang=en', 4], ['http', 's://', 'x.io', '/sea', 'rch', '?ter', 'm=', 'line', '%20b', 'reak', '&', 'lang', '=en']), ('regression: candidate window', ['https://sub.domain.example.co.uk/~user/page', 4], ['http', 's://', 'sub', '.dom', 'ain', '.exa', 'mple', '.co', '.uk/', '~use', 'r', '/pag', 'e']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('control layout', ['https://sub.domain.example.co.uk/~user/page', 16], ['https://sub', '.domain.example', '.co.uk/~user', '/page']), ('control layout', ['mailto:someone@example.com', 16], ['mailto:', 'someone@example', '.com'])], [('regression: candidate window', ['ftp://files.site.net/pub/file-name_v2.tar.gz', 9], ['ftp://', 'files', '.site.net', '/pub/file', '-name_v2', '.tar.gz']), ('regression: candidate window', ['https://t.co/AbCdEf', 4], ['http', 's://', 't.co', '/AbC', 'dEf']), ('partial-repair probe', ['mailto:someone@example.com', 6], ['mailto', ':', 'someon', 'e@exam', 'ple', '.com']), ('partial-repair probe', ['https://sub.domain.example.co.uk/~user/page', 6], ['https:', '//sub', '.domai', 'n', '.examp', 'le.co', '.uk/', '~user', '/page']), ('double slash inside path', ['http://a.b.org/x//y?q=1&r=2', 10], ['http://a.b', '.org/x//y', '?q=1&r=2']), ('break after scheme', ['https://example.com/path/to/page.html', 8], ['https://', 'example', '.com', '/path/to', '/page', '.html']), ('control layout', ['https://sub.domain.example.co.uk/~user/page', 16], ['https://sub', '.domain.example', '.co.uk/~user', '/page']), ('control layout', ['mailto:someone@example.com', 8], ['mailto:', 'someone@', 'example', '.com'])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic toy typesetting model with integer widths and a stipulated rule set; it does not claim conformance to any engine. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-typography-line-breaking-url-breaking-candidate-window","generated_at":"2026-09-29T14:49:52.888741+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Line breaking decides where paragraphs wrap on screen and in print; a wrong decision point shifts every following line.","repair":"Include opportunities at start + width.","root_cause":"Candidates must be strictly inside the window.","sha256":"5bb419200a1480dfc7bae12534e6d223a67fcb852ce2c85f2abb21fbeac11b90","title":"URL line breaking: candidate window · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.889,"exit_code":1,"observations":[{"actual":["http://a.b",".org/x//y","?q=1&r=2"],"check":"double slash inside path","expected":["http://a.b",".org/x//y","?q=1&r=2"],"passed":true},{"actual":["file",":///","usr","/loc","al","/sha","re","/doc"],"check":"regression: candidate window","expected":["file",":///","usr","/loc","al","/sha","re","/doc"],"passed":true},{"actual":["http","s://","exam","ple",".com","/pat","h/to","/pag","e.ht","ml"],"check":"regression: candidate window","expected":["http","s://","exam","ple",".com","/pat","h/to","/pag","e",".htm","l"],"passed":false},{"actual":["file:","///","usr","/loca","l/sha","re","/doc"],"check":"partial-repair probe","expected":["file:","///","usr","/loca","l","/shar","e/doc"],"passed":false},{"actual":["https://","example",".com","/path/to","/page",".html"],"check":"break after scheme","expected":["https://","example",".com","/path/to","/page",".html"],"passed":true},{"actual":["https://x.io","/search?term=","line%20break&","lang=en"],"check":"control layout","expected":["https://x.io","/search?term=","line%20break&","lang=en"],"passed":true},{"actual":["mailto:","someone@examp","le.com"],"check":"control layout","expected":["mailto:","someone@examp","le.com"],"passed":true},{"actual":["file:///usr","/local/share","/doc"],"check":"control layout","expected":["file:///usr","/local/share","/doc"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"double slash inside path\", \"actual\": [\"http://a.b\", \".org/x//y\", \"?q=1&r=2\"], \"expected\": [\"http://a.b\", \".org/x//y\", \"?q=1&r=2\"], \"passed\": true}, {\"check\": \"regression: candidate window\", \"actual\": [\"file\", \":///\", \"usr\", \"/loc\", \"al\", \"/sha\", \"re\", \"/doc\"], \"expected\": [\"file\", \":///\", \"usr\", \"/loc\", \"al\", \"/sha\", \"re\", \"/doc\"], \"passed\": true}, {\"check\": \"regression: candidate window\", \"actual\": [\"http\", \"s://\", \"exam\", \"ple\", \".com\", \"/pat\", \"h/to\", \"/pag\", \"e.ht\", \"ml\"], \"expected\": [\"http\", \"s://\", \"exam\", \"ple\", \".com\", \"/pat\", \"h/to\", \"/pag\", \"e\", \".htm\", \"l\"], \"passed\": false}, {\"check\": \"partial-repair probe\", \"actual\": [\"file:\", \"///\", \"usr\", \"/loca\", \"l/sha\", \"re\", \"/doc\"], \"expected\": [\"file:\", \"///\", \"usr\", \"/loca\", \"l\", \"/shar\", \"e/doc\"], \"passed\": false}, {\"check\": \"break after scheme\", \"actual\": [\"https://\", \"example\", \".com\", \"/path/to\", \"/page\", \".html\"], \"expected\": [\"https://\", \"example\", \".com\", \"/path/to\", \"/page\", \".html\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"https://x.io\", \"/search?term=\", \"line%20break&\", \"lang=en\"], \"expected\": [\"https://x.io\", \"/search?term=\", \"line%20break&\", \"lang=en\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"mailto:\", \"someone@examp\", \"le.com\"], \"expected\": [\"mailto:\", \"someone@examp\", \"le.com\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"file:///usr\", \"/local/share\", \"/doc\"], \"expected\": [\"file:///usr\", \"/local/share\", \"/doc\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.313,"exit_code":1,"observations":[{"actual":["http://a",".b.org","/x//y?q=1","&r=2"],"check":"double slash inside path","expected":["http://a.b",".org/x//y","?q=1&r=2"],"passed":false},{"actual":["file","://","/","usr","/loc","al","/sha","re","/doc"],"check":"regression: candidate window","expected":["file",":///","usr","/loc","al","/sha","re","/doc"],"passed":false},{"actual":["http","s:","//","exam","ple",".com","/pat","h","/to","/pag","e",".htm","l"],"check":"regression: candidate window","expected":["http","s://","exam","ple",".com","/pat","h/to","/pag","e",".htm","l"],"passed":false},{"actual":["file:","///","usr","/loca","l","/shar","e/doc"],"check":"partial-repair probe","expected":["file:","///","usr","/loca","l","/shar","e/doc"],"passed":true},{"actual":["https:","//","example",".com","/path","/to","/page",".html"],"check":"break after scheme","expected":["https://","example",".com","/path/to","/page",".html"],"passed":false},{"actual":["https://x.io","/search?term=","line%20break&","lang=en"],"check":"control layout","expected":["https://x.io","/search?term=","line%20break&","lang=en"],"passed":true},{"actual":["mailto:","someone@examp","le.com"],"check":"control layout","expected":["mailto:","someone@examp","le.com"],"passed":true},{"actual":["file:///usr","/local/share","/doc"],"check":"control layout","expected":["file:///usr","/local/share","/doc"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"double slash inside path\", \"actual\": [\"http://a\", \".b.org\", \"/x//y?q=1\", \"&r=2\"], \"expected\": [\"http://a.b\", \".org/x//y\", \"?q=1&r=2\"], \"passed\": false}, {\"check\": \"regression: candidate window\", \"actual\": [\"file\", \"://\", \"/\", \"usr\", \"/loc\", \"al\", \"/sha\", \"re\", \"/doc\"], \"expected\": [\"file\", \":///\", \"usr\", \"/loc\", \"al\", \"/sha\", \"re\", \"/doc\"], \"passed\": false}, {\"check\": \"regression: candidate window\", \"actual\": [\"http\", \"s:\", \"//\", \"exam\", \"ple\", \".com\", \"/pat\", \"h\", \"/to\", \"/pag\", \"e\", \".htm\", \"l\"], \"expected\": [\"http\", \"s://\", \"exam\", \"ple\", \".com\", \"/pat\", \"h/to\", \"/pag\", \"e\", \".htm\", \"l\"], \"passed\": false}, {\"check\": \"partial-repair probe\", \"actual\": [\"file:\", \"///\", \"usr\", \"/loca\", \"l\", \"/shar\", \"e/doc\"], \"expected\": [\"file:\", \"///\", \"usr\", \"/loca\", \"l\", \"/shar\", \"e/doc\"], \"passed\": true}, {\"check\": \"break after scheme\", \"actual\": [\"https:\", \"//\", \"example\", \".com\", \"/path\", \"/to\", \"/page\", \".html\"], \"expected\": [\"https://\", \"example\", \".com\", \"/path/to\", \"/page\", \".html\"], \"passed\": false}, {\"check\": \"control layout\", \"actual\": [\"https://x.io\", \"/search?term=\", \"line%20break&\", \"lang=en\"], \"expected\": [\"https://x.io\", \"/search?term=\", \"line%20break&\", \"lang=en\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"mailto:\", \"someone@examp\", \"le.com\"], \"expected\": [\"mailto:\", \"someone@examp\", \"le.com\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"file:///usr\", \"/local/share\", \"/doc\"], \"expected\": [\"file:///usr\", \"/local/share\", \"/doc\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.069,"exit_code":0,"observations":[{"actual":["http://a.b",".org/x//y","?q=1&r=2"],"check":"double slash inside path","expected":["http://a.b",".org/x//y","?q=1&r=2"],"passed":true},{"actual":["file",":///","usr","/loc","al","/sha","re","/doc"],"check":"regression: candidate window","expected":["file",":///","usr","/loc","al","/sha","re","/doc"],"passed":true},{"actual":["http","s://","exam","ple",".com","/pat","h/to","/pag","e",".htm","l"],"check":"regression: candidate window","expected":["http","s://","exam","ple",".com","/pat","h/to","/pag","e",".htm","l"],"passed":true},{"actual":["file:","///","usr","/loca","l","/shar","e/doc"],"check":"partial-repair probe","expected":["file:","///","usr","/loca","l","/shar","e/doc"],"passed":true},{"actual":["https://","example",".com","/path/to","/page",".html"],"check":"break after scheme","expected":["https://","example",".com","/path/to","/page",".html"],"passed":true},{"actual":["https://x.io","/search?term=","line%20break&","lang=en"],"check":"control layout","expected":["https://x.io","/search?term=","line%20break&","lang=en"],"passed":true},{"actual":["mailto:","someone@examp","le.com"],"check":"control layout","expected":["mailto:","someone@examp","le.com"],"passed":true},{"actual":["file:///usr","/local/share","/doc"],"check":"control layout","expected":["file:///usr","/local/share","/doc"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"double slash inside path\", \"actual\": [\"http://a.b\", \".org/x//y\", \"?q=1&r=2\"], \"expected\": [\"http://a.b\", \".org/x//y\", \"?q=1&r=2\"], \"passed\": true}, {\"check\": \"regression: candidate window\", \"actual\": [\"file\", \":///\", \"usr\", \"/loc\", \"al\", \"/sha\", \"re\", \"/doc\"], \"expected\": [\"file\", \":///\", \"usr\", \"/loc\", \"al\", \"/sha\", \"re\", \"/doc\"], \"passed\": true}, {\"check\": \"regression: candidate window\", \"actual\": [\"http\", \"s://\", \"exam\", \"ple\", \".com\", \"/pat\", \"h/to\", \"/pag\", \"e\", \".htm\", \"l\"], \"expected\": [\"http\", \"s://\", \"exam\", \"ple\", \".com\", \"/pat\", \"h/to\", \"/pag\", \"e\", \".htm\", \"l\"], \"passed\": true}, {\"check\": \"partial-repair probe\", \"actual\": [\"file:\", \"///\", \"usr\", \"/loca\", \"l\", \"/shar\", \"e/doc\"], \"expected\": [\"file:\", \"///\", \"usr\", \"/loca\", \"l\", \"/shar\", \"e/doc\"], \"passed\": true}, {\"check\": \"break after scheme\", \"actual\": [\"https://\", \"example\", \".com\", \"/path/to\", \"/page\", \".html\"], \"expected\": [\"https://\", \"example\", \".com\", \"/path/to\", \"/page\", \".html\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"https://x.io\", \"/search?term=\", \"line%20break&\", \"lang=en\"], \"expected\": [\"https://x.io\", \"/search?term=\", \"line%20break&\", \"lang=en\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"mailto:\", \"someone@examp\", \"le.com\"], \"expected\": [\"mailto:\", \"someone@examp\", \"le.com\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"file:///usr\", \"/local/share\", \"/doc\"], \"expected\": [\"file:///usr\", \"/local/share\", \"/doc\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}