=== ЗАПУСК 1: эталон (ожидается 0 ошибок, код возврата 0) ===
$ python -X utf8 check_hreflang.py reference
check_hreflang: .
Коды: таблицы из C:\Users\Staurus\.claude\jobs\db95446f\tmp\hreflang\rag\E_methods\reference\data
Проверено файлов: 5 (html_head.html, http_headers.txt, sitemap-zh.xml, sitemap.xml, sitemap_index.xml)
Итого: страниц с разметкой 22, аннотаций 93; ERROR 0, WARN 0, INFO 0
код возврата: 0

=== ЗАПУСК 2: нарочно сломанная копия broken/ (ожидаются ошибки, код возврата 1) ===
$ python -X utf8 check_hreflang.py reference/broken
check_hreflang: broken
Коды: таблицы из C:\Users\Staurus\.claude\jobs\db95446f\tmp\hreflang\rag\E_methods\reference\data
Проверено файлов: 12 (html_head.html, html_nomarker.html, http_headers.txt, sitemap-amp.xml, sitemap-bytes.xml, sitemap-decl-enc.xml, sitemap-malformed.xml, sitemap-nodecl.xml, sitemap-rootns.xml, sitemap-zh.xml, sitemap.xml, sitemap_index.xml)
[ERROR] BAD_CODE  html_head.html:124  hreflang "es-419": числовой регион "419" (UN M.49, как es-419) Google не поддерживает  (правило: E-012 язык ISO 639-1 [+ скрипт ISO 15924] [+ регион ISO 3166-1 alpha-2])
[ERROR] BAD_CODE  html_head.html:139  hreflang "en-EU": "EU" зарезервирован, не назначен в ISO 3166-1 (EU/UN Google игнорирует)  (правило: E-012 язык ISO 639-1 [+ скрипт ISO 15924] [+ регион ISO 3166-1 alpha-2])
[ERROR] BAD_CODE  html_head.html:22  hreflang "en-UK": UK не код ISO 3166-1, для Великобритании GB (Google игнорирует UK)  (правило: E-012 язык ISO 639-1 [+ скрипт ISO 15924] [+ регион ISO 3166-1 alpha-2])
[ERROR] BAD_CODE  html_head.html:71  hreflang "de_DE": разделитель - дефис, а не подчёркивание  (правило: E-012 язык ISO 639-1 [+ скрипт ISO 15924] [+ регион ISO 3166-1 alpha-2])
[ERROR] BAD_CODE  sitemap.xml:83  hreflang "es-419": числовой регион "419" (UN M.49, как es-419) Google не поддерживает  (правило: E-012 язык ISO 639-1 [+ скрипт ISO 15924] [+ регион ISO 3166-1 alpha-2])
[ERROR] BAD_CODE  sitemap.xml:84  hreflang "en-UK": UK не код ISO 3166-1, для Великобритании GB (Google игнорирует UK)  (правило: E-012 язык ISO 639-1 [+ скрипт ISO 15924] [+ регион ISO 3166-1 alpha-2])
[ERROR] BAD_CODE  sitemap.xml:85  hreflang "fil": трёхбуквенный язык "fil" не поддерживается, только ISO 639-1  (правило: E-012 язык ISO 639-1 [+ скрипт ISO 15924] [+ регион ISO 3166-1 alpha-2])
[ERROR] BAD_CODE  sitemap.xml:86  hreflang "us": это код региона, а не языка; один регион указывать нельзя  (правило: E-012 язык ISO 639-1 [+ скрипт ISO 15924] [+ регион ISO 3166-1 alpha-2])
[ERROR] BAD_CODE  sitemap.xml:87  hreflang "en_US": разделитель - дефис, а не подчёркивание  (правило: E-012 язык ISO 639-1 [+ скрипт ISO 15924] [+ регион ISO 3166-1 alpha-2])
[ERROR] BAD_REL  http_headers.txt:25  [https://example.com/files/manual-de.pdf] у <https://example.com/files/manual-en.pdf> hreflang без rel="alternate"  (правило: E-010/E-011 rel="alternate" обязателен у hreflang-ссылки)
[ERROR] BAD_REL  sitemap.xml:102  [https://example.com/en/faq/] rel="canonical", нужно "alternate"  (правило: E-010/E-011 rel="alternate" обязателен у hreflang-ссылки)
[ERROR] CANONICAL_OTHER_LANG  html_head.html:52  [https://example.com/de-de/] canonical https://example.com/en/ - другая версия кластера  (правило: E-060/E-081 canonical указывает на другую языковую версию)
[ERROR] CANONICAL_OTHER_LANG  http_headers.txt:33  [https://example.com/files/manual-ru.pdf] Link canonical https://example.com/files/manual-en.pdf - другой URL  (правило: E-060/E-081 canonical указывает на другую языковую версию)
[ERROR] CANONICAL_OUTSIDE  html_head.html:37  [https://example.com/en-gb/] canonical не входит в hreflang-пары страницы  (правило: E-080/E-060 canonical не входит в пары hreflang)
[ERROR] CANONICAL_OUTSIDE  html_head.html:86  [https://example.com/] canonical https://example.com/start/ не равен странице и не входит в hreflang-пары  (правило: E-080/E-060 canonical не входит в пары hreflang)
[ERROR] CANONICAL_WITH_HREFLANG  html_head.html:137  <link rel="canonical" hreflang="en-GB">  (правило: E-061 rel=canonical с hreflang не работает; нужен rel=alternate)
[ERROR] CONFLICT  html_head.html:109  [https://example.com/en/docs/install/] hreflang="en-GB" указывает на https://example.com/en-gb/docs/install/ и на https://example.com/en-us/docs/install/  (правило: E-071 один и тот же hreflang указывает на разные URL)
[ERROR] CONFLICT  sitemap.xml:64  [https://example.com/en/blog/hello/] hreflang="ru" указывает на https://example.com/ru/blog/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82/ и на https://example.com/ru/blog/privet/  (правило: E-071 один и тот же hreflang указывает на разные URL)
[ERROR] ENCODING  sitemap-bytes.xml  файл не в UTF-8: 'utf-8' codec can't decode byte 0xfc in position 119: invalid start byte  (правило: E-021/E-030 sitemap в UTF-8)
[ERROR] ENCODING  sitemap-decl-enc.xml:1  в XML-декларации encoding="ISO-8859-1", нужен UTF-8  (правило: E-021/E-030 sitemap в UTF-8)
[ERROR] INDEX_LOC  sitemap_index.xml:10  <sitemap> без абсолютного <loc>: ""  (правило: E-027 loc в sitemapindex обязателен и абсолютен)
[ERROR] LINK_MIXED_ATTRS  html_head.html:107  [https://example.com/en/docs/install/] hreflang="en-US" совмещён с media в одном <link>  (правило: E-009 hreflang нельзя смешивать с media/type в одном <link>)
[ERROR] LINK_OUTSIDE_HEAD  html_head.html:92  [https://example.com/] <link hreflang="ru"> вне <head>  (правило: E-009 <link> должен быть внутри корректного <head>)
[ERROR] LINK_SYNTAX  http_headers.txt:32  ожидалась "<" перед URL, найдено: "https://example.com/files/extra.pdf; rel"  (правило: E-010/E-050 Link: <url>; rel="alternate"; hreflang="...")
[ERROR] MISSING_ATTR  sitemap.xml:98  [https://example.com/en/pricing/] xhtml:link без hreflang  (правило: E-011 xhtml:link: rel="alternate", hreflang и href обязательны)
[ERROR] MISSING_LOC  sitemap.xml:104  <url> без <loc>  (правило: E-011 в каждом <url> есть <loc>)
[ERROR] NOT_ABSOLUTE  html_head.html:56  href "/ru/" не полный URL (нужны https://хост/путь)  (правило: E-003/E-022 только полные URL со схемой и хостом)
[ERROR] NOT_ABSOLUTE  sitemap.xml:34  href "/ru/produkty/widget/" не полный URL (нужны https://хост/путь)  (правило: E-003/E-022 только полные URL со схемой и хостом)
[ERROR] NOT_ABSOLUTE  sitemap.xml:74  <loc> "//example.com/en/catalog/?color=red&size=m" не полный URL  (правило: E-003/E-022 только полные URL со схемой и хостом)
[ERROR] NO_PAGE_URL  html_nomarker.html:1  документ без метки URL и без canonical  (правило: E-009 адрес страницы неизвестен: нет метки URL и canonical)
[ERROR] NO_RETURN  html_head.html:107  https://example.com/en/docs/install/ -> https://example.com/en-us/docs/install/ (hreflang="en-US"), но https://example.com/en-us/docs/install/ не ссылается на https://example.com/en/docs/install/  (правило: E-005 нет обратной ссылки - разметка игнорируется)
[ERROR] NO_RETURN  html_head.html:40  https://example.com/en-gb/ -> https://example.com/ru/ (hreflang="ru"), но https://example.com/ru/ не ссылается на https://example.com/en-gb/  (правило: E-005 нет обратной ссылки - разметка игнорируется)
[ERROR] NO_RETURN  html_head.html:54  https://example.com/de-de/ -> https://example.com/en-gb/ (hreflang="en-GB"), но https://example.com/en-gb/ не ссылается на https://example.com/de-de/  (правило: E-005 нет обратной ссылки - разметка игнорируется)
[ERROR] NO_RETURN  html_head.html:71  https://example.com/ru/ -> https://example.com/de-de/ (hreflang="de_DE"), но https://example.com/de-de/ не ссылается на https://example.com/ru/  (правило: E-005 нет обратной ссылки - разметка игнорируется)
[ERROR] NO_RETURN  http_headers.txt:25  https://example.com/files/manual-de.pdf -> https://example.com/files/manual-en.pdf (hreflang="x-default"), но https://example.com/files/manual-en.pdf не ссылается на https://example.com/files/manual-de.pdf  (правило: E-005 нет обратной ссылки - разметка игнорируется)
[ERROR] NO_RETURN  sitemap.xml:41  https://example.com/de-de/produkte/widget/ -> https://example.com/en-gb/products/widget/ (hreflang="en-GB"), но https://example.com/en-gb/products/widget/ не ссылается на https://example.com/de-de/produkte/widget/  (правило: E-005 нет обратной ссылки - разметка игнорируется)
[ERROR] NO_RETURN  sitemap.xml:51  https://example.com/ru/produkty/widget/ -> https://example.com/en-gb/products/widget/ (hreflang="en-GB"), но https://example.com/en-gb/products/widget/ не ссылается на https://example.com/ru/produkty/widget/  (правило: E-005 нет обратной ссылки - разметка игнорируется)
[ERROR] NO_RETURN  sitemap.xml:63  https://example.com/en/blog/hello/ -> https://example.com/ru/blog/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82/ (hreflang="ru"), но https://example.com/ru/blog/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82/ не ссылается на https://example.com/en/blog/hello/  (правило: E-005 нет обратной ссылки - разметка игнорируется)
[ERROR] NO_RETURN  sitemap.xml:77  //example.com/en/catalog/?color=red&size=m -> https://example.com/ru/katalog/?color=red&size=m (hreflang="ru"), но https://example.com/ru/katalog/?color=red&size=m не ссылается на //example.com/en/catalog/?color=red&size=m  (правило: E-005 нет обратной ссылки - разметка игнорируется)
[ERROR] NO_SELF  html_head.html:38  [https://example.com/en-gb/] страница не перечисляет саму себя (html)  (правило: E-002 каждая версия перечисляет себя)
[ERROR] NO_SELF  sitemap.xml:49  [https://example.com/ru/produkty/widget/] страница не перечисляет саму себя (sitemap)  (правило: E-002 каждая версия перечисляет себя)
[ERROR] NO_SELF  sitemap.xml:76  [//example.com/en/catalog/?color=red&size=m] страница не перечисляет саму себя (sitemap)  (правило: E-002 каждая версия перечисляет себя)
[ERROR] NO_XHTML_NS_DECL  sitemap-nodecl.xml  в файле есть <xhtml:link>, но нет xmlns:xhtml  (правило: E-011 xmlns:xhtml="http://www.w3.org/1999/xhtml" обязателен)
[ERROR] ROOT_NS  sitemap-rootns.xml:2  корень <urlset> в пространстве "http://www.sitemaps.org/schemas/sitemap/0.84"  (правило: E-035 корень urlset/sitemapindex в пространстве sitemaps.org/schemas/sitemap/0.9)
[ERROR] TRAILING_SLASH  html_head.html:39  [https://example.com/en-gb/] href https://example.com/de-de, а страница в наборе - https://example.com/de-de/  (правило: E-005 href отличается от реального URL страницы слэшем: возврат не найдётся)
[ERROR] TRAILING_SLASH  sitemap.xml:33  [https://example.com/en-gb/products/widget/] href https://example.com/de-de/produkte/widget, а страница в наборе - https://example.com/de-de/produkte/widget/  (правило: E-005 href отличается от реального URL страницы слэшем: возврат не найдётся)
[ERROR] UNESCAPED_AMP  sitemap-amp.xml:4  сырой "&" (нужно &amp;): <loc>https://example.com/en/catalog/?color=red&size=m</loc>  (правило: E-023/E-031 & в XML пишется &amp;)
[ERROR] UNESCAPED_AMP  sitemap-amp.xml:5  сырой "&" (нужно &amp;): <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/catalog/?color=red&size=m"/>  (правило: E-023/E-031 & в XML пишется &amp;)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:13  [https://example.com/zh-hans/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:14  [https://example.com/zh-hans/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:15  [https://example.com/zh-hans/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:16  [https://example.com/zh-hans/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:20  [https://example.com/zh-hant/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:21  [https://example.com/zh-hant/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:22  [https://example.com/zh-hant/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:23  [https://example.com/zh-hant/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:27  [https://example.com/en/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:28  [https://example.com/en/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:29  [https://example.com/en/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] WRONG_XHTML_NS  sitemap-zh.xml:30  [https://example.com/en/about/] <link> в пространстве "http://www.w3.org/1999/xhtm", нужно http://www.w3.org/1999/xhtml  (правило: E-011 xhtml:link должен быть в пространстве http://www.w3.org/1999/xhtml)
[ERROR] XML_PARSE  sitemap-amp.xml  XML не well-formed (вероятно, из-за сырого &): not well-formed (invalid token): line 4, column 55  (правило: E-030 sitemap должен быть well-formed XML)
[ERROR] XML_PARSE  sitemap-malformed.xml  XML не well-formed: mismatched tag: line 5, column 2  (правило: E-030 sitemap должен быть well-formed XML)
[ERROR] X_DEFAULT_CLUSTER  html_head.html:138  кластер https://example.com/en-gb/docs/install/ ...: разные x-default https://example.com/en-us/docs/install/, https://example.com/en/docs/install/  (правило: E-071 (вывод) в кластере разные x-default; в справке Google единственность не прописана)
[ERROR] X_DEFAULT_CLUSTER  html_head.html:87  кластер https://example.com/ ...: разные x-default https://example.com/, https://example.com/en/  (правило: E-071 (вывод) в кластере разные x-default; в справке Google единственность не прописана)
[ERROR] X_DEFAULT_CLUSTER  sitemap.xml:40  кластер https://example.com/de-de/produkte/widget/ ...: разные x-default http://example.com/en/products/widget/, https://example.com/en-gb/products/widget/, https://example.com/en/products/widget/  (правило: E-071 (вывод) в кластере разные x-default; в справке Google единственность не прописана)
[ERROR] X_DEFAULT_MULTI  html_head.html:21  [https://example.com/en/] x-default указывает на https://example.com/, https://example.com/en/  (правило: E-071/E-008 на странице несколько x-default с разными URL)
[ERROR] X_DEFAULT_MULTI  sitemap.xml:21  [https://example.com/en/products/widget/] x-default указывает на https://example.com/en-gb/products/widget/, https://example.com/en/products/widget/  (правило: E-071/E-008 на странице несколько x-default с разными URL)
[WARN] CASE  html_head.html:140  hreflang "en-us": рекомендуемая запись "en-US"  (правило: E-012 Google регистр не различает; принято en-GB, zh-Hant, x-default)
[WARN] CASE  html_head.html:142  hreflang "X-Default": принято писать x-default строчными  (правило: E-012 Google регистр не различает; принято en-GB, zh-Hant, x-default)
[WARN] CASE  sitemap.xml:22  hreflang "en-gb": рекомендуемая запись "en-GB"  (правило: E-012 Google регистр не различает; принято en-GB, zh-Hant, x-default)
[WARN] DUP_ENTRY  html_head.html:70  [https://example.com/ru/] повтор hreflang="en" -> https://example.com/en/  (правило: E-011 одинаковая запись повторяется)
[WARN] DUP_ENTRY  sitemap.xml:50  [https://example.com/ru/produkty/widget/] повтор hreflang="en" -> https://example.com/en/products/widget/  (правило: E-011 одинаковая запись повторяется)
[WARN] DUP_ENTRY  sitemap.xml:91  [https://example.com/en/blog/hello/] повтор hreflang="en" -> https://example.com/en/blog/hello/  (правило: E-011 одинаковая запись повторяется)
[WARN] DUP_URL_ENTRY  sitemap.xml:89  <loc> https://example.com/en/blog/hello/ уже описан в строке 59  (правило: E-011 один loc описан в нескольких <url>)
[WARN] HTTP_SCHEME  html_head.html:122  href "http://example.com/en/docs/install/" на http  (правило: E-063 в hreflang и sitemap указывать HTTPS)
[WARN] HTTP_SCHEME  sitemap.xml:44  href "http://example.com/en/products/widget/" на http  (правило: E-063 в hreflang и sitemap указывать HTTPS)
[WARN] INDEX_LASTMOD  sitemap_index.xml:3  lastmod "01.10.2026" не W3C Datetime  (правило: E-028 lastmod в формате W3C Datetime)
[WARN] INDEX_REF  sitemap_index.xml:7  https://example.com/sitemap-missing.xml: файл sitemap-missing.xml рядом не найден  (правило: E-027 sitemap из индекса не найден рядом: проверить нельзя)
[WARN] MIXED_METHODS  html_head.html:21  [https://example.com/en/] размечена способами: html, sitemap  (правило: E-001/E-071 страница размечена несколькими способами: польза нулевая, риск конфликта)
[WARN] MIXED_METHODS  sitemap.xml:109  [https://example.com/en/] размечена способами: html, sitemap  (правило: E-001/E-071 страница размечена несколькими способами: польза нулевая, риск конфликта)
[WARN] MULTI_HOST  sitemap.xml  хосты в <loc>: example.com, www.example.de  (правило: E-033/E-029 в одном sitemap несколько хостов: нужна верификация и cross-submit)
[WARN] SET_DIFFERS  html_head.html:106  [https://example.com/en/docs/install/] набор отличается от [https://example.com/en-gb/docs/install/]; различающихся записей: 2, например hreflang="en-eu" -> https://example.com/en/docs/install/  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  html_head.html:122  [https://example.com/en-us/docs/install/] набор отличается от [https://example.com/en-gb/docs/install/]; различающихся записей: 7, например hreflang="en" -> http://example.com/en/docs/install/  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  html_head.html:21  [https://example.com/en/] набор отличается от [https://example.com/]; различающихся записей: 3, например hreflang="en-gb" -> https://example.com/en-gb/  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  html_head.html:38  [https://example.com/en-gb/] набор отличается от [https://example.com/]; различающихся записей: 3, например hreflang="de-de" -> https://example.com/de-de  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  html_head.html:53  [https://example.com/de-de/] набор отличается от [https://example.com/]; различающихся записей: 2, например hreflang="ru" -> /ru/  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  html_head.html:69  [https://example.com/ru/] набор отличается от [https://example.com/]; различающихся записей: 3, например hreflang="de-de" -> https://example.com/de-de/  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  http_headers.txt:18  [https://example.com/files/manual-en.pdf] набор отличается от [https://example.com/files/manual-de.pdf]; различающихся записей: 2, например hreflang="de-de" -> https://example.com/files/manual-de.pdf  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  http_headers.txt:32  [https://example.com/files/manual-ru.pdf] набор отличается от [https://example.com/files/manual-de.pdf]; различающихся записей: 1, например hreflang="en" -> https://example.com/files/manual-en.pdf  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  sitemap.xml:21  [https://example.com/en/products/widget/] набор отличается от [https://example.com/de-de/produkte/widget/]; различающихся записей: 3, например hreflang="x-default" -> http://example.com/en/products/widget/  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  sitemap.xml:31  [https://example.com/en-gb/products/widget/] набор отличается от [https://example.com/de-de/produkte/widget/]; различающихся записей: 6, например hreflang="de-de" -> https://example.com/de-de/produkte/widget  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  sitemap.xml:49  [https://example.com/ru/produkty/widget/] набор отличается от [https://example.com/de-de/produkte/widget/]; различающихся записей: 3, например hreflang="ru" -> https://example.com/ru/produkty/widget/  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  sitemap.xml:70  [https://example.com/ru/blog/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82/] набор отличается от [https://example.com/en/blog/hello/]; различающихся записей: 3, например hreflang="en" -> https://example.com/en/blog/hello/  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] SET_DIFFERS  sitemap.xml:81  [https://example.com/ru/katalog/?color=red&size=m] набор отличается от [//example.com/en/catalog/?color=red&size=m]; различающихся записей: 5, например hreflang="en-uk" -> https://example.com/x/1/  (правило: E-009/E-010/E-011 набор ссылок должен быть одинаков у всех версий (пропуск языков - осознанно, E-006))
[WARN] UNKNOWN_TARGET  html_head.html:122  [https://example.com/en-us/docs/install/] -> http://example.com/en/docs/install/ не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[WARN] UNKNOWN_TARGET  sitemap.xml:44  [https://example.com/de-de/produkte/widget/] -> http://example.com/en/products/widget/ не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[WARN] UNKNOWN_TARGET  sitemap.xml:64  [https://example.com/en/blog/hello/] -> https://example.com/ru/blog/privet/ не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[WARN] UNKNOWN_TARGET  sitemap.xml:76  [//example.com/en/catalog/?color=red&size=m] -> https://example.com/en/catalog/?color=red&size=m не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[WARN] UNKNOWN_TARGET  sitemap.xml:81  [https://example.com/ru/katalog/?color=red&size=m] -> https://example.com/en/catalog/?color=red&size=m не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[WARN] UNKNOWN_TARGET  sitemap.xml:83  [https://example.com/ru/katalog/?color=red&size=m] -> https://example.com/x/0/ не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[WARN] UNKNOWN_TARGET  sitemap.xml:84  [https://example.com/ru/katalog/?color=red&size=m] -> https://example.com/x/1/ не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[WARN] UNKNOWN_TARGET  sitemap.xml:85  [https://example.com/ru/katalog/?color=red&size=m] -> https://example.com/x/2/ не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[WARN] UNKNOWN_TARGET  sitemap.xml:86  [https://example.com/ru/katalog/?color=red&size=m] -> https://example.com/x/3/ не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[WARN] UNKNOWN_TARGET  sitemap.xml:87  [https://example.com/ru/katalog/?color=red&size=m] -> https://example.com/x/4/ не в проверяемом наборе  (правило: E-005 цель hreflang не входит в проверяемый набор, обратную ссылку не проверить)
[INFO] NO_URL_MARKER  html_nomarker.html:5  страница определена по canonical: https://example.com/en/y/  (правило: нет метки <!-- URL: --> : адрес страницы взят из canonical)
[INFO] NO_XDEFAULT  sitemap.xml:76  кластер из 2 страниц без x-default (//example.com/en/catalog/?color=red&size=m ...)  (правило: E-008 x-default рекомендован, не обязателен)
Итого: страниц с разметкой 20, аннотаций 88; ERROR 67, WARN 37, INFO 2
код возврата: 1

=== ЗАПУСК 3: лимиты (временные файлы: 50 001 <url> и файл 52 428 978 байт; в архив не кладутся) ===
$ python -X utf8 check_hreflang.py <tmp>/sitemap-50001.xml
check_hreflang: C:/Users/Staurus/AppData/Local/Temp/tmp.8hXg0aUgh2/sitemap-50001.xml
Коды: таблицы из C:\Users\Staurus\.claude\jobs\db95446f\tmp\hreflang\rag\E_methods\reference\data
Проверено файлов: 1 (sitemap-50001.xml)
[ERROR] LIMIT_URLS  sitemap-50001.xml  50001 <url> > 50000  (правило: E-020 не больше 50 000 URL в файле)
Итого: страниц с разметкой 0, аннотаций 0; ERROR 1, WARN 0, INFO 0
код возврата: 1
$ python -X utf8 check_hreflang.py <tmp>/sitemap-big.xml
check_hreflang: C:/Users/Staurus/AppData/Local/Temp/tmp.8hXg0aUgh2/sitemap-big.xml
Коды: таблицы из C:\Users\Staurus\.claude\jobs\db95446f\tmp\hreflang\rag\E_methods\reference\data
Проверено файлов: 1 (sitemap-big.xml)
[ERROR] LIMIT_BYTES  sitemap-big.xml  размер 52428978 байт > 52428800  (правило: E-020 не больше 50 МБ в файле)
Итого: страниц с разметкой 0, аннотаций 0; ERROR 1, WARN 0, INFO 0
код возврата: 1


=== ПРОВЕРКА ПОКРЫТИЯ: каждая поломка из broken/MANIFEST.txt имеет в выводе запуска 2 строку с тем же кодом и файлом ===
BREAK-01  OK   NO_SELF                  html_head.html         /en-gb/ не перечисляет себя
BREAK-02  OK   NO_RETURN                html_head.html         /en-gb/ ссылается на /ru/, а /ru/ на /en-gb/ - нет
BREAK-03  OK   NOT_ABSOLUTE             html_head.html         /de-de/ ссылается на /ru/ относительным URL
BREAK-04  OK   BAD_CODE                 html_head.html         en-UK вместо en-GB (страница /en/)
BREAK-05  OK   BAD_CODE                 html_head.html         de_DE с подчёркиванием (/ru/)
BREAK-06  OK   BAD_CODE                 html_head.html         es-419 (числовой регион) вместо en-GB
BREAK-07  OK   BAD_CODE                 html_head.html         en-EU: EU зарезервирован, Google игнорирует
BREAK-08  OK   CASE                     html_head.html         en-us и X-Default в нестандартном регистре
BREAK-09  OK   HTTP_SCHEME              html_head.html         docs/en-us ссылается на en по http
BREAK-10  OK   CANONICAL_OTHER_LANG     html_head.html         canonical немецкой страницы ведёт на английскую
BREAK-11  OK   CANONICAL_WITH_HREFLANG  html_head.html         rel=canonical с атрибутом hreflang
BREAK-12  OK   LINK_OUTSIDE_HEAD        html_head.html         hreflang-ссылка на ru внутри <body>
BREAK-13  OK   LINK_MIXED_ATTRS         html_head.html         hreflang вместе с media в одном <link>
BREAK-14  OK   CONFLICT                 html_head.html         en-GB указывает и на /en-gb/, и на /en-us/
BREAK-15  OK   DUP_ENTRY                html_head.html         /ru/ дважды ссылается на en
BREAK-16  OK   X_DEFAULT_MULTI          html_head.html         на /en/ два x-default с разными URL
BREAK-17  OK   TRAILING_SLASH           html_head.html         /en-gb/ ссылается на /de-de без слэша
BREAK-18  OK   CANONICAL_OUTSIDE        html_head.html         canonical страницы выбора языка ведёт вне кластера
BREAK-20  OK   X_DEFAULT_CLUSTER        html_head.html         x-default в кластере установки указывает на разные страницы
BREAK-21  OK   NO_PAGE_URL              html_nomarker.html     документ без метки URL и без canonical
BREAK-22  OK   NO_URL_MARKER            html_nomarker.html     документ без метки URL, адрес взят из canonical
BREAK-23  OK   BAD_REL                  http_headers.txt       hreflang без rel="alternate" в Link у de-PDF
BREAK-24  OK   NO_RETURN                http_headers.txt       en-PDF не перечисляет de-PDF, а de-PDF ссылается на en
BREAK-25  OK   SET_DIFFERS              http_headers.txt       набор Link у en-PDF отличается от остальных
BREAK-26  OK   LINK_SYNTAX              http_headers.txt       URL без угловых скобок в Link у ru-PDF
BREAK-27  OK   CANONICAL_OTHER_LANG     http_headers.txt       Link canonical у ru-PDF ведёт на en-PDF
BREAK-28  OK   CASE                     sitemap.xml            hreflang="en-gb" строчными
BREAK-29  OK   X_DEFAULT_MULTI          sitemap.xml            в widget/en два x-default с разными URL
BREAK-30  OK   NOT_ABSOLUTE             sitemap.xml            относительный href на ru в widget/en-gb
BREAK-31  OK   TRAILING_SLASH           sitemap.xml            widget/en-gb ссылается на de-de без слэша
BREAK-32  OK   HTTP_SCHEME              sitemap.xml            x-default на http в widget/de-de
BREAK-33  OK   NO_SELF                  sitemap.xml            widget/ru не перечисляет себя
BREAK-34  OK   DUP_ENTRY                sitemap.xml            widget/ru дважды ссылается на en
BREAK-35  OK   CONFLICT                 sitemap.xml            blog/en: hreflang ru ведёт на два разных URL
BREAK-36  OK   NO_RETURN                sitemap.xml            blog/ru не ссылается на blog/en ни как en, ни как x-default
BREAK-37  OK   NOT_ABSOLUTE             sitemap.xml            <loc> без схемы (//example.com/...) в catalog/en
BREAK-38  OK   NO_XDEFAULT              sitemap.xml            кластер catalog без x-default (INFO)
BREAK-39  OK   BAD_CODE                 sitemap.xml            es-419, en-UK, fil, us, en_US в catalog/ru (по одной строке на код)
BREAK-40  OK   DUP_URL_ENTRY            sitemap.xml            второй <url> с тем же <loc> blog/hello
BREAK-41  OK   MULTI_HOST               sitemap.xml            в sitemap loc на двух хостах (example.com и www.example.de)
BREAK-42  OK   MISSING_ATTR             sitemap.xml            xhtml:link без hreflang
BREAK-43  OK   BAD_REL                  sitemap.xml            xhtml:link rel="canonical"
BREAK-44  OK   MISSING_LOC              sitemap.xml            <url> без <loc>
BREAK-45  OK   MIXED_METHODS            sitemap.xml            страница /en/ размечена и в HTML, и в sitemap
BREAK-46  OK   UNESCAPED_AMP            sitemap-amp.xml        сырой & в <loc> и href
BREAK-47  OK   XML_PARSE                sitemap-amp.xml        файл не well-formed из-за сырого &
BREAK-48  OK   WRONG_XHTML_NS           sitemap-zh.xml         опечатка в пространстве имён xhtml
BREAK-49  OK   NO_XHTML_NS_DECL         sitemap-nodecl.xml     xhtml:link есть, xmlns:xhtml не объявлен
BREAK-50  OK   ENCODING                 sitemap-decl-enc.xml   в декларации encoding=ISO-8859-1
BREAK-51  OK   ENCODING                 sitemap-bytes.xml      в файле байт 0xFC (Latin-1), а не UTF-8
BREAK-52  OK   XML_PARSE                sitemap-malformed.xml  не закрыт <url>
BREAK-53  OK   ROOT_NS                  sitemap-rootns.xml     неверное пространство имён корня (sitemap/0.84)
BREAK-54  OK   INDEX_LASTMOD            sitemap_index.xml      lastmod 01.10.2026 не W3C Datetime
BREAK-55  OK   INDEX_REF                sitemap_index.xml      sitemap-missing.xml нет рядом
BREAK-56  OK   INDEX_LOC                sitemap_index.xml      <sitemap> без <loc>

Поломок в манифесте: 55, найдено: 55, не найдено: 0
Лимиты (запуск 3): LIMIT_URLS найден, LIMIT_BYTES найден
