Prove the OpenAPI codegen verdict by execution: generator handles the ratified 3.1 contract, but ignores conditional requirements, so the database constraint is the sole enforcer
This commit is contained in:
parent
99c9cb0ad5
commit
f6eda8b473
1 changed files with 15 additions and 1 deletions
|
|
@ -99,10 +99,24 @@ merchant-of-record, шорт-лист **Paddle vs Stripe Managed Payments** —
|
||||||
| Добавление | Пин | Статус |
|
| Добавление | Пин | Статус |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| OIDC-вход | x/oauth2 v0.36.0 + go-oidc/v3 v3.20.0 | ратифицировано (§1) |
|
| OIDC-вход | x/oauth2 v0.36.0 + go-oidc/v3 v3.20.0 | ратифицировано (§1) |
|
||||||
| Кодоген сервера из ратифицированной спеки OpenAPI 3.1 | `oapi-codegen/v2` v2.8.0 (17.07.2026) | ⚠ **ратифицирован ПОРЯДОК, не выбор**: его поддержка 3.1 свежая ⇒ сперва доказательство ИСПОЛНЕНИЕМ на нашем файле 983 строк, вердикт после. Фолбэк — overlay 3.1→3.0, НЕ ogen (тянет otel-подграф) |
|
| Кодоген сервера из ратифицированной спеки OpenAPI 3.1 | `oapi-codegen/v2` v2.8.0 (17.07.2026) | **ВЗЯТЬ — доказано исполнением 05.08** (ниже); фолбэк overlay 3.1→3.0 не понадобился |
|
||||||
| `sqlc` для денежных/квотных таблиц | v1.31.1 | взять ДО того, как эти таблицы появятся: компиляционная проверка SQL на денежных путях, рантайм-зависимостей ноль |
|
| `sqlc` для денежных/квотных таблиц | v1.31.1 | взять ДО того, как эти таблицы появятся: компиляционная проверка SQL на денежных путях, рантайм-зависимостей ноль |
|
||||||
| `golang.org/x/time/rate` | v0.15.0 | лимиты в процессе; долговечные пер-пользовательские — в Postgres |
|
| `golang.org/x/time/rate` | v0.15.0 | лимиты в процессе; долговечные пер-пользовательские — в Postgres |
|
||||||
|
|
||||||
|
**Доказательство исполнением по кодогену (05.08, $0, вне репозитория):** `oapi-codegen` v2.8.0 в
|
||||||
|
режиме `std-http-server` + `strict-server` на ратифицированной копии `openapi.yaml` (983 строки,
|
||||||
|
`openapi: 3.1.0`) — **exit 0, 2981 строка, `go build` чистый**; рантайм-граф прирастает одним
|
||||||
|
модулем (`oapi-codegen/runtime`, транзитивно uuid + go-jsonmerge), роутер не тянется — совместимо с
|
||||||
|
пином stdlib. Две проверки конструкций 3.1, на которых спотыкался генератор типов фронта:
|
||||||
|
✅ нулевой `kind` сгенерирован ПРАВИЛЬНО — `Kind *TermKind \`json:"kind"\`` без `omitempty`, то есть
|
||||||
|
«поле присутствует всегда, значение может быть `null`», ровно правило контракта §2.8;
|
||||||
|
⚠ **условие `if action=promote → dst` НЕ исполняется генерированным кодом** (`Dst *string
|
||||||
|
\`json:"dst,omitempty"\``) — та же слепота к 3.1-условиям, что у `openapi-typescript` (К-11).
|
||||||
|
Следствие, которое обязана знать каждая следующая сессия: **констрейнт БД
|
||||||
|
`bank_decisions_promote_has_dst` — ЕДИНСТВЕННЫЙ исполнитель этого правила на сервере**, не
|
||||||
|
подстраховка; удалять или ослаблять его нельзя, а любое новое условное требование спеки обязано
|
||||||
|
получить носителя в схеме или явную проверку в хендлере.
|
||||||
|
|
||||||
**Оставляем как есть:** stdlib-роутинг (1.22+ закрыл разрыв; `Request.Pattern` — с 1.23),
|
**Оставляем как есть:** stdlib-роутинг (1.22+ закрыл разрыв; `Request.Pattern` — с 1.23),
|
||||||
pgx без ORM, goose библиотекой, River (в `go.mod` не заводить, пока не подключён), «никакого Redis»,
|
pgx без ORM, goose библиотекой, River (в `go.mod` не заводить, пока не подключён), «никакого Redis»,
|
||||||
опаковые серверные сессии (OIDC их НЕ заменяет), stdlib-CSRF, slog, свой RFC 9457 problem+json,
|
опаковые серверные сессии (OIDC их НЕ заменяет), stdlib-CSRF, slog, свой RFC 9457 problem+json,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue