From 277f2e19c12288122f8f68a2ea737b9f25825ba1 Mon Sep 17 00:00:00 2001 From: heaven Date: Fri, 7 Aug 2026 22:54:57 +0300 Subject: [PATCH] Extend the S3 frontend prompt with the controllable run ceiling measured in chapters and the same-origin constraint the platform actually imposes --- frontend/docs/S3_SESSION_PROMPT.md | 39 +++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/frontend/docs/S3_SESSION_PROMPT.md b/frontend/docs/S3_SESSION_PROMPT.md index b6aa3b6e..d01fb9b2 100644 --- a/frontend/docs/S3_SESSION_PROMPT.md +++ b/frontend/docs/S3_SESSION_PROMPT.md @@ -58,7 +58,7 @@ этой сессией), Ф-19, Ф-21. 7. `references/*.png` и `.shots/*.png` — открой и посмотри до первой правки. -## Правки спеки — ПЕРВЫЙ шаг S3 (список актуализирован оркестратором №14, 05.08) +## Правки спеки — ПЕРВЫЙ шаг S3 (список актуализирован оркестратором №15, 07.08: добавлены В-трис и В-кватер) Контракт ратифицирован. Спеку правишь ты: минорный бамп версии, регенерация типов, батарея, компаньон-К-таблица получает статусы. **Ниже — ПОЛНЫЙ список; он вырос с 04.08**, потому что @@ -159,6 +159,43 @@ 15. **Заголовок главы ограничен по длине на сервере** — единственная неограниченная строка в списке из 5000 строк. +**В-трис. Управляемый потолок прогона — РЕШЕНИЕ ВЛАДЕЛЬЦА 07.08, поверхности в спеке нет** +(добавлено оркестратором №15 по приёмке платформы P2, D39.109/D39.110; в редакции 05.08 этого +пункта не было — решения не существовало). + +Проблема, которую это решает: перевод книги стоит денег, и человек должен уметь сказать «не +больше вот столько» ДО старта, а не узнавать пост-фактум. Сегодня потолок живёт только в конфиге +книги на стороне движка, и управлять им нельзя вообще. + +Форма, ратифицированная владельцем: **шкала в интерфейсе от минимума до максимума**, ноль выбрать +НЕЛЬЗЯ (подсвечивается серым — прогон с нулевым потолком не начнётся), виджет выбираешь сам +(ползунок — предложение владельца, не мандат). Три вещи в этой форме — «делай РОВНО так», потому +что каждая куплена проверкой: + +16. **Единица шкалы — ГЛАВЫ, а не доллары.** Не «поставить $3», а «перевести до N глав». Причина + жёсткая: D39.84 запрещает денежные суммы на пользовательском проводе и экране, и П-5 показывает + процент ровно поэтому. Доллары на этой шкале = амендмент D39.84, а он не выдан. Побочная + выгода: минимум шкалы объясняет себя сам — одна глава. +17. **Максимум шкалы = ДОСТУПНЫЙ остаток, то есть баланс МИНУС открытые холды** — не весь баланс. + Платформа берёт холд на сумму потолка ДО спавна прогона, поэтому шкала, упёртая в полный + баланс, запирает всё на одну книгу и вторую начать нельзя. Два числа платформа уже различает. +18. **Это потолок ПРОГОНА, не книги.** Он едет со стартом прогона и не является свойством книги; + в спеке ему место рядом с созданием прогона, а не в модели книги. + +⚠ Чего в спеке НЕ выражать: пересчёт «глав → деньги». Он живёт на платформе (по оценке движка) и +наружу не выходит ни в каком виде. Поверхность отдаёт границы шкалы и выбранное значение в главах. + +**В-кватер. ФРОНТ ЖИВЁТ НА ТОМ ЖЕ ORIGIN, что платформа — сегодня это не выбор, а факт** +(замер приёмки №15 на живом бинаре, строка PD-96 регистра платформы). + +CORS-слоя в платформе нет вовсе: preflight `OPTIONS` с чужим `Origin` получает 401 от гарда +сессии, заголовков `Access-Control-*` нет ни на одном ответе. Значит браузерный клиент с другого +origin неработоспособен как класс, а не «требует настройки». Для тебя два следствия: в деве ходи +через прокси dev-сервера на тот же origin (не напрямую на порт платформы), и **не проектируй ничего +вокруг кросс-origin запросов** — если продукт когда-нибудь потребует отдельный домен фронта, это +отдельная работа платформы, и она не сделана. Заголовок `X-TM-Client` (пункт 8) при этом обязателен +и на same-origin: он не про CORS. + **Д. После правок:** байт-сверка зонной спеки с ратифицированной копией (`docs/architecture/14-api-contract/openapi.yaml`); расхождение отдай оркестратору на пере-ратификацию диффом — сам канон не правь.