Repository navigation
v0.4.0: Шаблоны ГОСТ 34, работающий выпуск комплекта и рейтинг эффективности
EvaCal v0.4.0 — шаблоны ГОСТ 34, работающий выпуск комплекта и рейтинг эффективности
Релиз объединяет функциональность PR #68 и последовавший за ним блок
исправлений. Главное: выпуск комплекта ГОСТ 34 теперь работает из коробки —
до этого он был заблокирован для любого нового пользователя.
Новое
-
Шаблоны ТЗ по ГОСТ 34 и harness ТЗ-автора: семь отраслевых ТЗ-шаблонов,
набор eval-сценариев, проверки grounding и защита от инъекций в промпт. -
Тёмное фэнтези в интерфейсе: оформление студии и сопутствующие экраны.
-
Рейтинг эффективности пресейлов и архитекторов (
/leaderboard). Для
пресейла — конверсия в утверждённые расчёты, доля переделок, медианный цикл
от создания до утверждения и интегральная оценка. Для архитектора —
согласованные расчёты, выпущенные комплекты ГОСТ 34, решения в роли ГАП и
доля комплектов, принятых с первого раза. Периоды: 30 дней, 90 дней, год,
за всё время; выборки меньше порога помечаются как ненадёжные.Экран открытый:
GET /leaderboardиGET /api/leaderboardдоступны
любому, без учётной записи. Наружу отдаются только логины и агрегаты —
названий расчётов и заказчиков там нет. Граница зафиксирована в
docs/SECURITY_PERIMETER.md.
Исправлено
-
Выпуск комплекта был заблокирован из коробки. Защита от повторного сида
проверяла наличие любого шаблона черезfindFirst(), а отраслевые пресеты
импортируются раньше — поэтому демо-шаблон и демонстрационный расчёт не
создавались никогда. Активных шаблонов не оставалось, presale-страница
уходила в fallback «десять последних без фильтра по активности», и новому
пользователю доставался произвольный пресет. Требования этапов пресетов были
написаны отглагольными существительными, правилоcompletenessпомечало их
ERROR, мастер превращал ERROR в блокер — кнопка «Выпустить комплект»
оставалась заблокированной навсегда.Починены обе стороны: проверка в сиде стала адресной, а 59 текстов требований
во всех десяти пресетах переписаны в обязывающей форме. Закрыто регрессиями. -
Терялись строки листа внутренних изменений. Клиент Prisma кэшировался
только вне production, а прокси читает его на каждое обращение к свойству —
в проде это давало новыйPrismaClientна каждое обращение и рвало
интерактивные транзакции (P2028). Ошибка гасилась в
recordInternalChangeSafe, поэтому журнал молча не писался, а тесты
оставались зелёными. -
Контейнер всегда был unhealthy. Проба здоровья обращалась по имени
localhost:3000, а оно в образе резолвится сначала в IPv6 ([::1]), тогда
как next standalone слушает только0.0.0.0:3000. Проба получала connection
refused при полностью работающем приложении. В оркестраторе постоянно красная
проба означает рестарты или отказ пускать трафик на здоровый контейнер.
Адрес заменён на числовой127.0.0.1. -
Уязвимости в mysql2 (
GHSA-3f6p-5ww8-9rcr,GHSA-rgwj-5xj2-c3m3):
утечка пароля открытым текстом через downgrade auth-плагина и
decompression-bomb DoS. Закрыты override наmysql2 ^3.24.4вместо отката
prisma на 6.19.3, который предлагалnpm audit fix --force.
Инфраструктура
- Сквозной тест в CI. Стадия E2E прогоняет полный путь: логин, создание
проекта и расчёта, мастер ГОСТ 34, выпуск комплекта, утверждение. - Сборка уведена из bind-mount VirtioFS — он недетерминированно терял
записи, из-за чего падалиtsc,vitestи нативный SWC на неповреждённом коде. - Цепочка поставки: 629 резолвов в локе переведены с зеркала
registry.npmmirror.comнаregistry.npmjs.org, реестр закреплён в.npmrc.
Сверка показала 0 расхождений integrity на 715 записях — подмены не было. - Репозиторий приведён к prettier.
Проверено
npm audit --audit-level=high — 0 уязвимостей. 516 юнит-тестов в 61 файле.
Сквозной сценарий ГОСТ 34 проходит целиком. Сборка образа: linux/amd64 + linux/arm64.
Образ
ghcr.io/onixus/evacal:0.4.0
ghcr.io/onixus/evacal:latest
Мультиарх, linux/amd64 + linux/arm64. Манифест:
sha256:681a53ef7a1ef27b6dffeeef24e286eb767b3cee18e8af4f24a97a3491bfafdf
Образ собран из того же коммита, на который указывает тег.