Артефакт один — scripts/sh3d-convert/dist/index.html, самодостаточный
файл, как и лендинг: раскладывается копированием, без сборщиков и CDN.
Собирается склейкой тех же модулей, которые проверяют гейты этапа 1;
относительных импортов на странице нет, поэтому она работает из любого
каталога и без сети.
Три обещания страницы проверяются тестами, а не текстом:
1. Ни одного сетевого вызова и ни одной внешней загрузки. Ищутся формы
ВЫЗОВА, а не имена API: первая редакция теста краснела на собственном
комментарии, где эти API перечислены как запрещённые. Шрифты
системные — <link> к шрифтам это внешний запрос при загрузке, а
обещание «файл не покидает браузер» должно быть буквальным. Заодно
поэтому на странице нет аналитики.
2. Конвертер внутри страницы даёт тот же результат, что модули
репозитория: код извлекается из собранного артефакта, прогоняется на
фикстуре и сравнивается с golden. Склейка, потерявшая модуль,
краснеет.
3. Собранная страница не отстала от исходников: build-page.mjs --check
сверяет закоммиченный артефакт с пересборкой.
Плюс полнота переводов: у каждой подписи есть ru и en, словари
совпадают по ключам, у каждого кода отчёта и каждого кода отказа есть
человеческий текст. Иначе пользователь увидит пустую надпись или
`not_zip`.
Отчёт показывается ДО скачивания и по этажам: сколько комнат, стен и
проёмов, какая клетка сетки, и полный список мест, где конвертер принял
решение, — спрямлённая дуга, обрезанная толщина, непривязанный проём,
пропущенный этаж без комнат. Это требование задачи: искать чужие ошибки
в готовом плане из сотен объектов хуже, чем прочитать их заранее.
Гайды (ru/en) получили раздел про импорт из Sweet Home 3D с прямой
записью, что это необязательный ярлык, а не шаг настройки: SCOPE обещает
«no external editors», и обходить это молчанием нельзя.
Свидетели этапа 2, все проверены отрицательным прогоном: добавленный в
страницу fetch, потерянный русский перевод, правка dist руками, склейка
без модуля sh3d.mjs — каждая краснит свой тест.
Гейты: npm test 1871 tests, 1870 pass, 0 fail; pytest без HA 378 passed,
3 skipped.
Осталось владельцу: раскладка на хост (из песочницы SSH недоступен) и
проверка на настоящем файле Sweet Home 3D.
Issue: #446
User-Visible: no