diff --git a/docs/reviews/INDEX.md b/docs/reviews/INDEX.md index a5325925..96758cd0 100644 --- a/docs/reviews/INDEX.md +++ b/docs/reviews/INDEX.md @@ -1,9 +1,10 @@ # Индекс ревью -Генерируется `node scripts/reviews-index.mjs` (#635) — не редактировать руками. Документов: 281, issue: 139. Вердикт: 🟢 зелёный · 🟡 жёлтый · 🔴 красный · ⚪ не распознан (свободная форма старых документов). H/M — число High/Medium по строке вердикта или заголовкам находок. Файлы — пути, названные в находках; ищите по имени файла: `grep form-kit INDEX.md`. +Генерируется `node scripts/reviews-index.mjs` (#635) — не редактировать руками. Документов: 282, issue: 139. Вердикт: 🟢 зелёный · 🟡 жёлтый · 🔴 красный · ⚪ не распознан (свободная форма старых документов). H/M — число High/Medium по строке вердикта или заголовкам находок. Файлы — пути, названные в находках; ищите по имени файла: `grep form-kit INDEX.md`. | Issue | Документ | Этап · раунд | Вердикт | H | M | Находки | Файлы | |---|---|---|---|---:|---:|---|---| +| бета v1.79.0-beta.2 | [SHIP-REVIEW-v1.79.0-beta.2.md](SHIP-REVIEW-v1.79.0-beta.2.md) | пакетное ревью ship · — | ⚪ — | 0 | 0 | — | — | | бета v1.79.0-beta.1 | [SHIP-REVIEW-v1.79.0-beta.1.md](SHIP-REVIEW-v1.79.0-beta.1.md) | пакетное ревью ship · — | ⚪ — | 0 | 0 | — | — | | #775 | [CODE-REVIEW-775-r1.md](CODE-REVIEW-775-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — | | #772 | [CODE-REVIEW-772-r1.md](CODE-REVIEW-772-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — | diff --git a/docs/reviews/SHIP-REVIEW-v1.79.0-beta.2.md b/docs/reviews/SHIP-REVIEW-v1.79.0-beta.2.md new file mode 100644 index 00000000..0a211d45 --- /dev/null +++ b/docs/reviews/SHIP-REVIEW-v1.79.0-beta.2.md @@ -0,0 +1,110 @@ +# Пакетное ship-ревью v1.79.0-beta.2 + +Дата: 2026-10-02. Ревьюер: Codex, ручной разбор по разрешению владельца. + +## Материал и исключение + +Материал: `044f09a6a5eee277b3cdd4b3b1e9c1ef46232e79`, база +`v1.79.0-beta.1` (`dca0fd2876d318b84edb3d97889e19fb384b8139`). +Прочитаны все 13 ship-задач из детерминированного входа +[36965602182, attempt 3](https://github.com/Matysh/houseplan-card/actions/runs/36965602182). +SHA-256 `ship-issues.json`: `1c4cf2671f5b2dcc05b65dd8fc53a66909d6d306762dc98812e9169ab582d162`. +Патч-наборы в машинном блоке взяты из этого входа, не составлены вручную. + +Штатная модель дважды закончила до чтения кода: `is_error=true`, один ход, +нулевой расход, нет `structured_output`. Отдельный повтор model-job также +не дошёл до модели из-за отсутствующего входного артефакта новой попытки. +Явного сообщения об исчерпании лимита в доступном логе нет. Владелец отдельно +разрешил самостоятельное ship-ревью при таком отказе и продолжение выпуска. +Этот документ — результат ручного ревью, а не зелёный результат упавшего CI. + +## Итог + +High: 0 · Medium: 0 · Low: 0. Пакет допустим к бете при зелёном полном +Validate финального SHA. Ни один из 14 коммитов пакета не меняет `src/**`, +Python или конфигурацию пользователя. Изменения соответствуют инфраструктурному +скоупу своих ТЗ; выходов за механические рамки ship не обнаружено. + +## Разбор задач + +| Задача, коммит | Проверено чтением и исполнением | +|---|---| +| #708 `bcff8c715` | Снимок лестницы перенесён за окончание предыдущей отложенной записи. Тайм-аут делает AC красным, а не успешным. Строгое сравнение всей лестницы, размер больше метра и отсутствие новой истории сохранены. `smoke_stairs` входит в релизный локальный набор. | +| #712 `f56342479`, `07d90be28` | Ожидание языка и разложенного диалога заменяет фиксированные кадры; открытие через фасад реального действия. Замер тумблера ждёт окончания CSS-анимаций. Порог геометрии и встроенная отрицательная проба со старым `content-box` сохранены. | +| #715 `a4af5a200` | Перед пробой фона ожидаются маркеры завершённого режима и отсутствие анимаций. Цвета не подставляются в состояние продукта, прежние проверки белого листа и отличия View сохранены. На кандидате учтена последующая общая обёртка ожидания из #754. | +| #717 `445a9a0cd` | Автообслуживание выключено только в временных git-фикстурах, включая bare origin. `finally` остаётся у каждого теста; повтор удаления ограничен. Проверки ребейза, отказа на продуктовый конфликт и чистоты дерева не менялись. | +| #719 `84ed38e3d` | Требуется ровно ноль сдвинутых оверлеев — контракт после #713, а не удаление проверки. Сохраняются положительное число поднятых корней, все виды оверлеев и проёмов, геометрический кеш и отсутствие структурных пересборок. | +| #720 `9e1cc9127` | Из трёх бюджетов удалена только `viewToggleMs`, по записанному решению владельца. Сама метрика продолжает собираться. Лимиты загрузки, смены этажа и одиночной долгой задачи сохранены и защищены юнитом. | +| #721 `e00f62dca` | Вместо абсолютных миллисекунд считаются чтения контуров относительно одной сборки кладки на том же этаже. Есть защита от ослепшего счётчика; порог меньше двух сборок. Соседний тест по-прежнему проверяет точную площадь 4.32 и один вызов на пространство. | +| #722 `bbcc88caf` | До и после создания второй карточки считаются запросы именно файла локали, по URL pathname. Запросы подложки больше не дают ложный отказ; повтор локали по-прежнему меняет счётчик. | +| #733 `40607aa37` | Обе стороны `isMainModule` канонизируются `realpathSync`; отсутствующий путь и некорректный URL не бросают наружу. Дочерний Node проверяет обычный запуск, junction/симлинк и отсутствие запуска main у импортированной библиотеки. Проверено также на Windows. | +| #734 `b3dd9444b` | Кадры до щипка и до первой заливки исключаются согласно ТЗ. Нужны минимум три кадра внутри жеста; пустой набор и белый жест целиком не проходят. Белый кадр после первой заливки даёт отказ, в том числе после окончания жеста. Не изменён порог 1% белых пикселей. | +| #758 `5a49c8c32` | AC15 явно ждёт ленивый чанк через `withMoon`, а не зависит от запуска другого теста. Оракулы луны не изменены. Изолированный запуск `--test-name-pattern=#718` проходит 6/6. | +| #759 `b84465e54` | В обеих ширинах ожидаются отсутствие `aria-busy`, нужный `lang` и разложенный футер конкретного вида диалога. Тайм-аут 5 с с именованной ошибкой. Не меняются 36 имён проверок, пороги ширины и запас локализации. | +| #760 `86a301f61` | Ветка `issue/*` получает предупреждение и при полном запуске. Release на dev, полный dev, PR и расписание сохраняют strict в реальных входах workflow (`github.ref_name`; у PR — номер/merge). Полный Validate не отключается. | + +## Проверки и защитная сила + +- `npm run bundle:release`: typecheck, сборка и синхронизация кандидата прошли в WSL. +- `npm test`: 3540 тестов, 3510 passed, 30 skipped, 0 failed. Первые два + локальных запуска отказали только из-за промежуточного Git-индекса собранных + чанков: тест читает manifest из HEAD, а список tracked из индекса. Индекс + возвращён к HEAD без изменения рабочего дерева; полный повтор зелёный. +- `node --test test/windows-portability.test.mjs`: Windows, 7/7 passed; + тот же файл исполнен в полном Linux-наборе. +- `node --test --test-name-pattern=#718 test/moon.test.mjs`: WSL, 6/6 passed. +- Браузерные смоки WSL, каждый `node demo/smoke_<имя>.mjs`: 20/20 прошли: + `warm_mode_adoption`, `warm_dialogs`, `nav_persist`, `moon`, `moon_static`, + `moon_status`, `room_fill_transitions`, `floor_geometry_cache`, + `iso_floor_switch`, `isometric_contract`, `isometric_live_touch`, `stairs`, + `lazy_editor_chunk`, `space_card`, `device_hit_capsules`, + `dialog_polish_603`, `backdrop`, `german_locale`, `daycycle_layer_budget`, + `dialog_footer_width`. +- `npm run benchmark:isometric-stage3-dense`: прошёл наблюдаемый контракт, + включая отсутствие nudged overlays и структурных пересборок на живых + обновлениях. Это диагностический локальный замер, не сравнение с base-SHA. +- `npm run docs:accept -- --identical`: все 11 кадров pixel-identical. + Обновлён только исходный fingerprint; PNG и golden-baselines не менялись. +- `node scripts/mutation-gate.mjs --check`: проверка реестра, без исполнения + мутантов. Мутант `summary-area-recomputes-walls-per-room` прямо убирает + передачу `shared.roomGeom, shared.multiWallNodes` и связан с тестом #721. +- Проверены диффы оракулов: #708, #712, #715, #722 и #759 сохраняют прежние + сравнения, а не заменяют их проверкой наступления ожидаемого результата. + #734 дополнительно запрещает пустой набор наблюдений; #719 проверяет ноль, + а не просто снимает прежнее требование. Для #733 и #760 отрицательные случаи + входят в исполненные юниты. Проба старого box model #712 встроена в смок. +- Серии нагрузочных повторов и временных подмен из комментариев авторов + прочитаны как их свидетельства, но не выданы за мои прогоны: #708 + [отчёт](https://github.com/Matysh/houseplan-card/issues/708#issuecomment-5917008690), + #712 [отчёт](https://github.com/Matysh/houseplan-card/issues/712#issuecomment-5917016481), + #715 [отчёт](https://github.com/Matysh/houseplan-card/issues/715#issuecomment-5917010106), + #717 [отчёт](https://github.com/Matysh/houseplan-card/issues/717#issuecomment-5917011659), + #721 [отчёт](https://github.com/Matysh/houseplan-card/issues/721#issuecomment-5919586598), + #722 [отчёт](https://github.com/Matysh/houseplan-card/issues/722#issuecomment-5919587830), + #734 [отчёт](https://github.com/Matysh/houseplan-card/issues/734#issuecomment-5923813953), + #759 [отчёт](https://github.com/Matysh/houseplan-card/issues/759#issuecomment-5930933824). + +## Границы вывода + +Это пакетное чтение перечисленных ship-коммитов, не повторное ревью всех +58 задач линии. Полный HA-harness, весь набор golden и все смоки локально +не запускались: их судит обязательный полный Validate финального кандидата. +Мутанты не исполнялись (PROCESS §8/§11.7); реестр и отрицательные случаи +прочитаны. Локальный бенчмарк не заменяет Linux CI performance proof. +Настоящий Android WebView и телефон физически не проверялись. + + +### Материал пакетного ревью + +``` +tag v1.79.0-beta.2 +candidate 044f09a6a5eee277b3cdd4b3b1e9c1ef46232e79 +base v1.79.0-beta.1 +issues 708,712,715,717,719,720,721,722,733,734,758,759,760 +high 0 +medium 0 +low 0 +run — +mode beta +patches 708:1e634d2522c16426f2f50fcd5e5e468ac686255a,712:465f7045630b3329629aaf0be9ba21cabe2e1820+8eb683821ada76dd2304259ac19ce9474fe68f8b,715:51b377898301c633eb82d9bf0e753bd99c696521,717:333c8dcc7b533252c7573e51f86d598c9fffd367,719:f2c698edfda3ed222b37579517a67144cd1ffce0,720:1e18ff83deb0e9297335574bfa2e3c74b812b98e,721:b4805c3793cc601d80e5c17b0e34b7ca22ee2f53,722:043f1f1cc463a59b6d7ee387844e0dfbe928cfe6,733:7602f7ef50b57fedc723631ba21f2be3c0f1cc2a,734:adbf3474020188fd892edc4b35bb862549163a61,758:4463bed635f7798a3813b8de38cec248d234016b,759:1c219f6950c3e145e8ac81690313cd83eb577aa5,760:3ecd39c173c0b4b4202e81b9aec2566d414c2733 +```