Record the owner decision to carry spend freshness properly: versioned money event for observability, hold and ceiling remain the enforcement
This commit is contained in:
parent
19c326ecec
commit
6469479670
1 changed files with 22 additions and 8 deletions
|
|
@ -74,14 +74,28 @@ hosted IdP (связка PII + доступность, а свою сессию
|
||||||
`balance == SUM(ledger)`). Правки строк не существует: ошибка чинится новой записью. Только целые
|
`balance == SUM(ledger)`). Правки строк не существует: ошибка чинится новой записью. Только целые
|
||||||
микро-доллары; на шве расчёта округляем ВВЕРХ (леджер движка — нижняя граница).
|
микро-доллары; на шве расчёта округляем ВВЕРХ (леджер движка — нижняя граница).
|
||||||
|
|
||||||
**Резервация — РЕШЕНО (вариант B, оркестратор 05.08; вопрос владельцу снят как переусложнённый):**
|
**Защита и свежесть — ДВА РАЗНЫХ механизма, строим ОБА (решение владельца 05.08 «сделаем нормально»;
|
||||||
в той же транзакции, что допускает задачу в очередь, ДО спавна `tmctl` ставим холд и передаём движку
|
моё прочтение его слов — записано так, чтобы дешёво поправить, если прочитал не то):**
|
||||||
пер-книжный потолок ≤ остатка баланса. Дальше жёсткий стоп исполняет САМ движок, у которого этот
|
|
||||||
механизм уже есть, — поэтому перерасход физически невозможен, даже если платформа во время прогона
|
1. **Защита — холд + потолок движку (было «вариант B»).** В той же транзакции, что допускает задачу
|
||||||
не знает ни цифры. Единственное видимое следствие: индикатор остатка обновляется на границах
|
в очередь, ДО спавна `tmctl` ставим холд и передаём движку пер-книжный потолок ≤ остатка баланса.
|
||||||
попытки, а не непрерывно. Денежное событие в потоке движка (вариант A) не строим — оно трогает
|
Жёсткий стоп исполняет САМ движок, у которого механизм уже есть ⇒ перерасход физически невозможен,
|
||||||
движок ради обновления индикатора; вернуться, только если замер покажет, что грубость холда душит
|
даже если платформа во время прогона слепа. Это рубеж корректности, и он НЕ зависит от доставки
|
||||||
фри-тир.
|
событий (поток at-least-once и на краше теряет хвост).
|
||||||
|
2. **Свежесть — версионированное денежное событие в словаре потока (было «вариант A»).** Движок
|
||||||
|
эмитит НАКОПИТЕЛЬНЫЙ счётчик потраченного на границах стадии/волны; платформа материализует его
|
||||||
|
существующим идемпотентным апсертом `(engine_run_id, seq)`. Накопительная семантика делает
|
||||||
|
повтор и дубль безвредными (берём максимум по прогону). Индикатор остатка перестаёт отставать
|
||||||
|
на целую попытку.
|
||||||
|
|
||||||
|
⚠ **Что это меняет в каноне и чего НЕ меняет.** Отменяется частная доктрина «поток событий цифр не
|
||||||
|
несёт» (записана в комменте `00003_usage.sql` и в дизайн-ответе П-5). **D39.84 НЕ затронут**: он
|
||||||
|
запрещает суммы на ПОЛЬЗОВАТЕЛЬСКОМ проводе, экране и в INFO-логах — здесь же внутренний канал
|
||||||
|
движок→платформа в приватную таблицу; наружу по-прежнему уходит только процент остатка.
|
||||||
|
⚠ **Запрет, который обязан ехать вместе с механизмом:** ЭНФОРСМЕНТ на событии строить нельзя —
|
||||||
|
иначе корректность квоты повиснет на доставке потока. Событие только показывает; останавливает
|
||||||
|
потолок. **Носитель работы движка — строка 103 единого бэклога** (словарь событий); заводится
|
||||||
|
оркестратором отдельной строкой, платформа её не пишет.
|
||||||
|
|
||||||
## 3. Стандарты и стек: что взять, что не брать
|
## 3. Стандарты и стек: что взять, что не брать
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue