Follow-ups from #21 #29

Closed
opened 2026-10-14 23:21:41 +03:00 by aep · 1 comment
Owner

Отложенные находки change web-app (PR #27, веб-приложение хаба на React). Источник: ревью задач плана (T.), финальное ревью ветки (M-n), наблюдения контроллера и основной сессии (O-n). Полные формулировки — в описании PR #27.

  • T1.1 — /app/assets/%00 → 500 вместо 404. Источник: ревью задачи 1 плана.
  • T1.4 — тест Content-Type не покрывает svg/png/ico/woff2/map. Источник: ревью задачи 1 плана.
  • T2.1 — canon.ts: localeCompare зависит от локали. Источник: ревью задачи 2 плана.
  • T2.2 — шрифты с fonts.googleapis.com (унаследовано из links.html, есть системные запасные; для работы без интернета держать локально). Источник: ревью задачи 2 плана.
  • T3.2 — 4xx на экране входа показан как «Хаб не отвечает». Источник: ревью задачи 3 плана.
  • T3.3 — тавтологичный тест 401; queryClient/queries без тестов. Источник: ревью задачи 3 плана.
  • T3.4 — token.test не проверяет removeItem при закрытом хранилище. Источник: ревью задачи 3 плана.
  • T3.5 — запоздавший 401 от старого токена разлогинит после нового входа. Источник: ревью задачи 3 плана.
  • T3.6 — нет интеграционного теста AuthError → LoginScreen. Источник: ревью задачи 3 плана.
  • T4.1 — тест «Задачи и обратно» без обратного перехода. Источник: ревью задачи 4 плана.
  • T4.2 — тест NotFound не проверяет ссылки. Источник: ревью задачи 4 плана.
  • T4.3 — App.Layout нужен только тесту. Источник: ревью задачи 4 плана.
  • T4.4 — два импорта из @testing-library/react. Источник: ревью задачи 4 плана.
  • T4.5 — theme.test без очистки атрибутов. Источник: ревью задачи 4 плана.
  • T5.1 — golden layout.clamp: 87 из 88 значений «unset». Источник: ревью задачи 5 плана.
  • T6.3 — util.ts без прямых тестов. Источник: ревью задачи 6 плана.
  • T7.1 — initialWho считает whoItems дважды. Источник: ревью задачи 7 плана.
  • T9.1 — colWidths() не проверяет, что значения — числа. Источник: ревью задачи 9 плана.
  • T9.3 — нет тестов toggleLane/moveLane/resetLayout/exportFileName/mode=all. Источник: ревью задачи 9 плана.
  • T9.4 — порядок импортов fromJson.ts. Источник: ревью задачи 9 плана.
  • T10.1 — лишний GET /batches после завершения пакета. Источник: ревью задачи 10 плана.
  • T10.3 — «Перечитать» и загрузка CSV сбрасывают событие «пакет выполняется». Источник: ревью задачи 10 плана.
  • T10.4 — ошибка снимка при показанном файле → «показаны прежние данные»; hasData:true для JSON. Источник: ревью задачи 10 плана.
  • T10.5 — тест M-1 «поздний ответ» может пройти вакуумно. Источник: ревью задачи 10 плана.
  • T10.6 — подхват пакета проверяет автора, но не тип refresh. Источник: ревью задачи 10 плана.
  • T11.1 — memo(Card) неэффективен. Источник: ревью задачи 11 плана.
  • T11.2 — requestAnimationFrame в DatesBar не отменяется. Источник: ревью задачи 11 плана.
  • T11.3 — нет теста перетаскивания дорожек. Источник: ревью задачи 11 плана.
  • T11.4 — слабые юнит-тесты I-2/I-3 (настоящая проверка — в e2e geometry). Источник: ревью задачи 11 плана.
  • T12.1 — onOpen() вызывается внутри updater setOpen. Источник: ревью задачи 12 плана.
  • T12.2 — writeFlag/writeHidden вызываются внутри updater. Источник: ревью задачи 12 плана.
  • T12.3 — useLayoutEffect без deps, --head-h не сбрасывается. Источник: ревью задачи 12 плана.
  • T12.4 — role=listbox без option в MultiSelect. Источник: ревью задачи 12 плана.
  • T13.1 — значение фильтра из адреса вне вариантов списка. Источник: ревью задачи 13 плана.
  • T14.2 — проверки гонок в тестах заметки на таймерах 20 мс. Источник: ревью задачи 14 плана.
  • T14.3 — статичный id у datalist. Источник: ревью задачи 14 плана.
  • T15.1 — geometry: проверка высоты карточек повторяет формулу. Источник: ревью задачи 15 плана.
  • T15.2 — тест растяжки без expect.poll, литерал 240. Источник: ревью задачи 15 плана.
  • T15.4 — порт 8791 продублирован. Источник: ревью задачи 15 плана.
  • T15.6 — хрупкость окружения e2e. Источник: ревью задачи 15 плана.
  • T16.1 — дубль import urllib.* в test_api.py. Источник: ревью задачи 16 плана.
  • M-3 — состояние доски теряется при переходе в карточку и обратно. Источник: финальное ревью #27.
  • M-5 — wheel пакета не содержит сборку приложения. Источник: финальное ревью #27.
  • O-1 — npm audit: 1 high в source-map-js, только dev-зависимость (--omit=dev — 0). Источник: наблюдение контроллера.
  • O-10 — карточка задачи: ссылки цвета браузера по умолчанию, не темы. Источник: наблюдение основной сессии (Playwright).
  • O-11 — карточка задачи: пустая таблица «Последние команды» без текста «команд нет». Источник: наблюдение основной сессии (Playwright).

🤖 Generated with Claude Code

Отложенные находки change web-app (PR #27, веб-приложение хаба на React). Источник: ревью задач плана (T<n>.<k>), финальное ревью ветки (M-n), наблюдения контроллера и основной сессии (O-n). Полные формулировки — в описании PR #27. - **T1.1** — `/app/assets/%00` → 500 вместо 404. Источник: ревью задачи 1 плана. - **T1.4** — тест Content-Type не покрывает svg/png/ico/woff2/map. Источник: ревью задачи 1 плана. - **T2.1** — `canon.ts`: `localeCompare` зависит от локали. Источник: ревью задачи 2 плана. - **T2.2** — шрифты с fonts.googleapis.com (унаследовано из links.html, есть системные запасные; для работы без интернета держать локально). Источник: ревью задачи 2 плана. - **T3.2** — 4xx на экране входа показан как «Хаб не отвечает». Источник: ревью задачи 3 плана. - **T3.3** — тавтологичный тест 401; `queryClient`/`queries` без тестов. Источник: ревью задачи 3 плана. - **T3.4** — `token.test` не проверяет `removeItem` при закрытом хранилище. Источник: ревью задачи 3 плана. - **T3.5** — запоздавший 401 от старого токена разлогинит после нового входа. Источник: ревью задачи 3 плана. - **T3.6** — нет интеграционного теста AuthError → LoginScreen. Источник: ревью задачи 3 плана. - **T4.1** — тест «Задачи и обратно» без обратного перехода. Источник: ревью задачи 4 плана. - **T4.2** — тест NotFound не проверяет ссылки. Источник: ревью задачи 4 плана. - **T4.3** — `App.Layout` нужен только тесту. Источник: ревью задачи 4 плана. - **T4.4** — два импорта из `@testing-library/react`. Источник: ревью задачи 4 плана. - **T4.5** — `theme.test` без очистки атрибутов. Источник: ревью задачи 4 плана. - **T5.1** — golden `layout.clamp`: 87 из 88 значений «unset». Источник: ревью задачи 5 плана. - **T6.3** — `util.ts` без прямых тестов. Источник: ревью задачи 6 плана. - **T7.1** — `initialWho` считает `whoItems` дважды. Источник: ревью задачи 7 плана. - **T9.1** — `colWidths()` не проверяет, что значения — числа. Источник: ревью задачи 9 плана. - **T9.3** — нет тестов `toggleLane`/`moveLane`/`resetLayout`/`exportFileName`/`mode=all`. Источник: ревью задачи 9 плана. - **T9.4** — порядок импортов `fromJson.ts`. Источник: ревью задачи 9 плана. - **T10.1** — лишний `GET /batches` после завершения пакета. Источник: ревью задачи 10 плана. - **T10.3** — «Перечитать» и загрузка CSV сбрасывают событие «пакет выполняется». Источник: ревью задачи 10 плана. - **T10.4** — ошибка снимка при показанном файле → «показаны прежние данные»; `hasData:true` для JSON. Источник: ревью задачи 10 плана. - **T10.5** — тест M-1 «поздний ответ» может пройти вакуумно. Источник: ревью задачи 10 плана. - **T10.6** — подхват пакета проверяет автора, но не тип refresh. Источник: ревью задачи 10 плана. - **T11.1** — `memo(Card)` неэффективен. Источник: ревью задачи 11 плана. - **T11.2** — `requestAnimationFrame` в `DatesBar` не отменяется. Источник: ревью задачи 11 плана. - **T11.3** — нет теста перетаскивания дорожек. Источник: ревью задачи 11 плана. - **T11.4** — слабые юнит-тесты I-2/I-3 (настоящая проверка — в e2e geometry). Источник: ревью задачи 11 плана. - **T12.1** — `onOpen()` вызывается внутри updater `setOpen`. Источник: ревью задачи 12 плана. - **T12.2** — `writeFlag`/`writeHidden` вызываются внутри updater. Источник: ревью задачи 12 плана. - **T12.3** — `useLayoutEffect` без deps, `--head-h` не сбрасывается. Источник: ревью задачи 12 плана. - **T12.4** — `role=listbox` без `option` в MultiSelect. Источник: ревью задачи 12 плана. - **T13.1** — значение фильтра из адреса вне вариантов списка. Источник: ревью задачи 13 плана. - **T14.2** — проверки гонок в тестах заметки на таймерах 20 мс. Источник: ревью задачи 14 плана. - **T14.3** — статичный id у `datalist`. Источник: ревью задачи 14 плана. - **T15.1** — geometry: проверка высоты карточек повторяет формулу. Источник: ревью задачи 15 плана. - **T15.2** — тест растяжки без `expect.poll`, литерал 240. Источник: ревью задачи 15 плана. - **T15.4** — порт 8791 продублирован. Источник: ревью задачи 15 плана. - **T15.6** — хрупкость окружения e2e. Источник: ревью задачи 15 плана. - **T16.1** — дубль `import urllib.*` в `test_api.py`. Источник: ревью задачи 16 плана. - **M-3** — состояние доски теряется при переходе в карточку и обратно. Источник: финальное ревью #27. - **M-5** — wheel пакета не содержит сборку приложения. Источник: финальное ревью #27. - **O-1** — `npm audit`: 1 high в `source-map-js`, только dev-зависимость (`--omit=dev` — 0). Источник: наблюдение контроллера. - **O-10** — карточка задачи: ссылки цвета браузера по умолчанию, не темы. Источник: наблюдение основной сессии (Playwright). - **O-11** — карточка задачи: пустая таблица «Последние команды» без текста «команд нет». Источник: наблюдение основной сессии (Playwright). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Owner

Все 46 пунктов разобраны в PR #33 (merge 835199d): 44 fixed, 2 rejected по решению владельца (M-5 — сборка в wheel; часть M-3 — хранение снимка доски между страницами, восстанавливается только прокрутка). Построчная таблица — в описании PR #33. Архив OpenSpec — PR #34 (55886bd). Найденные по ходу отложенные мелочи — в follow-up issue.

Все 46 пунктов разобраны в PR #33 (merge 835199d): 44 fixed, 2 rejected по решению владельца (M-5 — сборка в wheel; часть M-3 — хранение снимка доски между страницами, восстанавливается только прокрутка). Построчная таблица — в описании PR #33. Архив OpenSpec — PR #34 (55886bd). Найденные по ходу отложенные мелочи — в follow-up issue.
aep closed this issue 2026-10-15 09:23:13 +03:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aep/sdlc-hub#29
No description provided.