chore: make OpenAPI export atomic and add read-only check (WealthLedger/backend#3) #97

Merged
codex-bot merged 1 commits from chore/3-reproducible-openapi-export into develop 2026-10-15 11:24:39 +03:00
Owner

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 сравнивает с локальным файлом.
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 сравнивает с локальным файлом.
ksv741 added 1 commit 2026-10-15 10:47:34 +03:00
chore: make OpenAPI export atomic and add read-only check (WealthLedger/backend#3)
Backend verify / commits (pull_request) Successful in 29s
Backend verify / security (pull_request) Successful in 10s
Backend verify / verify (pull_request) Successful in 4m45s
04abdc39ee
ksv741 force-pushed chore/3-reproducible-openapi-export from 112eebd5c8 to 04abdc39ee 2026-10-15 10:47:34 +03:00 Compare
codex-bot merged commit a93f2d55e7 into develop 2026-10-15 11:24:39 +03:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#97