Retire the interface money ban the owner withdrew, and correct a claim of mine that rested on a grep that never ran: the rule's text was there all along
This commit is contained in:
parent
1f719bb4bc
commit
7bb08d8528
5 changed files with 71 additions and 8 deletions
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
# Реестр D-нот — карта актуальности v2 (D1–D39.195; титул — носитель головы, бампать при каждом аппенде)
|
||||
# Реестр D-нот — карта актуальности v2 (D1–D39.196; титул — носитель головы, бампать при каждом аппенде)
|
||||
|
||||
> ⚠ **Колонку «тело» `counts.py --check` НЕ сторожит по устройству:** он сверяет полноту НОМЕРОВ, а не
|
||||
> место тела, поэтому колонка держится дисциплиной лендинга. Не нашёл тело по колонке — иди в слайсы,
|
||||
|
|
@ -254,3 +254,4 @@
|
|||
| D39.193 | 04.09 | **Три ратификации по оси рода, выданные каналом и НЕ внесённые в журнал** (долг оркестратора, предъявлен приёмкой: греп `KeyTrusted` по D-логу → 0). Производитель рода — КЛАССИФИКАТОР (ноль новых вызовов, закрытый словарь парсера; следствие: банковый контур в c1 — предпосылка) · замок расщеплён: род гейтится МАТЧЕМ (`KeyTrusted`), а не статусом, в ОБОИХ блоках · ⚠ дедуп закон-блока по голому `src` РОНЯЛ ПОДПИСЬ — ратификация оркестратора была неверна, принята редакция зоны: уступает только неподписанная | жив | ЖИВОЕ: ратификация без проверки ключа уникальности предмета вносит дефект; каждая посадка предъявляется КРАСНОЙ | род ратификация дедуп |
|
||||
| D39.194 | 04.09 | **Платформенный пак «закрыть цикл» ПРИНЯТ и ЗАЛЕНДЖЕН `adf5e53`** (39 файлов; цикл замкнут живьём — платный EPUB через API, `epubcheck` 0/0/0/0). Строка бэклога 246 закрыта, её якорь мёртв ОТ ЛЕЧЕНИЯ. **Контрактный минор 0.10.0** описывает построенную дверь: `failure_code` — enum из четырёх кодов, `Export.url` — `uri-reference` с честным механизмом вместо несуществующей капабилити, третий адрес получает `downloadExport`, шестнадцатая причина — `wrong_language`. Ошибка ратификации «вхождений два» исправлена ДО правки: второе — `about:blank` по RFC 9457. Отзыв причины смертей стенда (не хост, а группа процессов сессии) и вышедшая из него `PD-447`: рецепт глушил коллизию портов ложной зеленью. **Три класса ложной зелени** — упавшая сборка · обрезанный вывод · ЭКВИВАЛЕНТНАЯ ПОСАДКА (класс оркестратора). Гейт чисел получил два носителя: титул реестра нот и живой счёт регистра. `classifierVersion` НЕ двигать | жив | ЖИВОЕ: SURVIVED не находка, пока посадка не показала, что меняет поведение; бамп версии должен смене, способной пере-вердиктить СУЩЕСТВУЮЩИЙ снапшот | лендинг контракт минор ложная-зелень мутации гейт |
|
||||
| D39.195 | 04.09 | **Движковый вайр-батч ПРИНЯТ и закрыт** (`b8154cd`·`c77c3ba`·`ecf063e`·`2e13cd1`; каталог мутаций 120→141, 136 красных, 0 переживших, 4 протухшие записи найдены новым пер-записным вердиктом). Строки заказа **210·113·46·134·140·184 ЗАКРЫТЫ**, 232 остаётся (чужой пак). ⚠ **Петля СВЁРНУТА решением владельца, а не замкнута доказательством** — цена названа: дважды подряд дефект вносил ФИКС предыдущего круга, круг 3 добавил ~2000 строк и не ревьюил из них ни одной (строка 266). Заведено 13 строк (256–268) формулировками зоны. `classifierVersion` не двигаем. **Три класса ложной зелени** (упавшая сборка · обрезанный вывод · ЭКВИВАЛЕНТНАЯ ПОСАДКА) и **граница инструмента с замером**: каталог доказывает поведение и молчит о том, что код утверждает о себе — 4 сверх-утверждения круга 3, ни одного не нашла посадка | жив | ЖИВОЕ: SURVIVED не находка, пока посадка не показала, что меняет поведение; ложный ПИН дороже пропущенной посадки; вопрос к комментарию — «что сломалось бы, если это правда» | приёмка движок петля мутации каталог |
|
||||
| D39.196 | 05.09 | **Форма заказа перевода — как у обычного харнесса (решение владельца).** Баланс аккаунта — ДЕНЬГАМИ на экране; ползунок потолка — деньгами; рядом ответ «хватает на полную книгу или нет»; второй ползунок объёмом — ГЛАВЫ когда книга распозналась, ЗНАКИ когда нет (о нераспознавании говорим ЯВНО); старт = холд с баланса. ⛔ **Правило «денежных полей в UI нет вовсе» ВЛАДЕЛЬЦУ НЕ ПРИНАДЛЕЖАЛО** («я такого правила не ставил») — текста в журнале НЕТ, живёт только в производных; удаляется как ложная атрибуция, не как снятие запрета. Область: баланс, потолок, холд — да; цены моделей и структура расходов — нет | жив | ЖИВОЕ: процент остатка честен как СИГНАЛ ТРЕВОГИ и бесполезен как ответ на вопрос «хватит ли на заказ» | заказ форма деньги-в-UI баланс холд |
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Журнал решений оркестратора — контракт D1–D39.195 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
|
||||
# Журнал решений оркестратора — контракт D1–D39.196 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
|
||||
|
||||
> **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто:
|
||||
> ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 живёт ниже в этом файле (голова D39.106+).
|
||||
|
|
@ -2178,3 +2178,20 @@ CJK-цели · закон-блок редактора единый, марке
|
|||
зоной: не «правда ли то, что здесь написано», а **«что должно было бы сломаться, если это правда, и
|
||||
ломается ли оно»**. ⚠ И ложный ПИН дороже пропущенной посадки: `WB36` гарантировала одно, рапортовала
|
||||
другое, и следующий пошёл бы чинить не-дефект.
|
||||
|
||||
## D39.196 — ФОРМА ЗАКАЗА ПЕРЕВОДА: баланс и потолок — ДЕНЬГАМИ на экране; запрет «сумм в UI нет» СНЯТ (решение владельца 05.09). ✅
|
||||
|
||||
**1. Экран старта перевода — как у обычного харнесса, дословно по владельцу.** На аккаунте — **баланс в деньгах**. Человек стартует перевод и, если хочет задать потолок, тянет **ползунок в ДЕНЬГАХ**; рядом мы отвечаем на его настоящий вопрос — **хватает на полную книгу или нет**. Если он предпочитает задавать не деньгами, а объёмом, есть второй ползунок: **в ГЛАВАХ, когда книга распозналась**, и **в ЗНАКАХ, когда не распозналась** (о факте нераспознавания говорим ЯВНО). Старт — **холд с баланса**.
|
||||
|
||||
**2. ⛔ ЗАПРЕТ «ДЕНЕЖНЫХ ПОЛЕЙ В UI НЕТ ВОВСЕ» ОТОЗВАН ВЛАДЕЛЬЦЕМ 05.09.** Дословно: **«я такого правила не ставил, надо от него избавляться»**.
|
||||
⚠ **ЭРРАТА К ЭТОМУ ЖЕ ПУНКТУ, вписана оркестратором сразу: первая редакция утверждала «текста правила в журнале НЕТ» — это ЛОЖНОЕ ОТРИЦАНИЕ, выведенное из СЛОМАННОЙ КОМАНДЫ.** Греп шёл с `|` без `-E`, то есть в basic-regex вертикальная черта — литерал, и находил только собственную цитату паттерна. Правильный `grep -E` даёт два хита. **Текст ЕСТЬ и записан как СЛОВО ВЛАДЕЛЬЦА** — тело D39.84, перечень «(1) Восемь решений владельца»: «оплат в MVP нет, денежных полей в UI нет вовсе (расход остаётся телеметрией владельца; потолки/rebill-согласие движка канон §5 не трогает)». ⇒ Верная форма — **владелец ОТОЗВАЛ собственное решение** (суперсид п.(1) D39.84 в части денег), а не «оркестратор приписал ему чужое». ⚠ Оговорка, которую из текста снять нельзя: нота пришла РЕЛЕЕМ отчёта фронт-сессии, и что там было прямой речью владельца, а что пересказом релея — по тексту не различимо; ровно та же неразличимость, что D39.112 п.3 пометил у СОСЕДНЕЙ ноты.
|
||||
⚠ **Класс ошибки — мой, и он тот самый, который я весь день правил у других: отрицательное утверждение, выведенное не из проверки, а из команды, которая не сработала.** Канон это прямо запрещает («отрицательное утверждение из отсутствия упоминания НЕ выводится»), и я нарушил его в НОТЕ. Поймал внешний рецензент, пере-запустив мою же команду. **Норма, купленная этим: команда, на которой стоит отрицание, приводится В ТЕКСТЕ и обязана быть воспроизведена другим исполнителем.**
|
||||
**Носителей запрета БОЛЬШЕ ДВУХ — все обязаны быть закрыты паком формы заказа:** `05-decisions-log.md:222` (тело D39.84) · `05-decisions-log.md:246` (D39.100 К-8: «запрет денег на экране D39.84 в силе и НЕ superseded») · `docs/product-requirements.md` ПТ-35 · `docs/architecture/15-money-path.md` §«Запрет денег на экране» · `14-api-contract/openapi.yaml` §Transport и §Credit · зеркало фронта `frontend/docs/api-contract/openapi.yaml` · `frontend/docs/API_CONTRACT_INPUT.md` §4.8 · `platform/docs/ENGINEERING_STANDARDS.md` (зонный, чинит зона).
|
||||
|
||||
**2а. Что теперь верно.** На аккаунте — **баланс в ДЕНЬГАХ**, и он виден. Потолок заказа — деньгами. Наружу выходят баланс, потолок и холд. НЕ выходят: цены моделей, стоимость стадий, структура наших расходов (ПТ-33 цел — это отдельная норма и она владельцем не отменялась).
|
||||
|
||||
**3. Почему прежняя форма была абсурдной, и это надо записать, чтобы не вернулись.** Баланс хранится в деньгах (микродоллары), а наружу отдавался ПРОЦЕНТОМ неистраченного от начисленного (`RemainingPercent`, «a percentage, never an amount»). Человек, задавший объём заказа, из «осталось 70 %» не может понять ничего: семьдесят процентов от суммы, которую он вносил когда-то и не помнит, соотнести с ценой, которой он не видит. **Процент честен ровно как СИГНАЛ ТРЕВОГИ** («мало», «пусто») — там он и остаётся.
|
||||
|
||||
**4. Что это меняет в согласованной схеме (строки 276–283).** Схема «заказ = объём, вердикт ДО клика, движку два потолка» устояла и не переоткрывается; ползунок денег — ТРЕТИЙ способ выразить тот же заказ, и вердикт «хватает на полную книгу» обязателен при любом из трёх. Развилка по разбору остаётся: главы — когда структура распознана, знаки — когда нет, и о нераспознавании говорим прямо. ⚠ «Страница» как отображение знаков — вопрос подписи, не механизма; размер страницы у разных рынков разный (D39.176 п.4), поэтому в контракт едут ЗНАКИ.
|
||||
|
||||
**5. Не отменяется:** структура глав для ВЫДАЧИ (строка 283) — читатель не-CJK txt получает книгу одним полотном при любой единице заказа, гейт беты; ложная подпись «Знаков» у счётчика байтов файла (строка 282) — она же вход пути «не распозналось»; движковая половина (строка 277) первой — без неё в стену упирается любой путь.
|
||||
|
|
|
|||
|
|
@ -946,6 +946,41 @@ first built format»), и условие наступило. Набор — то
|
|||
**Шестнадцатая причина замечания.** `off_target_lang` → `wrong_language`; разбор и ⚠ о ранге — в
|
||||
Приложении А.
|
||||
|
||||
### 2.24. ⛔ ЗАПРЕТ «ДЕНЕГ В ИНТЕРФЕЙСЕ НЕТ» ОТОЗВАН ВЛАДЕЛЬЦЕМ (05.09, прозой — не минор)
|
||||
|
||||
**Что случилось.** Норма «оплат в MVP нет, денежных полей в UI нет вовсе» месяц определяла форму
|
||||
продукта. Владелец 05.09: **«я такого правила не ставил, надо от него избавляться»**. Форма —
|
||||
**отзыв собственного решения**: текст записан в теле D39.84 (`05-decisions-log.md:222`) в перечне
|
||||
«(1) Восемь решений владельца». ⚠ Нота пришла РЕЛЕЕМ отчёта фронт-сессии, и что в ней прямая речь, а
|
||||
что пересказ релея, по тексту не различимо — та же неразличимость, которую D39.112 п.3 пометил у
|
||||
соседней ноты.
|
||||
|
||||
⚠ **Первая редакция этого раздела утверждала «текста правила в журнале НЕТ» — ложное отрицание,
|
||||
выведенное из СЛОМАННОЙ команды** (`grep` с `|` без `-E`: в basic-regex черта — литерал, находилась
|
||||
только собственная цитата паттерна). Поймал внешний рецензент, пере-запустив ту же команду. Норма,
|
||||
купленная этим: **команда, на которой стоит отрицание, приводится в тексте и обязана быть
|
||||
воспроизведена другим исполнителем.**
|
||||
|
||||
**Что теперь верно.** Баланс аккаунта — деньги и показывается деньгами; потолок заказа и холд — тоже.
|
||||
Остаётся запрещённым и НЕ отменялось: цена модели, стоимость стадии, стоимость вызова, структура
|
||||
НАШИХ расходов (ПТ-33). Линия: **деньги, которыми владеет аккаунт, — его; деньги, которые тратим мы,
|
||||
— наши.**
|
||||
|
||||
**Форма показа — пара, а не точка.** Проекция имеет дисперсию (редакторские вызовы 25–90 % от
|
||||
worst-case, хвост ретраев 1.5–23 % между прогонами, D39.165 §1), поэтому точечное «$1.14» через прогон
|
||||
превращается в «вы сказали 1.14, списали 1.31». Верная форма: «ожидаемо ≈ $1.1, зарезервируем до
|
||||
$1.6, спишем по факту», и закрытие после прогона фактом. Главный ответ — фраза «хватит на всю книгу»;
|
||||
цифра рядом и мельче.
|
||||
|
||||
**Почему прозой, а не минором.** Схема `Credit` НЕ тронута: поле суммы приезжает с паком, который
|
||||
строит форму заказа. Двигать канон впереди кода — дефект, за который в тот же день написана эррата
|
||||
04.09-в. Проза перестаёт лгать сегодня, поле появляется со своим кодом.
|
||||
|
||||
**Носители запрета, которые обязан закрыть тот же пак:** `05-decisions-log.md:222` · `:246` (D39.100
|
||||
К-8 «запрет в силе и НЕ superseded») · `product-requirements.md` ПТ-35 · `15-money-path.md` §запрета ·
|
||||
`openapi.yaml` §Transport и §Credit · зеркало фронта · `API_CONTRACT_INPUT.md` §4.8 ·
|
||||
`platform/docs/ENGINEERING_STANDARDS.md` (зонный — чинит зона).
|
||||
|
||||
## 3. Зависимости: чтение → источник → строка бэклога
|
||||
|
||||
**Правило, введённое 0.3.0 (Б-21): предупреждение о недостроенном ОБЯЗАНО нести номер строки
|
||||
|
|
|
|||
|
|
@ -15,7 +15,10 @@ info:
|
|||
The client reads the platform read-model only; no path below addresses the translation service.
|
||||
|
||||
**Nothing about HOW a book is translated crosses this boundary** — no model names, no phase or
|
||||
stage names, no internal vocabularies, no money sums. The projection is an allowlist: a field not
|
||||
stage names, no internal vocabularies, and no cost of any model, stage or call. ⚠ **Money the
|
||||
ACCOUNT owns is not in that set** (owner, 05.09): the balance, an order's ceiling and its hold are
|
||||
the user's own figures and are shown as amounts. The earlier blanket «no money sums» was the owner's own
|
||||
rule of 02.08 and he RETIRED it on 05.09; what stays banned is the structure of OUR spend. The projection is an allowlist: a field not
|
||||
named here never reaches the client. The rule binds the PROSE too — every description here is
|
||||
compiled into the generated client's source.
|
||||
|
||||
|
|
@ -816,9 +819,13 @@ paths:
|
|||
summary: State of the credit balance.
|
||||
description: |
|
||||
Credits are a BALANCE, not a subscription with windows: no period, no `resets_at`, no
|
||||
"resets in" — the screen shows what is LEFT, as a share of the account's grants.
|
||||
"resets in" — the screen shows what is LEFT.
|
||||
|
||||
Money SUMS never cross this boundary in any form: a percentage, never an amount.
|
||||
⚠ **«A percentage, never an amount» is RETIRED (owner, 05.09).** The account's balance is money
|
||||
and is shown as money; a percentage answers «is it running out», never «will it cover this
|
||||
order», and the order screen asks the second question. The AMOUNT field lands with the pack
|
||||
that builds the order form — this schema is not changed ahead of it, so today the percentage is
|
||||
still all this endpoint returns. What remains banned is the cost of models, stages and calls.
|
||||
responses:
|
||||
'200':
|
||||
description: Balance state.
|
||||
|
|
@ -2540,7 +2547,10 @@ components:
|
|||
type: integer
|
||||
minimum: 0
|
||||
maximum: 100
|
||||
description: Share of the account's grants still available. A percentage, never an amount.
|
||||
description: |
|
||||
Share of the account's grants still available. ⚠ Honest as an ALARM («low», «exhausted») and
|
||||
useless as an answer to «will my balance cover this order» — the amount field that answers it
|
||||
lands with the order-form pack (owner, 05.09).
|
||||
halt_reason:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/AccountHaltReason'
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue