From cf5fe268d79079278cdaac5d2dc95104a679202f Mon Sep 17 00:00:00 2001 From: "Claude (backend session)" Date: Mon, 17 Aug 2026 01:13:53 +0300 Subject: [PATCH] Issue the honesty-pack prompt after two refuter passes: operator-facing consent text, swallowing recover and the seam consumer list were all missing --- docs/BACKEND_HONESTY_PACK_SESSION_PROMPT.md | 98 +++++++++++++++------ docs/PROGRESS.md | 2 +- docs/README.md | 2 +- 3 files changed, 75 insertions(+), 27 deletions(-) diff --git a/docs/BACKEND_HONESTY_PACK_SESSION_PROMPT.md b/docs/BACKEND_HONESTY_PACK_SESSION_PROMPT.md index 92c320d6..8c2f4b88 100644 --- a/docs/BACKEND_HONESTY_PACK_SESSION_PROMPT.md +++ b/docs/BACKEND_HONESTY_PACK_SESSION_PROMPT.md @@ -4,9 +4,11 @@ > Вес пака — лёгкий-средний: четыре точечных места, приёмка инлайн. > > **Что сознательно НЕ вошло** (подписываю пропуск, чтобы ты не считал это забывчивостью и не -> «дочинил» молча): **146** (гейт свежести цен запирает $0-пути `report`/`status`) · **173** +> «дочинил» молча): **146** (гейт свежести цен запирает read-only `report` и **$0-resume**) · **173** > (`backupStamp` секундной точности маскирует «проект занят») · **177** (гигиена restore point у -> `migrate`: рваная копия при `kill -9`, копии не подчищаются, SIGINT не прерывает) — все три той же +> `migrate`, ПЯТЬ пунктов: ретрай в ту же секунду = exit 1 вне полосы на цикле самолечения · рваная +> копия при `kill -9` · копии не подчищаются · SIGINT не прерывает · **комментарий `migrate.go` «no +> money touched» на no-op неверен** — да, последний ровно темы этого пака, и всё равно не берём) — той же > темы «движок врёт наружу», но в другой области кода (деплой и бэкап), и владелец выбрал МЕЛКИЙ пак. > Увидишь их по пути — не трогай, а перечисли в отчёте. @@ -61,6 +63,9 @@ git, и норма «персист, не scratch» требует, чтобы комментарием `cmd/tmctl/main.go:61-75`; при расхождении верь коду. Греп по номеру: сначала живой файл, потом слайсы `docs/archive/architecture/`. 5. `docs/experiments/00-provider-quirks.md` — **только если** дойдёт до пункта 5 (живой прогон вахты). + ⚠ Его ЦЕНОВАЯ фактура протухла: док до сих пор пишет «цены DeepSeek не изменились (flash + $0.14/$0.28…)», а они сменились 16.08 (§0 этого промта и D39.137) — бери оттуда квирки поведения, + не числа; расхождение назови в отчёте, чинить док не твоя зона. Всё остальное — код, и его ты достаёшь сам. @@ -75,8 +80,11 @@ git, и норма «персист, не scratch» требует, чтобы - **Эхо-мина DeepSeek:** thinking НИКОГДА не отключать (`reasoning:"off"` там осознанный no-op, гейт `echoMineViolation` валит конфиг fail-fast). Касается пункта 5. - **Язык кода — английский** (решение владельца 20.07, `12-go-style-notes` §1): комментарии, логи, - тексты ошибок, usage-строка. Русским остаются ТОЛЬКО wire/инъекц-промпты, которые читает модель, и - lang-data таблицы — их пак не трогает. Пункты 2 и 4 пишут именно код и комментарии ⇒ по-английски. + тексты ошибок, usage-строка. Русским остаются три категории: wire/инъекц-промпты, которые читает + модель · lang-data таблицы гейтов · **тест-данные перевода** (русские/китайские строки в фикстурах + легитимны и англизировать их НЕ надо — пак пишет тесты, это его прямо касается). +- **Деньги на платном пути:** пункт 5 гоняет живую цепь `reserve → call → settle` через + `runBankAttempt` — цепь не трогать, леджер не сбрасывать, расход читать из леджера пробы. ## 3. Состав @@ -88,8 +96,20 @@ git, и норма «персист, не scratch» требует, чтобы точки заказа: `internal/pipeline/rebill.go` (сложение исторического `cost_usd`; гейт согласия и его порог), `internal/pipeline/stagerun.go` (резерв и сеттл новой таблицей). **Тест обязателен и обязан падать на до-фиксном коде** (сценарий: единицы куплены по старой цене → цена сменилась → согласие -спрашивают на новую сумму). ⚠ Комментарий `rebill.go` про «over-estimating is the safe direction» -после фикса обязан стать правдой или уйти. +спрашивают на новую сумму). +⚠ **ВСЕ тексты, описывающие проекцию как сумму исторических `cost_usd`, после фикса обязаны стать +правдой или уйти** — не один комментарий. Минимум: `rebill.go:81` («over-estimating is the safe +direction») · **`rebill.go:280` — операторское сообщение отказа гейта, где скобка «(the sum of their +stored cost_usd)» станет ложью в самом видимом месте, в тексте согласия** · `status.go:150-155` · +`status.go:609` · **`status.go:195`** — комментарий поля `ProjectedBookUSD` («committed extrapolated +over the whole book») противоречит самой функции, которая committed книги сознательно НЕ использует +(`rebill.go:177-178`). Найдёшь ещё — тем же касанием. +⚠ **Развилка источника чисел — размечаю, потому что она меняет смысл числа согласия:** `ChunkStatus` +несёт только суммарный `CostUSD` без токенов (`store/chunkstatus.go:21-33`), а мост к usage +чекпоинта (`FinalHash`) существует только на ok-пути — flagged-строки, которые проекция тоже считает, +к своим usage не привязаны. Значит пере-прайсить можно ФАКТИЧЕСКИМИ токенами (там, где они +достижимы) либо ОЦЕНКОЙ той же функцией, что считает резерв. **Выбери и аргументируй в отчёте** — +без этого две сессии дадут два разных «честных» числа. **`projected_book_usd` у `status` — В СКОУПЕ, а не «проверь и назови»**: заказ строки утверждает ту же болезнь, и оставить её значит оставить `status` врущим. ⚠ **Развилка, которую обязан разрешить явно:** сам ПОРОГ согласия тоже считается из этой проекции — починить числитель новой таблицей и оставить базу @@ -103,37 +123,56 @@ git, и норма «персист, не scratch» требует, чтобы - **0–5 не трогать** (0–3 — Milestone 2 / R1-FL-A, живут комментарием `cmd/tmctl/main.go:61-75`; 4 и 5 ратифицированы D39.131 п.2а). В частности **exit 2 НЕ переносить**: значение «завершено с флагами» зашито у потребителя намертво - (`platform/internal/ingest/exit.go:24,89` · `platform/internal/runs/reconcile.go:484` → `ready`), и + (`platform/internal/ingest/exit.go:24,89` · `platform/internal/runs/reconcile.go:485` → `ready`), и «развести номера, оставив полосу 10–19 нетронутой» **сломает шов, не нарушив буквы этого запрета** — каждый честно флагнутый прогон станет `failed`, а чтение денег сломается вместе с ним. -- **10–19 не расширять и для паники НЕ использовать** — полоса обещает «ничего не произошло, ничего - не потрачено, ничего не записано» (D39.134 п.2г), а паника случается посреди оплаченной работы; - посадить её на 19 значит соврать наоборот. +- **10–19 не расширять и для паники НЕ использовать** — полоса обещает, дословно комментарием кода, + «nothing reached a provider, nothing was spent, nothing was written» (`cmd/tmctl/main.go:31-32`; + то же у потребителя — `platform/internal/ingest/exit.go:36-37`; направление ратифицировано + D39.134 п.2, где формулировка короче — «полоса обещает „ничего не произошло, жди"»). Паника + случается посреди оплаченной работы ⇒ посадить её на 19 значит соврать наоборот. - **Безопасное направление:** код, который сегодняшняя платформа читает как `failed` — то есть **1** либо номер ВНЕ обеих полос. Выбрал не 1 — аргумент в отчёт и пинг, потому что это словарь шва. -⚠ **Ловушка, на которой фикс выглядит зелёным и молчит на настоящем пути:** платный путь исполняется -пулом воркер-горутин (`internal/pipeline/waverun.go:260`), а `recover` в `main`/`run` ловит только -главную горутину. **Предмет — «паника ЛЮБОЙ горутины движка не читается как успех»**, и тест обязан -это покрывать; фикс, падающий только на синтетической панике в main, заказ не закрывает. +⚠ **Три ловушки, на которых фикс выглядит зелёным и молчит на настоящем пути:** +- **Воркеры.** Платный путь исполняется пулом горутин (`internal/pipeline/waverun.go:260`), а + `recover` в `main`/`run` ловит только главную. **Предмет — «паника ЛЮБОЙ горутины движка не + читается как успех»**, и тест обязан это покрывать; фикс, падающий только на синтетической панике + в main, заказ не закрывает. +- **⚠ Готовый соблазн в репо, который даёт ПРОТИВОПОЛОЖНОЕ заказу:** `internal/obs/safego.go` + логирует панику и ПРОДОЛЖАЕТ — её докстринг (`:9-12`) прямо обещает «dies alone instead of taking + the process down», тело recover — `:16-22`. Обернуть им + воркеров = паника посреди оплаченной работы превратится в exit **0**. **Проглатывающий recover + здесь запрещён**: паника обязана стать ошибкой, доводящей прогон до провального кода. +- **Обёртка ошибки.** Ошибка, рождённая из recover, не должна матчиться сентинелями словаря + (`errors.Is/As` по `context.Canceled` и типам `pipeline.*`, `cmd/tmctl/main.go:87-111`) — иначе она + тихо уедет в ЛЮБОЙ не-провальный код словаря при формально нетронутом словаре: 2 флаги · 3 стоп на + подпись · 4 потолок (`CeilingHalt` — платформа читает его как `paused`) · 5 graceful · 10–19 отказ + (`Refusal`). Прибей это тестом. Стек паники обязан доехать до stderr: диагностика важнее лаконичности. **Попутно тем же касанием** (сам заказ строки): usage-строка `cmd/tmctl/invocation.go:96` не знает команд `migrate` / `backup` / `seed-lint`. ⚠ Её байты запинены тестом замороженного контракта (`cmd/tmctl/invocation_test.go:23`) — **обновить тест ВМЕСТЕ со строкой здесь санкционировано** -(ратифицированная правка контракта, D39.134 п.3): это не подгонка под зелень, и §4-запрет сюда не -применяется. Любая ДРУГАЯ правка замороженных байтов — пинг. +(санкция — тело строки 176 + D39.134 п.3, это секция «Строки» ноты, то есть реестр, а не отдельная +ратификация — статус называю честно): это не подгонка под зелень, и §4-запрет сюда не применяется. +Любая ДРУГАЯ правка замороженных байтов — пинг. **3. Строка 172-г — выборочный порог в риг вахты.** Внести ратифицированную форму порога (**D39.136 п.6б: «≥4/5 прогонов при N=5 достигают 6/6»**) в `internal/pipeline/live_reprobe_test.go` вместо действующего «6/6 на КАЖДОМ прогоне». Комментарий рига, объявляющий расхождение порога и выборки открытым вопросом владельца, обязан быть переписан: вопрос ЗАКРЫТ, сошлись на выборочной -форме. Риг под тегом `live` — компилируемость проверяется `make battery` (в `vet` оба набора тегов). +форме. **Переписать надо и комментарий, и ТЕКСТ `t.Fatalf` рига** (`:187-190`, «decide with the +owner…») — он тоже объявляет вопрос открытым. Риг под тегом `live` — компилируемость проверяется +`make battery` (в `vet` оба набора тегов). ⚠ **Порог не «смягчить», а внести ратифицированный.** Подгонять гейт под желаемый результат -недопустимо; если считаешь ратифицированную форму неверной — пиши пинг, не правку. -⚠ Ратифицирована форма **для N=5**; риг допускает переопределение размера выборки переменной -окружения — зафиксируй в коде и комментарии, что порог определён на N=5, а иное N выводит прогон -из-под гейта (изобретать формулу для произвольного N — не твоя работа, это ратификация). +недопустимо; если считаешь ратифицированную форму неверной — пиши пинг, не правку. **Карв-аут к +§4-запрету:** правка ЭТОГО гейта и есть заказ пункта, она санкционирована D39.136 п.6б — запрет +касается всего остального. +⚠ Ратифицирована форма **только для N=5**; риг принимает переопределение выборки через +`TM_CLASSIFY6_N` (`live_reprobe_test.go:103-107`). **Не выводи иное N «из-под гейта» — это создало бы +тихий обход:** прогон с N≠5 обязан ГРОМКО отказать («порог определён только на N=5») и не +засчитываться вахтой; нужен другой N — пинг, а не своя формула. **4. Строка 187 — два лживых комментария.** `internal/pipeline/snapshot.go` («auto/draft исключены per D8») и докстринг `internal/membank/memory.go` («Approved-only») описывают до-паковое поведение; @@ -153,7 +192,9 @@ RebillUSD: read-путь не материализует base-банк ⇒ ин `TM_LIVE=1 TM_CLASSIFY6_CONFIG=~/books/gu-zhenren/coldrun-b/reprobe/classify6/book.yaml go test -tags live -run TestLiveClassifierHarmSet -v ./internal/pipeline/`. Сырьё персистить рядом с проектом пробы (риг это делает сам — файл `classifier-6of6-.json`), ЛЕДЖЕР не сбрасывать, принимать только `finish=stop`, потратить не больше названной владельцем суммы. ⚠ **Стартовать вне пиковых окон DeepSeek (01–04 и 06–10 UTC)** — в пике вызов -стоит вдвое; суммы копеечные, но правило стоячее. ⚠ **Thinking у DeepSeek не отключать ни при каком +стоит вдвое; статус этого правила называю честно — это РЕКОМЕНДАЦИЯ при открытом схемном решении +владельца (строка 172-а), а не ратифицированная норма; следуй ей, но не ссылайся как на закон. +⚠ **Thinking у DeepSeek не отключать ни при каком уровне эффорта** — это эхо-мина, и гейт `echoMineViolation` обязан оставаться в силе. **Санкции нет в твоём запуске — пункт НЕ исполняется**, и это не obstacle, а норма: платные вызовы без явно названной суммы запрещены. @@ -161,6 +202,9 @@ RebillUSD: read-путь не материализует base-банк ⇒ ин запросы к модели и ПОЛУЧЕННЫЕ ответы своими глазами, а не только агрегат рига — совпадает ли отправленное с тем, что ты думаешь, что отправил (модель, уровень эффорта, thinking, состав промпта), и подтверждают ли сырые ответы вердикт, который печатает риг. Расхождение — в отчёт, а не в сноску. +⚠ Носитель для этого назову, иначе требование вырожденное: артефакт рига несёт только ОТВЕТЫ +(`classifier-6of6-*.json`), тел запросов там нет — их достаёшь `LOG_LLM_BODIES=1` + `LOG_LEVEL=debug` +(`cmd/tmctl/main.go:155-159`) либо дампом `classifierMessages`. **Чего НЕ делать (жёстко).** - Не трогать ничего, что двигает провод: тела промптов, состав инъекции, версии снапшота, @@ -195,9 +239,13 @@ RebillUSD: read-путь не материализует base-банк ⇒ ин пере-считать вручную, из сырого леджера, число согласия ДВУМЯ независимыми путями и сверить с тем, что печатает движок. ⚠ **Только на КОПИИ стендовой БД, вне живого проекта** — `translate` пишет в проект ещё до гейта согласия (пре-флайт бэкап), и «проба на живом» испортит и стенд, и улику; - (б) **линза шва** — инвентарь ВСЕХ кодов выхода и их потребителей ЧТЕНИЕМ кода платформы - (`platform/internal/ingest/`, `platform/internal/runs/`), а не по твоему списку: изменил ли пункт 2 - то, что платформа читает. Плюс **свои посадки-мутации** в новые тесты (не из ожидаемого тобой + (б) **линза шва** — инвентарь ВСЕХ кодов выхода и их потребителей ЧТЕНИЕМ кода платформы, а не по + твоему списку: изменил ли пункт 2 то, что платформа читает. ⚠ **Ищи грепом по ВСЕМУ `platform/`** + (`ExitCode`, `OutcomeOf`, `CompletedWithFlags`, числовые константы кодов), а не по двум каталогам: + потребители живут минимум в четырёх местах — `internal/ingest/exit.go` и `supervisor.go` · + `internal/runs/reconcile.go` · **`internal/runner/engine.go`** (exit 2 на канале расчёта денег) · + **`internal/books/parse.go`** (ДЕСТРУКТИВНЫЙ switch интейка: по коду удаляется загрузка + пользователя). Перечисление каталогов — как раз то, что прячет последние два. Плюс **свои посадки-мутации** в новые тесты (не из ожидаемого тобой списка). **Артефакт — таблица «находка → диспозиция»** в отчёте; ноль находок = не верить прогону, спавнить третьего. Считаешь, что для этого пака вернее другие оси ревью, — **замени с аргументом**; молча сузить нельзя. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 8027cf61..a64c426b 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,6 +1,6 @@ # Журнал прогресса -> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-17, голова D39.147 — КУРС: движок и платформа до «работает и отдаёт результат», фронт морозится ДАЛЬШЕ лендинга P7. ОЧЕРЕДЬ №18 (единственный носитель — здесь): (а) приёмка живого P7 → лендинг **БЕЗ S5 и без разморозки** (D39.147: P7 зону не размораживает) · (а2) промт бэкенд-пака честности выдан — `BACKEND_HONESTY_PACK_SESSION_PROMPT.md` (176 · 181 · 172-г · 187; п.5 живой вахты — только при названной владельцем сумме), запуск по слову владельца · (б) лендинг петель полигона — ⚠ в дереве НЕзадокументированная работа 16.08 (`eval/dovodka/PLAN-16-08.md`, `ja6.py`, `naklon.py`, свежие фризы) без записи в журнале, состав выяснить у полигона · (в) вахта весов V4-Pro-0813 с порогом 116 в риге (172-г) · (г) свободные бэкенд: 160 Этап 0, 181 (дедлайн — первый пере-прогон) · (д) строка 148 после фраз владельца; лента нот эры — реестр `architecture/05-decisions-index.md`). Оркестраторов ДВА (решение владельца 07.08): этот — движок/платформа/фронт/доки; параллельный (РОЛЬЮ, без номера — счётчик один, D39.112 п.6) — приёмка полигона. Одновременно не запускаются; CURRENT-STATE ведут оба, чужие строки не трогают. Норма изоляции панелей после инцидента отката чужих файлов — D39.113, гардрейлы в CLAUDE.md. +> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-17, голова D39.147 — КУРС: движок и платформа до «работает и отдаёт результат», фронт морозится ДАЛЬШЕ лендинга P7. ОЧЕРЕДЬ №18 (единственный носитель — здесь): (а) приёмка живого P7 → лендинг **БЕЗ S5 и без разморозки** (D39.147: P7 зону не размораживает) · (а2) промт бэкенд-пака честности ВЫДАН — `BACKEND_HONESTY_PACK_SESSION_PROMPT.md` (176 · 181 · 172-г · 187; п.5 живой вахты — только при названной владельцем сумме), запуск по слову владельца; рубежи D39.141 закрыты двумя проходами опровергателя + сверкой вливания (⚠ урок в норму: первый опровергатель САМ принёс ложную атрибуцию кодов 0–3 ноте D39.131, поймал её автор сверкой с телом ноты — рубежи не заменяют друг друга, они ловят разное) · (б) лендинг петель полигона — ⚠ в дереве НЕзадокументированная работа 16.08 (`eval/dovodka/PLAN-16-08.md`, `ja6.py`, `naklon.py`, свежие фризы) без записи в журнале, состав выяснить у полигона · (в) вахта весов V4-Pro-0813 с порогом 116 в риге (172-г) · (г) свободные бэкенд: 160 Этап 0, 181 (дедлайн — первый пере-прогон) · (д) строка 148 после фраз владельца; лента нот эры — реестр `architecture/05-decisions-index.md`). Оркестраторов ДВА (решение владельца 07.08): этот — движок/платформа/фронт/доки; параллельный (РОЛЬЮ, без номера — счётчик один, D39.112 п.6) — приёмка полигона. Одновременно не запускаются; CURRENT-STATE ведут оба, чужие строки не трогают. Норма изоляции панелей после инцидента отката чужих файлов — D39.113, гардрейлы в CLAUDE.md. > - **Эра №15 закрыта — семь приёмок, все ПРИНЯТЫ и залендены**; лента, коммиты и разборы — D39.109–123 (D-лог) и реестр нот `architecture/05-decisions-index.md`; снимок прежних бюллетеней этой шапки — архив-слайс `-08-02-04`. > - **ЖИВОЕ:** полигон — **фаза Д ИДЁТ** (заказ 10.08; деньги санкционированы 15.08 напрямую полигону — ⚠ числа потолка в носителях расходятся, фактическую цепь сверить при лендинге петель; ja-книга `enkan_no_hate_ja`; при ратификации фазы Д в D-ноту: декой-правило + обязательный кросс-семейный опровергатель приёмки — одобрены 10.08; свежие фриз-коммиты полигона в дереве — НЕ трогать) · **платформа — P7 ЗАПУЩЕН 16.08** (промт `platform/docs/PLATFORM_P7_SESSION_PROMPT.md`, строит по канону 0.3.0; приёмка — очередь №18; первым шагом пака — рантбук migrate end-to-end, предусловие выката) · **фронт ЗАМОРОЖЕН** (D39.136 п.2 + **D39.147: морозится ДАЛЬШЕ лендинга P7 — слово владельца 17.08; P7 зону НЕ размораживает, S5-промт не выдаётся, разморозка отдельным словом по достижении сквозного пути**; перечень первого касания зоны — зеркало 0.3.0 + перегенерация типов + моки + гейт утечки конвейера + ФС-1..12 + Ф-63/Ф-28 + фразы В-11 по словарю кодов — не отменён, ждёт разморозки) · **контракт 0.3.0 ФИНАЛЕН в каноне** (батч+дофикс D39.142/143 · модель подписи «один ОК» D39.144 · дочистка D39.145; зеркало фронта отстаёт ратифицированно) · закрытые стройки эры — лентой нот: эмиттер D39.131 · P5/P6 D39.130/132 · migrate D39.134 · S4+0.2.3 D39.135 · DeepSeek-репин D39.137 (тела — D-лог и слайсы). > - **Открыто на владельце:** **развязка git с origin** (локальная линия ИСТИННА, force-push его рукой; не пуллить) · Приложение А контракта (148: фразы — по словарю кодов 0.3.0, структура готова) · продуктовое слово «остановлена: лимиты» (В-3) · В-4/Ф-30 (глава без заголовка — движковая половина строка 160) · мини-проба флора 44 (одобрена, промт не выдан; число — после ре-пробы 188) · подпись денежного шага 46 · лист В-3+К-6 · авто-резюм paused (вопрос платформы) · **схема time-based DeepSeek** (доклад — архив-слайс `PROGRESS-2026-08-14-15`; рекомендация: пик оставить + операционное правило «прогоны в долины», scheduler не начинать без ответа вендора об отметке тарификации) · **вход ратификации фазы Д:** посылка «dspro дешевле glm» в пике ПЕРЕВЁРНУТА (×1.26 дороже, D39.137 п.4) · **возражение Sol по проходу `tier` эксп-23** (пере-судить починенным ригом или оставить с записанным возражением — секция «Полигон») · фронт-вопросы зонного журнала: В-7 (плотность; держит Ф-54) · В-8 (слово состояния в дереве) · В-9 (языки интерфейса — механизм готов, ПТ-36) · Ф-38 (вкладка «Замечания»). Закрытые пункты листа (PD-104 · В-10 · В-11-форма · Ф-56/57/61/62/63 · Ф-28 · ПТ-33-граница · 116 · 126 · 172-пин · PD-203 · санкции фазы Д · дизайн 160/161 · title) — в нотах D39.136–145, здесь не держатся. diff --git a/docs/README.md b/docs/README.md index 3809bdb9..a69a10bc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,7 +17,7 @@ - `research/` — фактура ресёрчей 01–28; у принятых — ревью-шапки, часть тел под ⚠ superseded: **читай баннер прежде содержимого**. Ключевые для навигации: 15 голос · 16 ридер-IDE · 17 внешняя критика · 18 рычаги качества · 19 нарезка · 20 банк-майнинг · 21 обзор транспорта · 22 доменные харнессы · 23 шов движок↔платформа (транспорт superseded D39.106) · 25 холодное ревью шва — форма D39.106, отвергнутые альтернативы, требования к эмиттеру (читать перед любым кодом стыка) · 24 арбитраж банка (ПРИНЯТ D39.102: консилиум закрыт классом, вход фикс-пака банка — §G) · 26 официальные практики Anthropic (D39.121: записка-план, сниппеты хендоффов, карта «уже делаем/перенять») · **28 контракт-ревью API v0 (ПРИНЯТ D39.138: решения владельца 16.08 — §8, состав батча 0.3.0 — §5; НОСИТЕЛЬ для исполняющих сессий, читать оригинал, не пересказ)**. - [PROGRESS.md](PROGRESS.md) — журнал: CURRENT-STATE + **ЕДИНЫЙ БЭКЛОГ** (единственный трекер) + живой хвост хроники. НЕ источник решений. - `scripts/counts.py` — **производные числа доков считаются им, а не руками** (голова по трём носителям · счёт очереди и зон · вес открытых строк регистра платформы · полнота реестра нот); `--check` даёт ненулевой код на расхождении; `--lint` — линтер file:line-якорей живых доков (D39.126). Его же зовёт зонный хук `scripts/githooks/pre-commit` при коммите, задевающем D-лог или PROGRESS — предупреждает, не блокирует. Заведено по D39.112 п.5б: голова отставала трижды у трёх разных оркестраторов. -- Активные хендофф-промты сессий (состав обновляется при каждом лендинге — норма D39.80): [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) (роль/нормы; состояния не дублирует) · **Батч 0.3.0 ОТРАБОТАН ЦЕЛИКОМ (D39.142+D39.143): канон 0.3.0 финален**, промт в `archive/prompts/`, отчёт — `archive/reports/CONTRACT_BATCH_0.3.0_REPORT.md` · **Полигон: [POLYGON_EXP2223_REDO_SESSION_PROMPT.md](POLYGON_EXP2223_REDO_SESSION_PROMPT.md)** — фаза Д доводки эксп-22/23 ИДЁТ (заказ владельца 10.08; потолки фазы поднимал владелец напрямую — числа в CURRENT-STATE; выводы 22/23 заморожены до неё), хендофф живой сессии — [POLYGON_PHASE_D_HANDOFF.md](POLYGON_PHASE_D_HANDOFF.md) (испр. оркестратором №18: файл заленден `67e3260`, в составе не значился) · [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md) (отложен). **Фронт: ЗОНА ЗАМОРОЖЕНА (D39.136 п.2)** — S4 ИСПОЛНЕН и ПРИНЯТ (D39.135, лендинг `267aa35`; контракт 0.2.3 в каноне; промт в `frontend/docs/archive/`); ⚠ **разморозка БОЛЬШЕ НЕ привязана к P7** — слово владельца 17.08 (D39.147): зона морозится дальше лендинга P7, S5-промт не выдаётся, курс — движок и платформа до «работает и отдаёт результат»; разморозка отдельным словом. Перечень первого касания (зеркало 0.3.0 · типы · моки · гейт утечки · ФС-1..12 · Ф-63/Ф-28 · фразы В-11 по словарю кодов; ~~В-10~~ закрыт «вежливость») не отменён, ждёт разморозки; живой smoke против дев-стенда легитимен и во фризе; фикс-лист ФС — запись приёмки 15.08 в зонном журнале · **Платформа: активного промта НЕТ** — P6 + дофикс ИСПОЛНЕНЫ и ПРИНЯТЫ (D39.132, промты в `platform/docs/archive/`); **P7 ЗАПУЩЕН 16.08, сессия ЖИВАЯ**: `platform/docs/PLATFORM_P7_SESSION_PROMPT.md` (читающая поверхность по финальному канону 0.3.0 + модель ошибок + форварды + PD-104 + демонтаж гейта полноты банка; приёмка — оркестратор №18) · **Бэкенд: [BACKEND_HONESTY_PACK_SESSION_PROMPT.md](BACKEND_HONESTY_PACK_SESSION_PROMPT.md) ВЫДАН 17.08, запуск по слову владельца** (пак «честные числа и статусы»: строки 176 · 181 · 172-г · 187; п.5 живой вахты весов исполняется ТОЛЬКО при названной владельцем сумме) — ранее: пере-пин цен DeepSeek ИСПОЛНЕН и ПРИНЯТ (D39.137, лендинг `76049bb`; промт в `archive/prompts/`), потолки снова защищают; `tmctl migrate` — D39.134 (`d55edd4`), деплой эмиттер-бинаря разблокирован. Эмиттер шва ИСПОЛНЕН и ПРИНЯТ (D39.131, промт в архиве). Все ОТРАБОТАННЫЕ промты — в `archive/prompts/`, отчёты с ревью-шапками — в `archive/reports/`; статусы паков — CURRENT-STATE и D-лог, здесь не дублируются. Зонные журналы фронта/платформы — `frontend-PROGRESS.md` / `platform-PROGRESS.md` в их зонах (прогресс зон только там, D39.100). +- Активные хендофф-промты сессий (состав обновляется при каждом лендинге — норма D39.80): [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) (роль/нормы; состояния не дублирует) · **Батч 0.3.0 ОТРАБОТАН ЦЕЛИКОМ (D39.142+D39.143): канон 0.3.0 финален**, промт в `archive/prompts/`, отчёт — `archive/reports/CONTRACT_BATCH_0.3.0_REPORT.md` · **Полигон: [POLYGON_EXP2223_REDO_SESSION_PROMPT.md](POLYGON_EXP2223_REDO_SESSION_PROMPT.md)** — фаза Д доводки эксп-22/23 ИДЁТ (заказ владельца 10.08; потолки фазы поднимал владелец напрямую — числа в CURRENT-STATE; выводы 22/23 заморожены до неё), хендофф живой сессии — [POLYGON_PHASE_D_HANDOFF.md](POLYGON_PHASE_D_HANDOFF.md) (испр. оркестратором №18: файл заленден `67e3260`, в составе не значился) · [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md) (отложен). **Фронт: ЗОНА ЗАМОРОЖЕНА (D39.136 п.2)** — S4 ИСПОЛНЕН и ПРИНЯТ (D39.135, лендинг `267aa35`; контракт 0.2.3 в каноне; промт в `frontend/docs/archive/`); ⚠ **разморозка БОЛЬШЕ НЕ привязана к P7** — слово владельца 17.08 (D39.147): зона морозится дальше лендинга P7, S5-промт не выдаётся, курс — движок и платформа до «работает и отдаёт результат»; разморозка отдельным словом. Перечень первого касания (зеркало 0.3.0 · типы · моки · гейт утечки · ФС-1..12 · Ф-63/Ф-28 · фразы В-11 по словарю кодов; ~~В-10~~ закрыт «вежливость») не отменён, ждёт разморозки; живой smoke против дев-стенда легитимен и во фризе; фикс-лист ФС — запись приёмки 15.08 в зонном журнале · **Платформа: активного промта НЕТ** — P6 + дофикс ИСПОЛНЕНЫ и ПРИНЯТЫ (D39.132, промты в `platform/docs/archive/`); **P7 ЗАПУЩЕН 16.08, сессия ЖИВАЯ**: `platform/docs/PLATFORM_P7_SESSION_PROMPT.md` (читающая поверхность по финальному канону 0.3.0 + модель ошибок + форварды + PD-104 + демонтаж гейта полноты банка; приёмка — оркестратор №18) · **Бэкенд: [BACKEND_HONESTY_PACK_SESSION_PROMPT.md](BACKEND_HONESTY_PACK_SESSION_PROMPT.md) ВЫДАН 17.08, запуск по слову владельца** (оба рубежа D39.141 закрыты: механическая сверка 11/11 блоков + ДВА прохода опровергателя другой моделью + узкая сверка вливания находок; первый проход сам принёс ошибку атрибуции — она вскрыта автором и подтверждена вторым проходом) (пак «честные числа и статусы»: строки 176 · 181 · 172-г · 187; п.5 живой вахты весов исполняется ТОЛЬКО при названной владельцем сумме) — ранее: пере-пин цен DeepSeek ИСПОЛНЕН и ПРИНЯТ (D39.137, лендинг `76049bb`; промт в `archive/prompts/`), потолки снова защищают; `tmctl migrate` — D39.134 (`d55edd4`), деплой эмиттер-бинаря разблокирован. Эмиттер шва ИСПОЛНЕН и ПРИНЯТ (D39.131, промт в архиве). Все ОТРАБОТАННЫЕ промты — в `archive/prompts/`, отчёты с ревью-шапками — в `archive/reports/`; статусы паков — CURRENT-STATE и D-лог, здесь не дублируются. Зонные журналы фронта/платформы — `frontend-PROGRESS.md` / `platform-PROGRESS.md` в их зонах (прогресс зон только там, D39.100). - Зоны фронта (чужие, читать при касании стыка; каждая ведёт СВОЙ зонный бэклог — единый бэклог их строк не принимает, D39.84): [../frontend/](../frontend/) — веб-интерфейс: промт фронт-сессий S0–S7 + [STACK_DECISIONS.md](../frontend/docs/STACK_DECISIONS.md) (пины версий точными числами и ловушки, сверены с вебом 02.08) + [BACKLOG.md](../frontend/docs/BACKLOG.md) · [../platform/](../platform/) — SaaS control plane: README + [BACKLOG.md](../platform/BACKLOG.md) (П-1..П-14) + `docs/` (зонный журнал `platform-PROGRESS.md` · регистр дефектов · архив промтов P0–P5). - `archive/` — история ([правила архива](archive/README.md)): закрытые промты (`prompts/`) · отчёты с ревью-шапками (`reports/` — на них ссылаются приёмки) · исполненные арх-доки (`architecture/`) · слайсы хроники `PROGRESS-*.md`. Инструкции оттуда не исполнять. - Диаграммы: [../backend/docs/components.puml](../backend/docs/components.puml) · [../backend/docs/pipeline.puml](../backend/docs/pipeline.puml) — дом рядом с кодом (D39.80), правятся бэкендом одним коммитом с кодом; вручную НЕ рендерить (владелец смотрит PlantUML-расширением VS Code).