scripts/generate-openapi.cjs: запись openapi.json через временный файл и rename (атомарно, без частичной записи при сбое); путь относительно рабочего каталога, как раньше.
Режим --check: сравнивает runtime schema с файлом, при расхождении завершается с ошибкой и не перезаписывает его.
package.json: новая команда openapi:check.
README.md: описание атомарности и check.
Проверки
Генерация детерминирована: два запуска дают байт-в-байт одинаковый файл.
openapi:check на совпадении: exit 0; на искусственном расхождении: exit 1, файл не изменён.
openapi:generate восстанавливает тот же артефакт.
npm run test:openapi-contract: 3/3.
npm run verify: 40 suites, 268 tests, lint, typecheck, coverage, nest build - все зелёные.
Ограничения
Привязка к конкретной backend revision остаётся задачей координации с main #2 / docs #4; скрипт пишет артефакт без SHA.
openapi.json не отслеживается Git (по .gitignore), поэтому check сравнивает с локальным файлом.
Closes #3
## Что изменено
- `scripts/generate-openapi.cjs`: запись `openapi.json` через временный файл и `rename` (атомарно, без частичной записи при сбое); путь относительно рабочего каталога, как раньше.
- Режим `--check`: сравнивает runtime schema с файлом, при расхождении завершается с ошибкой и не перезаписывает его.
- `package.json`: новая команда `openapi:check`.
- `README.md`: описание атомарности и check.
## Проверки
- Генерация детерминирована: два запуска дают байт-в-байт одинаковый файл.
- `openapi:check` на совпадении: exit 0; на искусственном расхождении: exit 1, файл не изменён.
- `openapi:generate` восстанавливает тот же артефакт.
- `npm run test:openapi-contract`: 3/3.
- `npm run verify`: 40 suites, 268 tests, lint, typecheck, coverage, nest build - все зелёные.
## Ограничения
- Привязка к конкретной backend revision остаётся задачей координации с main #2 / docs #4; скрипт пишет артефакт без SHA.
- `openapi.json` не отслеживается Git (по `.gitignore`), поэтому check сравнивает с локальным файлом.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #3
Что изменено
scripts/generate-openapi.cjs: записьopenapi.jsonчерез временный файл иrename(атомарно, без частичной записи при сбое); путь относительно рабочего каталога, как раньше.--check: сравнивает runtime schema с файлом, при расхождении завершается с ошибкой и не перезаписывает его.package.json: новая командаopenapi:check.README.md: описание атомарности и check.Проверки
openapi:checkна совпадении: exit 0; на искусственном расхождении: exit 1, файл не изменён.openapi:generateвосстанавливает тот же артефакт.npm run test:openapi-contract: 3/3.npm run verify: 40 suites, 268 tests, lint, typecheck, coverage, nest build - все зелёные.Ограничения
openapi.jsonне отслеживается Git (по.gitignore), поэтому check сравнивает с локальным файлом.112eebd5c8to04abdc39ee