Files
LMS/docs/evidence/baseline-2026-10-29.md

2.8 KiB
Raw Blame History

LDD baseline: 2026-10-29

Актуальный прогон после закрытия P1/P2-остатка: контракт профиля, финальные ограничения когорты, возврат группы из архива, пагинация, пакетные сдачи, row-level XLSX-импорт и audit-события ростера.

Результат

Проверка Результат
JUnit/интеграционные тесты 398, 0 failures/errors/skipped
ktlint + detekt зелёные
Claims 66 (27 P0 / 39 P1), 66/66 proven, P0 gaps = 0
Migration master→branch PASS; identity V4–V14, повторные V13/V14
Mutation CourseAccessService 75% test strength (порог 70%)
Mutation PromotionPlanner 69% test strength (порог 60%)
Browser E2E 18/18 (Chromium/Firefox/WebKit)
Load smoke 125 запросов, 0 ошибок, p95 0.918 с (порог < 1 с)

Что добавлено в этой итерации

  • профиль соответствует docs/09: variant.id, level.id/code, grade.updatedBy, author.name; submissionLimit/submissionsTotal и SQL-тест «без N+1» на 10 лабораторных;
  • V14__cohort_constraints.sql: NOT NULL для пяти полей когорты, полный unique index и строгие check-ограничения; legacy-строки останавливают миграцию с явной ошибкой;
  • возврат группы из архива (POST /api/v1/groups/{id}/restore) с аудитом;
  • пагинация /admin/groups и плоского списка материалов;
  • latestPerStudentByLab — один запрос сдач на все лабораторные ведомости;
  • XLSX-тесты preflight-ошибок импорта (занятый логин, неактивная группа);
  • аудит GROUP_CREATE/STUDENT_CREATE/GROUP_ENROLL/GROUP_IMPORT/GROUP_ARCHIVE/GROUP_RESTORE;
  • история членства на странице группы (последние 200 событий).

Остаточные ограничения

  • гонка импорта с параллельной вставкой логина всё ещё даёт общий 409;
  • screenshot-diff/визуальной регрессии нет;
  • mutation testing не 100%, нагрузочный smoke не является SLA;
  • restore на staging, первый реальный Woodpecker pipeline, инвентаризация legacy-активов и daily backup timer требуют доступа к стенду/серверу.

Артефакты прогона: build/evidence/{runtime,migration,mutation,browser,smoke}.json, отчёт gate — build/reports/evidence/index.md.