Bring the docs back to what the code says: the tailer parks rather than skips, the pro effort knob reaches the model, the editor share has its cause, and two more register rows close with their fix
This commit is contained in:
parent
2912e36fa4
commit
e4ace2c4c1
8 changed files with 18 additions and 13 deletions
File diff suppressed because one or more lines are too long
|
|
@ -8,7 +8,7 @@
|
|||
| **+ банкнота** (WHAT-канал драфта) | та же flash, промпт `translator-banknote.md` | как draft | ⚠ НЕ в shipping-c1 — ран-локальный конфиг книги: `~/books/gu-zhenren/coldrun-b/pipeline.yaml` (`gates.banknote` + `prompt_override`) | ⚠0731; включение в c1 = СТОП-решение владельца (строка 140: двигает RequestHash) | те же |
|
||||
| **терминолог** | `deepseek-v4-flash` | thinking ON, `gates.terminology.reasoning:"low"` (одна ручка на обе бэнк-роли) | ран-локальный `~/books/gu-zhenren/coldrun-b/reprobe/bank-low/pipeline.yaml:68-78`; схема — `internal/config/pipeline.go:298`=`type TerminologyGate struct` (TerminologyGate); в shipping-c1 гейта НЕТ (opt-in OFF) | боевой по факту прогонов; носитель — конфиг книги | quirks §0731 п.3а: пустой `reasoning` = вендор-`high` → 4/5 `length` с пустым телом; экран `target_script: Cyrillic` обязателен при гейте ON |
|
||||
| **классификатор** (типы кандидатов) | flash (`classify_model` пуст ⇒ = model) | та же ручка | там же: `classify_types: true` + `classify_budget_usd` | проба/полигон; в shipping выключен ВЕЗДЕ | латентный мис-вердикт `cjk_artifact` — `13-tech-debt-anchors.md` §Б-105 |
|
||||
| **editor** | `deepseek-v4-pro` **БИЛИНГВ** | thinking ON; `reasoning:"off"` = осознанный NO-OP (ReasoningNone); ручки эффорта у pro НЕТ (`low`→`high`) — так говорит квирк-канон §3а, помеченный пере-снятым. ⚠ **НОСИТЕЛИ ПРОТИВОРЕЧАТ, и это НЕ решено:** `PROGRESS.md` утверждает обратное (пинг зоне полигона + строка бэклога **237**(б)): вахта §Б-108 сработала 13.08 changelog'ом вендора — pro/flash получили low/high/max. Кто прав, из репозитория НЕ выводится: замера поведением после 13.08 нет ни у одной стороны. ⚠ **D39.137 про эффорт МОЛЧИТ** (11 строк, ноль упоминаний) — ссылаться на неё как на «ручка появилась 13.08» уже пробовали (испр. №18 20.08): конфабуляция по смежности, `V4-Pro-0813` — чекпойнт ВЕСОВ при вендорском «Model names remain unchanged», а не дата появления ручки. **Закрывается вендор-сверкой, а не выбором стороны**; до неё в силе КАНОН | `configs/pipeline-c1.yaml` блок редактора; floor 16000 — `models.yaml` ключ `deepseek-v4-pro`, поле `min_max_tokens` | боевой ИНТЕРИМ (D30.1/D39.22); D39.117: топология 2-прохода ПОДТВЕРЖДЕНА (`A/F3` +2.50 Holm 0.0004), жильцы dspro/glm-5 неразличимы ⇒ выбор = цена; закон-блок ОБЯЗАТЕЛЕН (строка 134) | quirks §0731 п.3а (маппинг pro), п.3б (замер `low` на pro ОТОЗВАН — НЕ УСТАНОВЛЕНО); вахта смены маппинга «early August 2026» — §Б-108 |
|
||||
| **editor** | `deepseek-v4-pro` **БИЛИНГВ** | thinking ON; `reasoning:"off"` = осознанный NO-OP (ReasoningNone); ⚠ **ручка эффорта у `pro` ЕСТЬ — прежний клейм «ручки НЕТ (`low`→`high`)» СНЯТ 04.09 сверкой с квирк-каноном.** Канон пере-снят полигоном 30.08 живым `curl` (§3а: «ТАБЛИЦА У ВЕНДОРА ИЗМЕНИЛАСЬ, И ЗАПИСЬ НИЖЕ БОЛЬШЕ НЕ ВЕРНА»), а поведенческая проба того же дня (§3г, $0.038276) показала: **параметр `low` на `pro` ТЕПЕРЬ ДОХОДИТ ДО МОДЕЛИ** (−79 prompt_tokens). ⚠ **Фиксируем ровно «ручка доходит», НЕ «ручка работает»:** ВЕЛИЧИНА эффекта не установлена (§3д: разброс ×38, причина не установлена), и это живой остаток строки 172(г). ⚠ **НОСИТЕЛИ ПРОТИВОРЕЧАТ, и это НЕ решено:** `PROGRESS.md` утверждает обратное (пинг зоне полигона + строка бэклога **237**(б)): вахта §Б-108 сработала 13.08 changelog'ом вендора — pro/flash получили low/high/max. Кто прав, из репозитория НЕ выводится: замера поведением после 13.08 нет ни у одной стороны. ⚠ **D39.137 про эффорт МОЛЧИТ** (11 строк, ноль упоминаний) — ссылаться на неё как на «ручка появилась 13.08» уже пробовали (испр. №18 20.08): конфабуляция по смежности, `V4-Pro-0813` — чекпойнт ВЕСОВ при вендорском «Model names remain unchanged», а не дата появления ручки. **Закрывается вендор-сверкой, а не выбором стороны**; до неё в силе КАНОН | `configs/pipeline-c1.yaml` блок редактора; floor 16000 — `models.yaml` ключ `deepseek-v4-pro`, поле `min_max_tokens` | боевой ИНТЕРИМ (D30.1/D39.22); D39.117: топология 2-прохода ПОДТВЕРЖДЕНА (`A/F3` +2.50 Holm 0.0004), жильцы dspro/glm-5 неразличимы ⇒ выбор = цена; закон-блок ОБЯЗАТЕЛЕН (строка 134) | quirks §0731 п.3а (маппинг pro), п.3б (замер `low` на pro ОТОЗВАН — НЕ УСТАНОВЛЕНО); вахта смены маппинга «early August 2026» — §Б-108 |
|
||||
| **editor-резерв** | `glm-5` | thinking OFF ЯВНО (`extra_body {thinking:{type:disabled}}`, иначе таймауты ×3) | `configs/pipeline-arm-glm.yaml` блок редактора + `models.yaml` ключ `glm-5` | резерв; флип = один арм-конфиг. mistral-арм есть, но mistral ИСКЛЮЧЁН как редактор (D39.20) | quirks thinking-таблица (glm-5); эхо-экспозиция билингва при thinking-OFF НЕ измерена (`sourceEchoExposure`) |
|
||||
| **судья Ф2** | Gemini (нативный адаптер — Ф2, строка 33); в C2-скелете провизорно `glm-5` | Gemini: thinking mandatory | `models.yaml` ключ `gemini-3.1-pro-preview`; `pipeline-c2.yaml` блок `select` («DO NOT FLIP») | Ф2/полигон — в движке НЕ построен; C2 неисполняем | quirks: `thinking_budget:0` → HTTP 400; учёт `additive_total`; судья ЭРОТИКИ непригоден (PROHIBITED_CONTENT неконфигурируем, D22.6) → первичный судья 18+ = grok |
|
||||
| **канал B (18+)** | `mistral-large-2512` (переводчик-дефолт, D19.1) + `grok-4.3` (эскалация reasoning-ON + судья 18+) | mistral: не-reasoning; grok: OFF только явным `reasoning_effort:"none"` | `models.yaml` ключи `mistral-large-2512` (accepts_labels, rate_limit) и `grok-4.3` · c1 `chains.adult:[grok-4.3]` | данные заведены; полный wiring — Ф2; `content_policy` пуст во всех shipping (сознательно) | quirks §Транспорт: mistral rate-limiter (~48% retry-fails → `max_concurrency:2`); grok: вложенная форма эффорта молча глотается; additive-биллинг (think-ON только за резервом D6.2) |
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Реестр D-нот — карта актуальности v2 (D1–D39.185; титул — носитель головы, бампать при каждом аппенде)
|
||||
# Реестр D-нот — карта актуальности v2 (D1–D39.190; титул — носитель головы, бампать при каждом аппенде)
|
||||
|
||||
> ⚠ **Колонку «тело» `counts.py --check` НЕ сторожит по устройству:** он сверяет полноту НОМЕРОВ, а не
|
||||
> место тела, поэтому колонка держится дисциплиной лендинга. Не нашёл тело по колонке — иди в слайсы,
|
||||
|
|
@ -243,8 +243,8 @@
|
|||
| D39.182 | 31.08 | **Бэкенд-пак «деньги и честность выдачи» ПРИНЯТ И ЗАЛЕНДЖЕН**: закон раскрытия (D39.181) применён к одиннадцати экземплярам; 3 блокера / 15 major / 12 minor, доработка принята. ⚠ ДВА блокера — дефекты В САМОМ ЛЕКАРСТВЕ: разложение денег завышало потери на **+59.8%**, отвергая наивный срез за 29.2%; «дешёвый зонд» выключал починку на денежной поверхности. Три касания чужих тестов санкционированы явно (утверждение · предпосылка · сценарий) | жив | ЖИВОЕ: различение уровней теста — вопрос владельцу · §2.2 против `snapshotdiff` · строка 246 | движок деньги раскрытие приёмка |
|
||||
| D39.183 | 31.08 | **Слово владельца: запрет «не подгонять тесты под зелень» — про МОТИВ.** Правка *чтобы прошло* запрещена; правка от ЗАКАЗАННОЙ или ратифицированной смены поведения — обслуживание, протухший тест не держим. ⚠ Заказанность решает ЗАКАЗ, а не сессия. Условие — объявление в отчёте | жив | ЖИВОЕ: полноту объявления не проверяет ничто — строка бэклога 248 | тесты канон процесс |
|
||||
| D39.184 | 01.09 | **Передача роли оркестратора №21 → №22.** Смена приняла P12 + минор 0.9.0, холодный прогон, закон раскрытия и одиннадцать экземпляров — D39.179–D39.182; `arch-3` закрыт. Девять названных ошибок оркестратора. ⚠ Класс смены: **отсутствие в своей области видимости принято за отсутствие вообще — четырежды у трёх участников**; норма — отрицательный результат с ПОЛОЖИТЕЛЬНЫМ КОНТРОЛЕМ | жив | ЖИВОЕ: заказ владельца 01.09 — ревизия доков на протухшее, планы бэкенда и платформы, вынос в архив | передача процесс |
|
||||
| D39.185 | 01.09 | **Четыре строки бэклога закрыты лендингами 31.08, а в таблице стояли открытыми:** 194 (деньги банк-ролей в проекции, A10) · 238 (деньги слепы к правке исходника на месте, A6) · 239 (`checkWave` не видел исчезнувшую стадию, A7+A12) · 240 (оплаченный стоп подписи мог исчезнуть молча, P12). ⚠ 238 и 239 стояли в шапке секции «Бэкенд» как СВОБОДНАЯ РАБОТА ЗОНЫ. Два опровержения текста 194 и честная граница: проекция денег стала НИЖНЕЙ | жив |
|
||||
| D39.186 | 02.09 | **Ревизия и чистка документации ВСЕХ зон по заказу владельца.** 1432 утверждения проверены исполнением, 130 живых находок (6 блокеров); три прохода агентами + финальный: живые доки 4.41 → 3.68 МБ (снято 731 КБ), вход сессии 347 → ~270 КБ. Контроль — агент Fable 5.1 сквозным контекстом: 18 потерь защищённых классов и ~27 дефектов реза найдены и починены. Нормы переведены в гейты: префикс веса бэклога · минимум токена якоря 12 знаков; линтер 52 → 0, сверяемых 16% → 22%. Строки бэклога 194/238/239/240 закрыты D39.185. | жив |
|
||||
| D39.185 | 01.09 | **Четыре строки бэклога закрыты лендингами 31.08, а в таблице стояли открытыми:** 194 (деньги банк-ролей в проекции, A10) · 238 (деньги слепы к правке исходника на месте, A6) · 239 (`checkWave` не видел исчезнувшую стадию, A7+A12) · 240 (оплаченный стоп подписи мог исчезнуть молча, P12). ⚠ 238 и 239 стояли в шапке секции «Бэкенд» как СВОБОДНАЯ РАБОТА ЗОНЫ. Два опровержения текста 194 и честная граница: проекция денег стала НИЖНЕЙ | жив | — | лендинг гигиена |
|
||||
| D39.186 | 02.09 | **Ревизия и чистка документации ВСЕХ зон по заказу владельца.** 1432 утверждения проверены исполнением, 130 живых находок (6 блокеров); три прохода агентами + финальный: живые доки 4.41 → 3.68 МБ (снято 731 КБ), вход сессии 347 → ~270 КБ. Контроль — агент Fable 5.1 сквозным контекстом: 18 потерь защищённых классов и ~27 дефектов реза найдены и починены. Нормы переведены в гейты: префикс веса бэклога · минимум токена якоря 12 знаков; линтер 52 → 0, сверяемых 16% → 22%. Строки бэклога 194/238/239/240 закрыты D39.185. | жив | — | лендинг гигиена |
|
||||
| D39.187 | 03.09 | **Приёмка бэкенд-пака «число согласия» и его дофикса.** Принят исполнением в два круга: батарея зелёная, тестов 1083→1105 при нуле удалённых, каталог мутаций 73→92 и все 19 новых КРАСНЫЕ. ⚠ Норма, купленная паком: **приёмка обязана сажать СВОИ мутации, а не пере-гонять чужие** — первый круг пропустил три неприбитые гарантии, нашли их только собственные посадки. Ратифицированы СВЕРХ заказа два правила денежного пути (обход `usd()` через $0-вызов · раскрытие $0-строки с чужим новейшим вызовом) — направление п.1 D39.150 | жив | ЖИВОЕ: развилка стоп-строки прибита с одной стороны · граница `bound()` не прибита · семантика переноса отложена словом владельца 03.09 | приёмка бэкенд деньги мутации |
|
||||
| D39.188 | 03.09 | **Приёмка платформенного пака P13 и его дофикса.** Заказ пункта 3 был НЕДОСТАТОЧЕН: голое пере-упорядочивание отказов расширяло класс — зона доказала это до и после правки, завела `PD-438` (major) и вылечила остановкой чтения на чужом handshake'е; приёмка опровергла ОБОСНОВАНИЕ («Nothing of ours can follow»), дофикс дал припаркованной попытке `ErrForeignStreamAhead` + ресинк. Гейты доведены до своих обещаний; 20 посадок приёмки красны. Закрыты `fixed(6ae3e76)`: `PD-89` · `PD-168` · `PD-214` · `PD-426` | жив | ЖИВОЕ: записка о хосте различает по имени машины, а оно общее · `PD-439` и правило ухода из класса — на оркестраторе · остаток `PD-374`: имя условия через константу невидимо | приёмка платформа шов гейты |
|
||||
| D39.189 | 03.09 | **Санкция владельца: платные прогоны с ключами разрешены для тестов.** Снимает предусловие живого сквозного прогона через API платформы (строка 202) — до сих пор он не гонялся ни разу, форму настоящих данных платформа сочинила сама. ⚠ Потолок числом НЕ назван, поэтому его называет ПАК: оценка своим замером + обязательный `--ceiling-usd` + правило «перелёт — стоп и пинг». Опора для оценки — холодный прогон 31.08 ($0.436110 на десяти главах) | жив | ЖИВОЕ: операционное предусловие — `TM_PLATFORM_ENGINE_KEYS_PATH` абсолютным путём на заполненный файл, проверять прогоном | санкция деньги прогон |
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
>
|
||||
> Это карта «куда и почему», а не пошаговая спека. Спеки — в хендофф-промтах сессий; контракт — в D-логе.
|
||||
|
||||
> ⚠ **КАК ЧИТАТЬ ШАПКУ (освежена 04.09).** Таблица «слой → статус → пак/D» ниже — единственный статус-борд этого файла: она БЬЁТ тело документа, а D-лог бьёт её. **Хроники лендингов паков здесь больше нет** — кто что построил и когда живёт в журнале решений: `05-decisions-log.md` + реестр `05-decisions-index.md` + слайсы `../archive/architecture/` (эры D39.100–D39.185 покрывают всю стройку платформы, шва и писателя книги).
|
||||
> ⚠ **КАК ЧИТАТЬ ШАПКУ (освежена 04.09).** Таблица «слой → статус → пак/D» ниже — единственный статус-борд этого файла: она БЬЁТ тело документа, а D-лог бьёт её. **Хроники лендингов паков здесь больше нет** — кто что построил и когда живёт в журнале решений: `05-decisions-log.md` + реестр `05-decisions-index.md` + слайсы `../archive/architecture/` (эры D39.100–D39.190 покрывают всю стройку платформы, шва, писателя книги и числа согласия).
|
||||
> ⚠ **ЗАКОН РАСКРЫТИЯ (D39.181) — норма зоны `backend/`, а не пункт одного пака:** число, которое движок публикует, обязано ехать со СВОИМ БАЗИСОМ, а присутствие поля не может быть булевым признаком, если оно перестало им быть. Из него же — `config_drift_basis` в `status --json` и леджер доставки в кадре `finished` (`StreamVersion` 1.2, D39.182 §4). **D39.182** («деньги и честность выдачи») добавил класс BANK в разложение денег и `noteSourceVintage`.
|
||||
> ⚠ **ПОСТРОЕНО, но в семь слоёв НЕ укладывается** (движковые оси рядом со слоями — читать шапку как полную нельзя без них): объёмный потолок оплаченной работы `--max-units`/`VolumeStop` (`backend/internal/pipeline/volume.go`, D39.170; ратифицированная единица продажи — D39.165 §1) · гейт схемы движка (`backend/internal/store/sqlgate_test.go`, D39.173: каждый SQL-оператор компилируется против схемы, поднятой продовой цепью миграций) · дверь правок банка `POST /books/{bookId}/bank/corrections` смонтирована синхронно (D39.162) · ключи деплоя доезжают до движка аргументом `--keys-file` (строка 211 ЗАКРЫТА, блокером живого прогона больше не является) · полоса прогресса СКВОЗНАЯ, подпись стадии — второе исключение границы (D39.162/163) · пере-проход можно КУПИТЬ (D39.166) · инъекция банка не теряется на провайдере с одним системным слотом (D39.164) · **ЧИСЛО СОГЛАСИЯ НА ПУТИ ВТОРОЙ ПОКУПКИ (03.09, D39.187):** пере-покупка прайсится по модели, которую стадия резолвит СЕЙЧАС, с округлением ВВЕРХ и оговоркой в тексте согласия (D39.150 п.1) — а **обещание точности снято с провода** во всех пяти местах, где стояло: контракт механизма теперь «не точность, а НАПРАВЛЕНИЕ ошибки — никогда не занизить молча»; фигура едет с базисом двумя новыми полями `status --json` (`rebill_historical_rows` · `rebill_model_moved_rows`) · **слот объёмного гранта (вторая половина строки 232):** юнит, начатый прежним прогоном и не отгруженный по оси `finalStageWave`, дописывается ВНЕ гранта и слота повторно не тратит ⚠ **следствие денежное и НЕ ратифицированное:** грант `--max-units N` оплачивает ДО 2N выходных юнитов (замер приёмки: грант 2 → четыре юнита, шесть вызовов провайдера), слово владельца 03.09 — «подумаем на этот счёт», до его решения `--max-units` держит СЛОТЫ, а деньги держит только `--ceiling-usd` (эррата 03.09-а к D39.170).
|
||||
> ⚠ **Канон контракта — 0.9.0** (D39.180, лендинг пака P12 31.08), не 0.4.0 и не 0.7.0. Носители — `docs/architecture/14-api-contract/openapi.yaml` и `platform/internal/httpapi/capabilities.go`, они сходятся гейтом.
|
||||
>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@
|
|||
## §1. Go-ответы (только то, о чём реально спорим)
|
||||
|
||||
- **Язык кода (владелец 20.07): английский** — комменты, логи, операторские дашборды/error-msg, detail-флаги. **Русским (target-языком) ОСТАЮТСЯ и не трогаются:** wire/инъекц-промпты, которые читает модель (`glossaryBlockHeader`, маркер `⟨проверить⟩`, gender-аннотации; ⚠ снятие маркера с провода — санкционированная правка строкой 134 по D39.104, двигает RequestHash; правило неперевода остальных wire-строк в силе); lang-data таблицы гейтов; тест-данные перевода. Почему: перевод wire-строки = тихая смена инструкций модели → сдвиг вердиктов + `--resnapshot` (переоплата, D30.9); перевод lang-data ломает чекеры (матчат литералом). Проверка нейтральности правки: golden байт-идентичен по content_hash/final_hash.
|
||||
|
||||
⚠ **ТРЕТЬЯ КОРЗИНА, которой правило не знало (внесена 04.09):** ЧИТАТЕЛЬСКИЕ слова целевого языка живут ДАННЫМИ и вне снапшота — `configs/langpacks/<цель>/reader.txt` (`D39.175`), и туда же относятся фразы пользователя ВСЕХ зон, которые адресуются кодом причины и локалью, а не строкой в Go (`D39.176` п.4, строка бэклога 189). То есть корзин не две, а три, и различает их не язык, а то, КТО читает: провод модели · данные пары · слова читателя и пользователя.
|
||||
|
||||
- **Имена без аббревиатур этапов (владелец 19.07):** ни `W0`/`W1`/`W1.5`/`W2` в идентификаторах, логах и комментариях — пишем `waveDraft`/`waveEdit`, «draft wave started». Аббревиатуры волн попали в глоссарий как ИСТОРИЯ и оттуда не возвращаются.
|
||||
- **Комментарий режется по ВОДЕ, а не по длине (владелец 26.07, формулировка уточнена им же 21.08).** ⚠ Счёт строк («пиши одну-две») — негодный гейт и был снят: комментарий на три строки может быть нужен, на одну — достаточен, длиной это не решается. Режем то, что не помогает читателю КОДА: пересказ решений («владелец решил… и поехали»), провенанс, сага о том, как шли, изложение исследования вместо краткой ссылки на него. Остаётся столько, сколько нужно, всё, что из одной функции НЕ выводится: порядок блокировок, инварианты между таблицами, цена забывания, вендор-квирк. Проверочный вопрос — «поможет ли это тому, кто через полгода правит именно эту функцию», а не «сколько тут строк».
|
||||
- **PlantUML: две ловушки activity-синтаксиса, каждая уже стоила реального бага (25.07).** Точка с запятой ВНУТРИ многострочной метки обрывает её; строка метки, начинающаяся с `/ | < > ] }`, читается парсером как спец-терминатор. ⚠ Диаграммы НЕ рендерить в svg/png — владелец смотрит расширением VS Code (гардрейл `CLAUDE.md`); дом диаграмм — `backend/docs/`, правятся одним коммитом с кодом.
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
- **Дубль строки безопасен, значит строка обязана быть повторимой байт-в-байт** — сверка дублей идёт по sha256 сырой строки (`tail.go:44-49`); тот же seq с другим payload = `ErrPayloadConflict` (`tail.go:20-24, 181`). Эмиттер не должен пере-генерировать уже записанную строку иначе (например, с другим timestamp при реплее).
|
||||
- **Пропуск seq фатален для чтения** (`tail.go:190`, `ErrStreamGap`) — нумерация плотная, без дыр.
|
||||
- **Недописанная последняя строка — не ошибка**: тейлер «deliberately left alone» строку без `\n` — это строка в процессе записи (`tail.go:51-55`). Это смягчает, но не снимает слепое пятно JSONL — битую запись С валидным `\n` (`research/25:74-75`); сама развилка формата решена в пользу одиночного JSONL (⚠-строка в конце §5).
|
||||
- **Ключ — engine_run_id из hello**, не прогон платформы; чужие run id в том же файле тейлер пропускает (`events.go:63-65`, `tail.go:58-60`).
|
||||
- **Ключ — engine_run_id из hello**, не прогон платформы; чужие run id в том же файле тейлер ПАРКУЕТСЯ на них, а не пропускает — ⚠ **семантика сменилась 03.09 паком P13 (`PD-438`, major), и прежняя формулировка «пропускает» БОЛЬШЕ НЕ ВЕРНА.** Пока платформа НЕ именовала поток попытки или наша первая строка ещё не применена (`pos.LastSeq == 0`), чужой handshake действительно пропускается — наш может лежать ниже по файлу. Но при ИМЕНОВАННОМ потоке и уже применённых своих строках чтение ОСТАНАВЛИВАЕТСЯ на чужом handshake'е (`platform/internal/ingest/tail.go`, греп `ErrForeignStreamAhead`), и курсор на нём остаётся: владение потоком не переживает проход свипа — оно выводится заново каждый проход, и «пройти мимо, двигая байтовый хинт» означало отдать следующему проходу курсор, который говорит «эта чужая область — наша». Цена прежнего поведения замерена: чужой `ceiling` ставил `paused` живому оплаченному прогону, `unit_done` писал главы, которых никто не покупал, а чужой `seq` карантинил здоровую проекцию).
|
||||
|
||||
## 4. Деньги и потолок
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
|---|---|---|---|
|
||||
| ПТ-12 | Низкий COGS: дешёвые модели + адресные дорогие вызовы (V0-п.3/12; канон §5) | ✅ | ~$0.85/ранобэ (D30.4); ре-проба исполнена и строка 74 закрыта (замер D39.86/91, закрытие D39.95); статус пере-калибровки цены — `STACK.md` §Примечания·Цена |
|
||||
| ПТ-13 | Телеметрия токенов/стоимости с первого вызова, БД (V0-п.25/31) | ✅ | SQLite `request_log`/леджер/смета; ⚠ леджер = нижняя граница (строка 78) |
|
||||
| ПТ-14 | Потолки бюджета и явное согласие на пере-оплату (канон §5) | 🔶 | reserve/settle и потолки ✅ (траты защищены). ⚠ **Статус понижен с ✅ приёмкой №18 (D39.149): само ЧИСЛО согласия неполно и приблизительно** — пере-прайс по текущей таблице цен исполнен (строка 181 закрыта), но: деньги банковых ролей в число не входят вовсе (194) · при смене модели стадии считается цена ОТСТАВЛЕННОЙ модели (решено 17.08: прайсить по текущей + округлять вверх и называть оговорку — D39.150) · принадлежность вызова поколению ВЫВОДИТСЯ, а не хранится (195). Щель терминолога = строка 38 |
|
||||
| ПТ-14 | Потолки бюджета и явное согласие на пере-оплату (канон §5) | 🔶 | reserve/settle и потолки ✅ (траты защищены). ⚠ **Статус понижен с ✅ приёмкой №18 (D39.149): само ЧИСЛО согласия неполно и приблизительно** — пере-прайс по текущей таблице цен исполнен (строка 181 закрыта), но: деньги банк-ролей ВХОДЯТ в число с 31.08 (строка 194 закрыта D39.185: `rebill.go` `bankRoleCommittedUSD`, пин `bankrolemoney_test.go`) · ось модели ПОСТРОЕНА 03.09 (D39.187): цена берётся по модели, которую стадия резолвит СЕЙЧАС, с округлением вверх — прежде считалась цена отставленной модели (решено 17.08: прайсить по текущей + округлять вверх и называть оговорку — D39.150) · принадлежность вызова поколению ВЫВОДИТСЯ, а не хранится (195). Щель терминолога = строка 38 |
|
||||
|
||||
## Чувствительный контент
|
||||
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
|
||||
| ID | Требование (источник) | Статус | Носитель / доказательство |
|
||||
|---|---|---|---|
|
||||
| ПТ-20 | Ридер-IDE: VS Code-подобный фронт агентного перевода (V0-п.20/23) | ⭕ | research/16 принят (D29); строки 69–71; F3-brief — D29 п.3. Ф3 ОТКРЫТА 02.08 (D39.81): фронт-сессия живёт на моках; контракт API ратифицирован (D39.99; ⚠ версию канона брать ФАЙЛОМ, не этой ячейкой — норма и команда в карте `README.md`. Открытыми по контракту остаются хвост строки **203** и строка **241** — самопротиворечие канона на дочитанной книге.); платформа построена до читающей поверхности и денежной двери (паки P0…P12 — реестр нот; ⚠ КВОТ нет ни строки кода, и по D39.176 п.1 не будет — продуктовых квот нет, фри-тир-лимиты не проектируются; ретеншен/свип остаются инженерной гигиеной); фронт — S0–S4 приняты, **зона ЗАМОРОЖЕНА** (D39.136 п.2 + D39.147: сначала движок и платформа до «работает и отдаёт результат», фронт накручивается на готовую функциональность) |
|
||||
| ПТ-20 | Ридер-IDE: VS Code-подобный фронт агентного перевода (V0-п.20/23) | ⭕ | research/16 принят (D29); строки 69–71; F3-brief — D29 п.3. Ф3 ОТКРЫТА 02.08 (D39.81): фронт-сессия живёт на моках; контракт API ратифицирован (D39.99; ⚠ версию канона брать ФАЙЛОМ, не этой ячейкой — норма и команда в карте `README.md`. Открытыми по контракту остаются хвост строки **203** и строка **241** — самопротиворечие канона на дочитанной книге.); платформа построена до читающей поверхности и денежной двери (паки P0…P13 — реестр нот; ⚠ КВОТ нет ни строки кода, и по D39.176 п.1 не будет — продуктовых квот нет, фри-тир-лимиты не проектируются; ретеншен/свип остаются инженерной гигиеной); фронт — S0–S4 приняты, **зона ЗАМОРОЖЕНА** (D39.136 п.2 + D39.147: сначала движок и платформа до «работает и отдаёт результат», фронт накручивается на готовую функциональность) |
|
||||
| ПТ-21 | Параллельное чтение двух текстов с выравниванием по смыслам (V0-п.21); выравнивание грубое, по единицам экспорта — принято владельцем 02.08, спаны внутри текста не строятся | 🔶 | механизм готов: `tmctl export --pairs` выравнивает пары побайтно по единицам редактуры (`internal/pipeline/export.go:147`=`aligned byte-for-byte`); якорь = **edit-unit**, НЕ чанк (переформулировано D39.84 — финальный текст существует только на уровне юнита, ~1.9 юнита/главу, местами глава = один блок; читалка обязана это выдерживать); UI-читалка = Ф3 (этап S6) |
|
||||
| ПТ-22 | Настройки от человека: 18+, жанр и т.п. (V0-п.22) | 🔶 | `book.yaml` (labels) данными; UI = Ф3. ⚠ ЖАНР из продукта ВЫКИНУТ словом владельца 16.08 (D39.138 п.2в, строка 184: ни на чём не ветвится, влияние не измерено; снимается из промптов/брифа/контракта/формы) |
|
||||
| ПТ-23 | Веб-ПЕРВЫЙ фронт; SEO/ранжирование Google — куки, страницы-сироты, актуальные алгоритмы (V5-п.2); продукт = **SaaS**, не локальное приложение (решение владельца 02.08, D39.81 — натив-прицел V0-п.26 СНЯТ этим решением, вернуть только новым словом владельца); SEO только под Google, Яндекс снят; рынок глобальный; десктоп = PWA первым шагом, Tauri по явным триггерам (решения владельца 02.08, D39.84) | ⭕ | строка 71 (Ф3-бриф); SEO вошёл в стек-дизайн ДО выбора (D39.84, требование исполнено): двухконтурный деплой — SPA `app.<домен>` целиком под noindex + статический публичный контур ≤3 кликов от главной (лечение страниц-сирот), `frontend/docs/STACK_DECISIONS.md` §4; SSR-вопрос закрыт этим решением |
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Add table
Reference in a new issue