Extend the S3 frontend prompt with the controllable run ceiling measured in chapters and the same-origin constraint the platform actually imposes

This commit is contained in:
heaven 2026-08-07 22:54:57 +03:00
parent 00f697078d
commit 277f2e19c1

View file

@ -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`); расхождение отдай оркестратору на
пере-ратификацию диффом — сам канон не правь.