# 🐞 ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π° Ρ€Π΅Π²ΡŒΡŽ Ρ€Π°Π·Π΄Π°Ρ‡Ρƒ с Π½Π΅ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΌΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ вмСсто ΠΎΡ‚ΠΊΠ°Π·Π° - **Π’ΠΈΠΏ:** fix - **ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ:** Π―Π΄Ρ€ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° β€” Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΡƒΡ€ΠΎΠΆΠ°ΠΉ Ρ€Π΅Π²ΡŒΡŽ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ стык Β«Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β†’ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡƒΡ‚ΠΈΒ»: вторая послС ΠΏΠ΅Ρ€Π²ΠΎΠΉ дСшСвлС - **Π—Π°Ρ‡Π΅ΠΌ:** Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅ ~237 Π±Π°ΠΉΡ‚ роняСт раскладку Π² failed с тСкстом систСмной ошибки: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ Β«file name too longΒ» вмСсто ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π΅Π²ΡŒΡŽ, Π³Π΄Π΅ это чинится подсказкой Π”Π»ΠΈΠ½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΡƒΡ‚ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой (255 Π±Π°ΠΉΡ‚ Π½Π° имя, минус Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈ суффиксы β€” практичСский ΠΏΠΎΡ‚ΠΎΠ»ΠΎΠΊ ΠΎΠΊΠΎΠ»ΠΎ 237). НазваниС Ρ‚Π°ΠΊΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· ΠΌΠ΅Ρ‚Π°Π±Π°Π·Ρ‹ ΠΈΠ»ΠΈ ΠΈΠ· распознавания ΡˆΡ‚Π°Ρ‚Π½ΠΎ: Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ сСриалы с ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Π² имя ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ всСгда. БСгодня это Π½Π΅ провСряСтся Π½ΠΈΠ³Π΄Π΅: раскладка Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ `link(2)`, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ ядра `file name too long`, ΠΈ Π·Π°Π΄Π°Ρ‡Π° ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² `failed` с тСкстом систСмной ошибки Π² ΠΏΠΎΠ»Π΅ ошибки. Для Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° это Ρ‚ΡƒΠΏΠΈΠΊ β€” состояниС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅, Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° написана языком ядра. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ исход β€” **review**: Ρ‚Π°ΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΡ€Π°Π²ΠΈΡ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ подсказкой, Ρ€ΠΎΠ²Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Ρ†Π΅Π»ΠΈ. Коллизия ΡƒΠΆΠ΅ Ρ‚Π°ΠΊ ΠΈ обрабатываСтся, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ Π² систСмС Π΅ΡΡ‚ΡŒ ΠΈ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π° Π½Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΠ²Π΅Π½Π°Π½Ρ: Ρ€Π΅Π²ΡŒΡŽ измСнСния `tvdb-title-locale`, Π½Π°Ρ…ΠΎΠ΄ΠΊΠ° AD4 β€” [ΠΎΡ‚Ρ‡Ρ‘Ρ‚ Ρ‚Ρ€ΠΈΠ°ΠΆΠ°](../../openspec/changes/archive/2026-08-07-tvdb-title-locale/review/report.md). ПониТСна Ρ‚Π°ΠΌ Π½Π΅ ΠΏΠΎ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° ΠΏΠΎ принадлСТности ΠΊ Π΄ΠΈΡ„Ρ„Ρƒ: ΠΏΡƒΡ‚ΡŒ этим ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚. ## ВоспроизвСдСниС ΠžΡ€Π°ΠΊΡƒΠ» ΠΈΠ· ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°: ΠΏΠΎΠ΄Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π°Ρ‡Ρƒ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ имя Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° складываСтся Π² 250 Π±Π°ΠΉΡ‚. ``` n=250 β†’ Apply err=… file name too long, results=0 ``` НаблюдаСмо: Π·Π°Π΄Π°Ρ‡Π° Π² состоянии `failed`, Π² ΠΏΠΎΠ»Π΅ ошибки β€” тСкст систСмной ошибки, Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ссылки Π½Π΅ создано, ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π΅Π²ΡŒΡŽ Π½Π΅Ρ‚. ОТидаСмо: Π·Π°Π΄Π°Ρ‡Π° Π² `review` с Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ «имя Π½Π΅ помСщаСтся», раскладка Π½Π΅ Π½Π°Ρ‡Π°Ρ‚Π°, подсказка Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Ρ‡ΠΈΠ½ΠΈΡ‚ случай. ## Π—Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ - `internal/layout` β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π΄ΠΎ `link(2)` ΠΈ домСнная ошибка вмСсто систСмной; - `internal/worker` β€” Π²Π΅Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π·Π°Π΄Π°Ρ‡ΠΈ Π² `review` ΠΏΠΎ этой ошибкС, рядом с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Ρ†Π΅Π»ΠΈ; - `openspec/specs/file-layout/spec.md` β€” Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‰Π΅ΠΌΡΡ ΠΈΠΌΠ΅Π½ΠΈ; `state-reconciliation` β€” Ссли ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² `review` заказываСтся Ρ‚Π°ΠΌ; - тСкст ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ€Π΅Π²ΡŒΡŽ: Π²Π΅Π±-UI ΠΈ Telegram ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Ρ‘ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ. ## ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠΊΠΈ - Π Π°Π·Π΄Π°Ρ‡Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² 250 Π±Π°ΠΉΡ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² `review` с Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, Π° Π½Π΅ Π² `failed` с тСкстом ядра. **ΠžΡ€Π°ΠΊΡƒΠ»:** тСст Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ³ΠΎΠ½Π°, воспроизводящий случай ΠΈΠ· «ВоспроизвСдСния», β€” провСряСт состояниС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹. - Ни ΠΎΠ΄Π½Π° ссылка Π½Π΅ создана Π΄ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°: частичной раскладки Π±Π°Ρ‚Ρ‡Π° Π½Π΅ остаётся. **ΠžΡ€Π°ΠΊΡƒΠ»:** Ρ‚ΠΎΡ‚ ΠΆΠ΅ тСст β€” провСряСт, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ†Π΅Π»ΠΈ пуст. - ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, показанная Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ, Π½Π΅ содСрТит тСкста систСмной ошибки. **ΠžΡ€Π°ΠΊΡƒΠ»:** ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ тСста Π½Π° тСкст ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ плюс конвСнция [errors.md](../../docs/conventions/errors.md) β€” ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΉ ошибки Π½Π° внСшнСй Π³Ρ€Π°Π½ΠΈΡ†Π΅. - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π»ΠΈΠ½Ρ‹ стоит **Π΄ΠΎ** ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. **ΠžΡ€Π°ΠΊΡƒΠ»:** Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ„Ρ„Π° Π½Π° Ρ€Π΅Π²ΡŒΡŽ; тСст Π½Π° пустоту ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Ρ†Π΅Π»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚. ## Π Π°ΠΌΠΊΠΈ ΠžΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ нСльзя β€” это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Ρƒ Π½Π΅Π³ΠΎ для этого Π΅ΡΡ‚ΡŒ подсказка Π½Π° Ρ€Π΅Π²ΡŒΡŽ. ΠŸΡ€Π΅Π΄Π΅Π» Π΄Π»ΠΈΠ½Ρ‹ зависит ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы; Π·Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ 255 ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ константу Π½Π΅ стоит, Π½ΠΎ ΠΈ Π²Ρ‹ΡΡΠ½ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π» Ρƒ ядра Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ Ρ€Π°Π΄ΠΈ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ трСбуСтся β€” достаточно консСрвативного значСния с объяснСниСм, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ΠΎ.