Appearance
ПР13. Регрессионный тест и кандидат на выпуск
Работа относится к проектной траектории. Рассчитывайте на одну лабораторную пару и примерно 2,5 часа самостоятельной доработки.
Цель
Собрать систему с нуля одной командой и доказать, что один сбой зафиксирован тестом и повтором записи, а итоговый отчёт связан с версиями кода, модели, рабочего промпта, конфигурации и данных.
Критерии зачтено
Работа зачтена, когда выполнены все три стадии и прошла автопроверка:
| Стадия | Что требуется |
|---|---|
| 1 · Собрать | чистая сборка, открытый сценарий, повтор bag-файла/fixture и отчёт модуля оценки |
| 2 · Сломать | RC меняет промпт или конфигурацию без сброса кэша либо хранит только агрегат |
| 3 · Доказать | версии и исходные результаты в provenance.json, регрессионный тест и повтор записи зелёные, секреты не попали в файлы |
| Автопроверка | check_practice.py PR13 проверит evidence/pr13/{clean-build.txt,replay.txt,provenance.json,fault-test.txt} и заявления public_tests_passed, defect_reproduced, defect_fixed, replay_verified |
Что получится
Вы соберёте систему с нуля одной командой, зафиксируете один сбой тестом и повторите его по записи. Итоговый отчёт будет связан с версиями кода, модели, рабочего промпта, конфигурации и данных.
Пакеты и понятия
- RC (release candidate) — конкретный набор commit + образ + конфигурация, который претендует на выпуск.
- Чистая сборка — сборка в свежей копии (CI или контейнер) без локальных
build/install/log: она выявляет зависимость от локальных файлов. - Provenance (происхождение) — JSON, связывающий результат с его входами: commit, baseline lock, хэши зависимостей, версии модели, промпта, конфигурации и данных, декларация ИИ.
- Replay — повтор сохранённой записи/fixture для пересчёта метрик без повторного запуска живого процесса.
Что сделать
- Выполните чистую сборку в CI, прогон открытого сценария, повтор bag-файла/fixture и формирование отчёта модуля оценки одной командой.
- Создайте
provenance.json: commit, baseline lock, хэши зависимостей, версии модели, промпта, конфигурации и данных, декларация ИИ. Рабочий промпт VLM хранится как часть системы, полные AI-чаты — нет. - Неисправный RC меняет промпт или конфигурацию без сброса кэша либо сохраняет только агрегат. Добавьте пропущенную версию и исходные результаты и закройте регрессионным тестом: тот же FAIL/PASS-тест, что для ручной правки, проходит и для AI-предложенного изменения.
Сохраните evidence/pr13/{clean-build.txt,replay.txt,provenance.json, fault-test.txt,report.json}.
Проверка
bash
colcon build --cmake-clean-cache
colcon test --event-handlers console_direct+
python3 /path/to/course/tools/check_practice.py PR13 --submission .Готово, если чистая копия воспроизводит отчёт, секреты не попали в файлы, а изменение, предложенное ИИ, прошло независимый тест. Дополнительно: SBOM и подпись.
Как работаем на лабораторной
После сравнения политик запустите инструкцию из чистой копии, как новый разработчик. Затем исправьте первую проблему сборки или добавьте недостающее поле в сведения о происхождении.
Общий порядок: runbook · troubleshooting.
Если использовался ИИ, применяются правила курса.
Минимальная проверка исправления
- Один и тот же минимальный пример даёт ожидаемый сбой на исходном SHA.
- После правки он даёт ожидаемый результат, а не только код завершения 0.
- Полный набор регрессионных тестов и повтор записи не находят побочного эффекта.
- Чистая копия или контейнер повторяет результат без локальных
build/install/log. - Файл происхождения связывает commit, среду, входы, модель, промпт и конфигурацию с исходным выводом.
Полные AI-чаты не сохраняются. Скрытые fixtures, секреты и персональные данные не передаются внешним сервисам.