From dde6d389a996ff55e644fdd9b838e0aea78f9dae Mon Sep 17 00:00:00 2001 From: heaven Date: Sat, 8 Aug 2026 02:32:20 +0300 Subject: [PATCH] Correct the executed S3 prompt where it told the frontend to subtract open holds from the balance twice --- frontend/docs/S3_SESSION_PROMPT.md | 2 +- frontend/docs/api-contract/openapi.yaml | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/docs/S3_SESSION_PROMPT.md b/frontend/docs/S3_SESSION_PROMPT.md index bc876700..3736c357 100644 --- a/frontend/docs/S3_SESSION_PROMPT.md +++ b/frontend/docs/S3_SESSION_PROMPT.md @@ -184,7 +184,7 @@ contract» и ссылался на компаньон по пути, котор жёсткая: D39.84 запрещает денежные суммы на пользовательском проводе и экране, и П-5 показывает процент ровно поэтому. Доллары на этой шкале = амендмент D39.84, а он не выдан. Побочная выгода: минимум шкалы объясняет себя сам — одна глава. -17. **Максимум шкалы = ДОСТУПНЫЙ остаток, то есть баланс МИНУС открытые холды** — не весь баланс. +17. **Максимум шкалы = ДОСТУПНЫЙ остаток.** ⚠ **Первая редакция этого пункта говорила «баланс МИНУС открытые холды» — ошибка оркестратора, вычитание дважды; исправлено 08.08 по находке самой S3 (D39.115).** Холд — дебет в момент взятия, поэтому баланс уже без него. Платформа берёт холд на сумму потолка ДО спавна прогона, поэтому шкала, упёртая в полный баланс, запирает всё на одну книгу и вторую начать нельзя. Два числа платформа уже различает. 18. **Это потолок ПРОГОНА, не книги.** Он едет со стартом прогона и не является свойством книги; diff --git a/frontend/docs/api-contract/openapi.yaml b/frontend/docs/api-contract/openapi.yaml index 896ebbff..77a0d53a 100644 --- a/frontend/docs/api-contract/openapi.yaml +++ b/frontend/docs/api-contract/openapi.yaml @@ -49,6 +49,14 @@ info: MUST tolerate unknown enum values without failing. **Major** — a client MUST refuse an unsupported version and tell the user. + ⚠ **While the version is 0.x, a MINOR bump is the lane for breaking changes** (semver §4: + "Major version zero … anything MAY change at any time"), and 0.2.0 carries several — a required + `next_cursor` on every list, a required `ceiling_chapters` on a run request. A client pins the + exact 0.x version it was generated against and does not assume compatibility across minors. + From 1.0.0 the rule above applies unqualified. Ratified by the orchestrator at the S3 landing: + session S3 named the contradiction between this section and its own bump instead of resolving + it by its own hand, which was correct — the versioning rule is the contract owner's. + Every `enum` below is the vocabulary of THIS version, not a closed world. Generated types are closed unions and do NOT protect against an unknown value, so the unknown-value branch belongs on the client seam (`src/api/`), where values enter, not in every component.