Files
jellybit/openspec/changes/archive/2026-08-10-long-title-to-review/specs/review/spec.md
T
av b9f0929d0c layout: непомещающееся целевое имя уводит задачу в review вместо failed
- предел длины компонента (255 байт) проверяется в BuildLinks до первой
  операции с ФС: ни каталога, ни ссылки при отказе не создаётся
- причина пустого предпросмотра считается на показе (ReviewData.PreviewError)
  и печатается в панели действий и в карточке Telegram: у задачи без
  записанной причины взять её больше неоткуда
2026-08-10 12:16:44 +03:00

4.9 KiB

ADDED Requirements

Requirement: Панель действий при пустом предпросмотре называет причину

Панель действий SHALL называть причину, когда предпросмотр раскладки пуст, а не печатать общее «Подтверди источник, чтобы получить превью раскладки». Первой SHALL идти причина, посчитанная на показе — отказ построения этого предпросмотра: она относится к текущему эффективному плану, тогда как записанная при последнем переходе после смены источника устаревает, а у задачи, пришедшей в review без записанной причины, её нет вовсе. Записанная причина SHALL использоваться, когда посчитанной нет. Общий текст SHALL оставаться только там, где нет ни той, ни другой — источник действительно ещё не подтверждён.

Построение предпросмотра НЕ SHALL двигать состояние задачи: причина считается на чтении и наружу отдаётся значением, а не записью.

Те же две причины в том же порядке SHALL показываться и в карточке Telegram, когда плана в ней нет: обе поверхности ревью объясняют отсутствие команды «Применить» одинаково. Команда, упершаяся в непомещающееся имя, SHALL отвечать конфликтом, а не сбоем сервера.

Требование не трогает доступность команды «Применить»: она по-прежнему следует наличию предпросмотра. Речь о том, что человеку говорят, когда предпросмотра нет: пустой предпросмотр наступает и от коллизии путей, и от непомещающегося имени, и от невалидного плана, а текст сегодня во всех случаях один и в трёх из четырёх неверен.

Scenario: Непомещающееся имя названо в панели действий

  • GIVEN загрузка в review с причиной «имя не помещается», источник подтверждён, предпросмотр пуст
  • WHEN человек открывает экран ревью
  • THEN панель действий печатает причину отказа, а не предложение подтвердить источник, и команда «Применить» недоступна

Scenario: Причина не записана в состоянии — считается на показе

  • GIVEN загрузка пришла в review без записанной причины (нет матча), а её название не помещается в имя файла
  • WHEN человек открывает экран ревью
  • THEN панель действий называет длину имени, хотя в состоянии причины нет, и состояние при этом не меняется

Scenario: После смены источника показывается свежая причина

  • GIVEN загрузка в review с записанной причиной «имя не помещается», и человек выбрал другой источник
  • WHEN экран перестраивается
  • THEN показывается причина, посчитанная для нового плана, а не записанная при прошлом переходе

Scenario: Карточка Telegram называет ту же причину

  • GIVEN загрузка в review, плана в карточке нет
  • WHEN карточка отправляется или обновляется
  • THEN в ней есть строка с причиной, по которой план не построился

Scenario: Источник не подтверждён — текст прежний

  • GIVEN загрузка в review без записанной причины, без посчитанной и без предпросмотра
  • WHEN человек открывает экран ревью
  • THEN панель действий печатает общее предложение подтвердить источник