Cut two closed chronicles out of the journal into archive slices and bring the backlog rows they contradicted back to the tree
This commit is contained in:
parent
5838751574
commit
4e43b310f4
4 changed files with 261 additions and 223 deletions
238
docs/PROGRESS.md
238
docs/PROGRESS.md
File diff suppressed because one or more lines are too long
172
docs/archive/PROGRESS-2026-08-10-15.md
Normal file
172
docs/archive/PROGRESS-2026-08-10-15.md
Normal file
|
|
@ -0,0 +1,172 @@
|
||||||
|
# Слайс хроники: полигон, фаза Д — записи 10.08 и 15.08 (сессии №1 и №2)
|
||||||
|
|
||||||
|
> ⚠ **Архив. Инструкции отсюда НЕ исполнять, при онбординге НЕ читать** — только по конкретной ссылке.
|
||||||
|
> Вынесено оркестратором №18 22.08 из `docs/PROGRESS.md` секции «Полигон» — исполнено предписание,
|
||||||
|
> которое эта же секция несла с 20.08: «запись ПРОТУХЛА трижды и её надо срезать».
|
||||||
|
>
|
||||||
|
> ⚠ **Читать через три поправки, снятые аудитом доков 22.08 (тела ниже НЕ переписаны — D23.3):**
|
||||||
|
> 1. **Потолок фазы.** Числа `$6.85` и `$5.901` ниже — снимок одной журнальной записи, а не цепь.
|
||||||
|
> Фактическая цепь потолков и касса живут в коде зоны: `eval/dovodka/money_d.py` (`PACK_CEILING`,
|
||||||
|
> `CEILINGS`), и там же видны позднейшие санкции владельца. Сверять ТАМ, не здесь.
|
||||||
|
> 2. **«Открыто на владельце».** Пункты про японскую ногу H-4 и про замену ja-книги ЗАКРЫТЫ: нога
|
||||||
|
> куплена и отсужена (тело — `docs/experiments/23-editor-tier.md`, Д16), СТОП снят владельцем 15.08
|
||||||
|
> (D39.136). Живым из этого списка остаётся возражение Sol по проходу `tier`.
|
||||||
|
> 3. **«Долги сессии №2» и «Долги полигона».** Список перечисляет как незакрытое то, что зона с тех пор
|
||||||
|
> сделала (гейт наклона живёт в `eval/dovodka/naklon.py`, часть контролей починена). Пере-проверять
|
||||||
|
> прежний список дороже, чем снять его заново: живые долги полигон объявляет при лендинге петель.
|
||||||
|
>
|
||||||
|
> **Живое состояние фазы Д — в зоне полигона** (`eval/dovodka/PLAN-22-08.md` и соседние планы), приёмка
|
||||||
|
> фазы — у ПАРАЛЛЕЛЬНОГО оркестратора. Живые пинги по этой теме остались в `../PROGRESS.md`.
|
||||||
|
|
||||||
|
**ФАЗА Д — СТАТУС НА ВЕЧЕР 10.08 (сессия передана, хендофф `/home/ubuntu/CONTINUATION_PROMPT.md`).** ⚠ **Запись ПРОТУХЛА трижды и её надо срезать при лендинге петель** (свип доков 20.08): статус «на вечер 10.08» лежит поверх записей от 15.08, хендофф указывает ВНЕ репозитория (файл на месте, но от 10.08 и вне git — то есть не переживёт машину), а в дереве с 16.08 живёт незадокументированная работа (`eval/dovodka/PLAN-16-08.md`, `PLAN-17-08.md`, `HANDOFF-21-08.md`, `ja6.py`, `naklon.py`), которой в этой секции нет вовсе. Три поколения записей в одном месте — именно то, из-за чего состояние фазы Д сегодня нельзя прочитать.
|
||||||
|
Куплено: арм A1 (флаговый edit-контур) 30/30 платных клеток, **$0.226944**; A3 (смысловой критик,
|
||||||
|
ставка владельца H-2б) в работе. Пакет **$0.234846 из $4.50**. Четыре коммита: правки ригов 22/23
|
||||||
|
по приёмке №16 и трём линиям ревью · фриз пре-рега Д0 · фриз харнесса контура · починка тихого
|
||||||
|
увода покупок в чужой каталог.
|
||||||
|
|
||||||
|
⚠ **ГЛАВНОЕ ДЛЯ ОРКЕСТРАТОРА: несущий вывод пака 23 по проходу `tier` получил внешнее возражение
|
||||||
|
и НЕ должен ратифицироваться в нынешнем виде.** Владелец прогнал судью вне семьи Claude (Sol 5-6)
|
||||||
|
по тем же заданиям: принято 16/16, декой пойман 16/16, и `gpt-5.6-terra` оказался ЛУЧШЕ боевого
|
||||||
|
редактора на **+8.69 при пороге 2.60** (p=0.0002), тогда как агенты Claude дали +0.50 при пороге
|
||||||
|
1.02. Расхождение переживает все три нормировки рига (контраст внутри единицы · порог из своего
|
||||||
|
пола · декой как единица), то есть оно СОДЕРЖАТЕЛЬНОЕ, а не шкальное. Разбирательство восьми
|
||||||
|
агентов: направление у обоих судей одинаковое; 74 из 100 находок Claude лежат ВНУТРИ находок Sol
|
||||||
|
при случайном уровне 0.14 (p=0.0000) — Claude ⊂ Sol; чтение исходника показало в тексте боевого
|
||||||
|
редактора реальные инверсии смысла, которым Claude поставил ноль с пустым обоснованием
|
||||||
|
(`箭在弦上,不得不发` → «Стрела уже слетела с тетивы»); 47 из 128 клеток Claude ровно нулевые, 31 из
|
||||||
|
них без обоснования. Плюс два дефекта рига, задекларированные в коде самого пака 23: `floorA`
|
||||||
|
побайтно равен арму `T1` в 16/16 — то есть порог, которым судят контраст `T1 vs R0`, построен из
|
||||||
|
клетки, которая и ЕСТЬ `T1`; донор декоя в `tier` во всех единицах — `R0`. Семейное предпочтение
|
||||||
|
(разошёлся ровно арм OpenAI) не доказано и не опровергнуто. Свод — `~/books/dovodka/razbiratelstvo-sudi-10-08.txt`.
|
||||||
|
**Решение «пере-судить починенным ригом или оставить с записанным возражением» — за владельцем.**
|
||||||
|
|
||||||
|
⚠ **Дефект кассы, который стоит знать всем пакам:** `eval/role_topology/buy.py` — СИНГЛТОН в
|
||||||
|
`sys.modules`, и побеждает тот, кто настроил его последним. Харнесс фазы ставил свой каталог, а
|
||||||
|
грузившийся следом `panel.py` пака 23 перебивал обратно на свой — оплаченные клетки уходили в
|
||||||
|
ЧУЖОЙ каталог, касса фазы показывала $0 при потраченных $0.0556, а цикл покупки 20 минут ждал
|
||||||
|
файла, который в её каталоге не появился бы никогда. Починено ассертом `BUY.OUT == касса` в модуле
|
||||||
|
и в селфтесте; **всякий новый харнесс обязан нести этот ассерт.**
|
||||||
|
|
||||||
|
**ФАЗА Д «ДОВОДКА ЭКСП-22/23» — ИДЁТ (10.08).** Заказ `docs/POLYGON_EXP2223_REDO_SESSION_PROMPT.md`, пре-рег Д0 в `docs/experiments/23-editor-tier.md`, код `eval/dovodka/`. ⚠ Потолок фазы ПОДНИМАЛСЯ владельцем по ходу напрямую полигону («мы с ним в синке», слово 15.08); последняя журнальная запись — $6.85, промт несёт свою цепь — ФАКТИЧЕСКУЮ цепь сверить при лендинге петель (приёмка фазы — параллельный оркестратор).
|
||||||
|
|
||||||
|
⚠ **Три поправки к уже сданным числам, которые оркестратору надо знать при ратификации.**
|
||||||
|
1. **Счёт агент-сессий эксп-23 = 58, не 50** — репликация §12а выпадала из счёта в §6 и §14 п.9; обе строки поправлены. Счётчик капа в паке 23 НЕ работал (на диске 20 записей против 58 фактических): `log_run` звался из `--ingest`, то есть после суб-агента. В фазе Д починено механизмом — `eval/dovodka/runs.py` пишет ДО запуска, атомарный замок с проверкой живости PID, селфтест 16/16.
|
||||||
|
2. **`p` эксп-23 пере-считаны ТОЧНО.** При n>20 риг брал Монте-Карло, и одна величина печаталась как 0.1603 и как 0.1608. Перевесы целые ⇒ точный ответ берётся динамикой мгновенно: **0.1601** (боевой прогон и runA), **0.3339** (runB). Вердикты не двигаются.
|
||||||
|
3. **Регекс банка ловил корень в СЕРЕДИНЕ чужого слова** («Го-РОд Цинчжоу» под канон «род Цинь») — 30 ложных из 2113 = 1.4%. Починено границей слова; **печатные числа покрытия НЕ изменились** (кап `min(hits, n)` их поглощал), и в `verify22` заведён сторож покрытия — прежде эти 18 чисел не сторожил никто.
|
||||||
|
|
||||||
|
**Адверсариальное ревью трёх линий (снизу вверх · сверху вниз · приёмка Fable-5 — разрешение D39.120 наконец использовано).** 25 находок, 4 блокера, все подтверждены исполнением. Крупнейшие: MDE в пре-реге не нёс поправку Холма ⇒ две оси были объявлены несущими, будучи недомощными по построению (тот же класс, что en-ось эксп-22); `done()` журнала шла мимо замка и теряла 19 записей `claim` из 20; крючки судейского рига протекали между паками (эксп-22 молча читал каталоги эксп-23); счётчик «сам-себя» в `conformance.py` не срабатывал никогда. Всё исправлено до покупок.
|
||||||
|
|
||||||
|
**Пробел заказа, найденный приёмкой другого семейства:** дизайн фазы не отвечал на H-1 и H-4. Заведены армы A6 (dspro-черновик + контуры) и E6 (второй редактор на en); владелец поднял потолок под них. **H-4 остаётся ОПИСАТЕЛЬНОЙ** — при n=16 порядок жильцов не разрешается, объявлено до денег.
|
||||||
|
|
||||||
|
*(Пинг о мёртвой ссылке `..._DOVODKA_...` — ИСПОЛНЕН: все носители ведут на `..._REDO_...`.)*
|
||||||
|
|
||||||
|
*(СТОП по ja-оси — СНЯТ владельцем 15.08: книга заменена на `enkan_no_hate_ja`, D39.136.)*
|
||||||
|
|
||||||
|
*(Закрытые записи эксп-22/23 — хроника закрытия, инциденты приёмки, починки приборов — в [archive/PROGRESS-2026-08-14-15.md](archive/PROGRESS-2026-08-14-15.md); вынесено 16.08. ЖИВОЕ из них: CONFIRM/DENY-листы владельцу — ИТОГ отчёта 22 и §14 отчёта 23 (вход ратификации фазы Д) · предложения-в-норму АБСОРБИРОВАНЫ: «сверка с буквой заказа»/чек-листы — D39.141, «обязательство с адресатом вне зоны закрывается файлом ВНЕ зоны» — закон роли 16.08, «шумовой пол парой разных сессий» — норматив рига фазы Д в её промте.)*
|
||||||
|
|
||||||
|
**Запись оркестратора №16, 10.08 — ПРИЁМКА ЭКСП-22/23 ПРОВЕДЕНА, дерево залендено, фаза Д заказана.** Верификация: 11 агентов, 105 проверок — все несущие числа обоих паков воспроизведены из сырья МИМО харнесса (деньги до цента, провенанс до секунд, leave-one-out по судейским сессиям устойчив), фальсификаций нет; находки приёмки и чек-лист поправок тел — §Д8 промта фазы Д (крупнейшая: интерпретация §15 эксп-22 опровергнута — 5 из 6 клеток суть пойманные гейтом эхо-первые-попытки, судились ре-гены). Поправки к пингу выше (чужой текст не редактирую): сессий по паку 23 = **58**, не 50; декой-правило сессия применяла к себе **дважды**, не трижды; тир-абзац закрывает ограничение **(1)**, не (2) — Резерв D39.22 сессией как раз не решён, отдан владельцу. **Владелец 10.08:** санкции/лимиты/мандат эксп-23 подтверждены задним числом; постановка признана неполной ⇒ **выводы обоих паков НЕ ратифицированы**, заморожены до фазы Д (добивка gemini ретрай-харнессом · внешняя подпись `tier` · несущие оси en/ja · edit-контур — ставка владельца · канон-вскрытие с вопросом судье · поправки тел). Декой-правило и обязательный кросс-семейный опровергатель приёмки одобрены владельцем — в D-ноту при ратификации. Гейт `conformance.py` аннулирован подтверждённо (реестр жил в scratchpad); в фазе Д реестры — только в git.
|
||||||
|
|
||||||
|
*(Закрытые блоки полигона — экспы 18/19/20, эксп-21, банк-арбитраж — в [archive/PROGRESS-2026-08-04-09.md](archive/PROGRESS-2026-08-04-09.md), D39.125.)*
|
||||||
|
|
||||||
|
(секция параллельной сессии — записи добавлять сюда)
|
||||||
|
|
||||||
|
**15.08 · ФАЗА Д — сырьё снято, выводы ПОНИЖЕНЫ финальным аудитом. НЕ закрыта.**
|
||||||
|
|
||||||
|
Куплено и отсужено: ось Д3 en→ru (7 армов × 16 ед., пол, банк 25 терминов, контам-проба
|
||||||
|
жильцами) · ось Д6 ja→ru разведка (3 арма × 9 ед.) · Д1 добивка gemini 15/16 с журналом
|
||||||
|
попыток · Д7 самооценка 6 клеток · Д5 канон-вскрытие 24 записи. Расход фазы **$5.901** по
|
||||||
|
фазам ФД-A…ФД-G (второй путь — сумма `cost_usd` по 563 клеткам `dv-*.json`, сходится).
|
||||||
|
Агент-сессий 50 из 80. Отчёт — `23-editor-tier.md` Д1/Д3/Д6/Д7/Д9/Д10/Д11.
|
||||||
|
|
||||||
|
**Что аудит (адверсариальный, другое модельное семейство + свой пере-счёт) снял с фазы:**
|
||||||
|
1. **Д2 БЫЛ ЗАКРЫТ ВАШИМИ РУКАМИ, а отчёт объявлял его открытым** («каталог ответов пуст»).
|
||||||
|
`~/books/editor-tier/sol-tier` — 16 ответов Sol, `sol-border` — 32. Пере-счёт
|
||||||
|
`solscore.py tier`: **T2 vs R0 +8.69, p=0.0002, РАЗЛИЧИМ** при пороге 2.60 — тогда как
|
||||||
|
семейство Claude дало +0.50 ниже порога. Это и есть **записанное возражение Sol**, и оно
|
||||||
|
ПРОТИВОРЕЧИТ несущему выводу пака 23. Требует вашего слова: пере-судить `tier` починенным
|
||||||
|
ригом или оставить с записанным возражением.
|
||||||
|
2. **Ось Д4 пере-классифицирована в ОПИСАТЕЛЬНУЮ** по её же пре-регу (свой пол 2.21 хуже
|
||||||
|
прайора 2.12; правило Э-3/Д0.3 требовало пере-классификации «тогда же»). **H-2а и H-2б
|
||||||
|
больше не несущие выводы.** Семейства при этом разошлись (claude −2.21 · sol −3.11,
|
||||||
|
эскалация к адъюдикации с дефектными контролями).
|
||||||
|
3. **H-3 «на en перепис не нужен» — ОПРОВЕРГНУТА, вывод держится**: E0/D0 +1.56, p=0.0059,
|
||||||
|
выше порога и с поправкой на позиционный наклон.
|
||||||
|
4. Загрязнения: `E3` на 5 ед. из 16 = нетронутый черновик (пустые клетки критика), `E4`
|
||||||
|
побайтно равен эталону на 12 из 16; заявление «E4 вдвое дешевле» снято как ложное.
|
||||||
|
5. Половины шумового пола совпадают побайтно (ja 3 из 6, en 1 из 10) — дефект «близнеца»
|
||||||
|
воспроизведён, пороги были занижены.
|
||||||
|
|
||||||
|
**15.08 ВЕЧЕР — ВТОРОЕ СЕМЕЙСТВО ЗАКРЫТО ПО ВСЕМ ТРЁМ ОСЯМ** (Sol, прогон владельца):
|
||||||
|
ja **CONFIRM** (claude +2.83 порог 2.10 · sol +3.28 порог 2.97 — оба перешли) · en **ЭСКАЛАЦИЯ
|
||||||
|
К АДЪЮДИКАЦИИ** (claude перешёл, sol нет: его пол вдвое шире) · gemini **не подтверждено ни
|
||||||
|
одним** (−0.10 против +2.53, оба ниже порога). Контроли Sol чисты: 32/32 · 18/18 · 30/30.
|
||||||
|
Единственное двухсемейное подтверждение фазы пришло с РАЗВЕДОЧНОЙ японской оси.
|
||||||
|
|
||||||
|
**15.08 ВЕЧЕР · СЕССИЯ №2 — СКВОЗНОЙ АУДИТ ДУГИ 19→23 И ПЕРЕ-СУДЕЙСТВО `tier`.**
|
||||||
|
|
||||||
|
Заказ владельца: пройти линию свежим взглядом, закрыть гипотезы качественно, задать вектор;
|
||||||
|
плюс 15.08 «пересудить тир, но не подгонять — понять, кто ошибается из судей». Аудит: 6 карт
|
||||||
|
документов + 8 лан пере-счёта МИМО харнесса + критик полноты; каждая находка пере-проверена
|
||||||
|
исполнением, а не принята со слов. Новая оснастка `eval/dovodka/gain.py`, `tier2.py`, `ja6.py`.
|
||||||
|
|
||||||
|
**ГЛАВНОЕ — прибор, а не модели.**
|
||||||
|
1. **Строгость счёта судьи есть свойство ПРОГОНА.** Тот же арм `R0`, те же 16 единиц, то же
|
||||||
|
семейство, подписи текста совпадают 16/16: проход `tier` дал 0.69 ошибки/ед. при 9 нулях из
|
||||||
|
16, `border` — 4.31 при нуле нулей; по-единично ниже в 15 из 16. Размах внутри claude
|
||||||
|
1.41…6.47. ⇒ межпроходные сравнения абсолютных чисел недействительны (в т.ч. «дешёвая модель
|
||||||
|
на японском проваливается сильнее» — разные прогоны) и заимствованные пороги тоже.
|
||||||
|
2. **Патология НЕ общая:** нулей `tier` 38% · Д3 10% · Д6 3% · `border` 0 · **Д4 zh 2 из 713** ·
|
||||||
|
Д1 0. По сессиям выбиваются ровно две (`д-52` 24%, `д-55` 21%). Выводы Д4/Д1/`border` чисты.
|
||||||
|
3. **`tier` ПЕРЕ-СУЖЕН починенным заданием** (пре-рег зафризен `a03ac66` ДО первого ответа; те же
|
||||||
|
тексты, новый ключ, старый не тронут). Плотность 0.69→3.44 на `R0`, нулей 6% против 38%,
|
||||||
|
пустых обоснований 0 против 31. Впервые есть **гейт чувствительности: маржевый декой +2.50
|
||||||
|
против порога 1.84 — ПРОЙДЕН**. Вердикт: `T1` −0.12 · `T2` +1.06 · `T3` +0.50 — все ниже
|
||||||
|
порога; контроль `R0 vs F` −3.12 p=0.0042. ⇒ **несущий вывод эксп-23 «сильный тир не отличим»
|
||||||
|
ВОССТАНОВЛЕН и впервые стоит на приборе с доказанной чувствительностью.**
|
||||||
|
4. **Возражение Sol снято, и владелец назвал причину:** `Sol` = `gpt-5.6-sol`, семейство OpenAI;
|
||||||
|
арм `T2` = `gpt-5.6-terra` — ТА ЖЕ семья. Sol дал `T1` +0.06 · `T3` −0.12 · **`T2` +8.12** —
|
||||||
|
разницу нашёл только у своей семьи, что запрещено D13.3. На Д3/Д4/Д6/Д1/`border` армов OpenAI
|
||||||
|
нет, судейство Sol там чистое. Заражён ровно один контраст дуги — спорный.
|
||||||
|
|
||||||
|
**СОДЕРЖАТЕЛЬНОЕ — разложение контрастов ПО ОСЯМ, за всю дугу не делалось ни разу:**
|
||||||
|
`A3/A0` −1.87 = ВЕРНОСТЬ **−0.26** + ЯЗЫК −1.61 · `A6/A0` −1.06 = ВЕРНОСТЬ **+0.12** + ЯЗЫК −1.19 ·
|
||||||
|
`E0/D0` +1.25 = ВЕРНОСТЬ +0.94 + **ТЕРМИН +0.75** + ФОРМА +0.69 + ЯЗЫК +0.31 · `J0/J2` ВЕРНОСТЬ **0.00**.
|
||||||
|
⇒ контуры проигрывают переписи ПРОЗОЙ, а не смыслом; `A6` (носитель H-1) по смыслу не хуже боевой
|
||||||
|
связки; H-3 опровергнута только в слове «ТОЛЬКО» — больше половины того, что редактор покупает на
|
||||||
|
en, есть синк глоссария и вёрстка, ровно как гипотеза и говорила. **Вектор: решает ось ЯЗЫК, и её
|
||||||
|
не вытягивает ни один точечный контур (трогает 0.2–3.7% знаков) — искать надо сплошную дешёвую
|
||||||
|
переработку прозы. Такого арма в дуге 19→23 нет ни одного.**
|
||||||
|
|
||||||
|
**Починено:** контроли адъюдикации (4 дефекта, включая необъявленный: окно резалось по `norm()`,
|
||||||
|
без пунктуации и регистра; гейт `adjud.py --controls`) · селфтест `sud.py` перестал быть прибит к
|
||||||
|
панели d4 и **сразу поймал** клетку `finish=length`, ушедшую судьям на оси Д1 (без неё claude
|
||||||
|
−0.100 → +0.000, вердикт не двигается) · `itog_d4.py --fam=sol` снова считает несущую ось и
|
||||||
|
печатает ПОЛНУЮ цену единицы (`A3` 0.01546 = 2.56× боевой связки, а не 0.00644; «кандидат в прод
|
||||||
|
вдвое дешевле» ЛОЖНО — он в 1.5–2.4 раза дороже).
|
||||||
|
|
||||||
|
**⛔ ДЕНЬГИ — ДЕФЕКТ ИЗМЕРИТЕЛЯ, найден по реплике владельца.** `roster.cost()` ВЫЧИСЛЯЕТ `cost_usd`
|
||||||
|
из зашитого пина (25.07), провайдер сумму не возвращает. DeepSeek подорожал, прайс не пере-снят ⇒
|
||||||
|
**$6.05 — это «сколько стоило бы по июльскому прайсу», а не списанное**; DeepSeek 61% расхода.
|
||||||
|
Пере-счёт точен и бесплатен (в клетках лежат все токены). Владелец с оркестратором пере-снимают
|
||||||
|
цены. Отдельно: последняя цифра потолка, приписанная слову владельца в файлах, была $4.50, а
|
||||||
|
расход дошёл до $6.00 — цепь подъёмов прошла самопроверки, потому что фриз-гейт сверяет ПОКУПАЮЩИЙ
|
||||||
|
файл, а не кассу. Санкция 15.08 «сколько нужно» записана числом **$6.85**.
|
||||||
|
|
||||||
|
**Куплено:** японская нога H-4 (`J6` = `glm-5` на ja, 9 клеток $0.046, все `finish=stop`) + свой
|
||||||
|
пол ноги. Судейство ноги — следующим шагом, СНАЧАЛА своим семейством, потом пакет Sol
|
||||||
|
(порядок по слову владельца).
|
||||||
|
|
||||||
|
**Долги сессии №2:** судейство ja-ноги · адъюдикация en (контроли починены, прогона нет) · гейт
|
||||||
|
наклона · 19 улик реестра вида «греп своего отчёта» · 131 находка внутренней ревизии не сверена
|
||||||
|
с телом отчёта · Д5 объявлена НЕИСПОЛНЕННОЙ (классификация мест оказалась мусором) ·
|
||||||
|
`E1` побайтно равен черновику на 5 единицах из 16 и нигде не объявлен.
|
||||||
|
|
||||||
|
**Открыто на владельце:** решение по возражению Sol по `tier` (расхождение +8.69 против +0.50) · японская нога H-4 (второй редактор
|
||||||
|
на ja не покупался, ~$0.05) · санкция замены ja-книги (`enkan_no_hate_ja` вместо
|
||||||
|
`isekai_majutsushi_jp`; в CURRENT-STATE до сих пор висит как СТОП).
|
||||||
|
|
||||||
|
**Долги полигона:** селфтест `sud.py` падает на всех трёх новых осях · гейт наклона не
|
||||||
|
построен · `conformance` красный (58 требований без улик, 3 провала) · ФД-C потрачено $0.3348
|
||||||
|
против закоммиченного потолка $0.300 (подъём до $0.360 не закоммичен) · дерево НЕ закоммичено,
|
||||||
|
кроме фризов покупающего кода — лендит оркестратор.
|
||||||
|
|
||||||
72
docs/archive/PROGRESS-2026-08-17.md
Normal file
72
docs/archive/PROGRESS-2026-08-17.md
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
# Слайс хроники: бэкенд-пак «честные числа и статусы» (17.08.2026)
|
||||||
|
|
||||||
|
> ⚠ **Архив. Инструкции отсюда НЕ исполнять, при онбординге НЕ читать** — только по конкретной ссылке.
|
||||||
|
> Вынесено оркестратором №18 22.08 из `docs/PROGRESS.md` секции «Бэкенд»: секция объявляет себя местом
|
||||||
|
> ТОЛЬКО для пингов живых сессий, а держала 60 строк отчёта закрытой работы.
|
||||||
|
>
|
||||||
|
> **Исход:** пак ИСПОЛНЕН, ПРИНЯТ С ФИКС-ЛИСТОМ и ЗАЛЕНДЕН `f840867` (17.08) — ратификация **D39.149**,
|
||||||
|
> решение владельца по ФЧ-5 — **D39.150**. ⚠ Прежний заголовок блока писал «дерево не закоммичено»;
|
||||||
|
> это было верно один день и опровергалось записью приёмки в том же блоке — испр. при выселении.
|
||||||
|
> **Живой остаток работы — строка бэклога 197** (фикс-лист ФЧ-1…ФЧ-8), её тело ссылается СЮДА.
|
||||||
|
> Состояние бэкенда — CURRENT-STATE в `../PROGRESS.md`, решения — D-лог.
|
||||||
|
|
||||||
|
### Пак «честные числа и статусы» (строки 181 · 176 · 172-г · 187) — ИСПОЛНЕН, дерево не закоммичено (17.08)
|
||||||
|
|
||||||
|
**Записка-план (пункт заказа → где).** 1) 181 — `internal/pipeline/reprice.go` (нов.) + `store/ledger.go` (`CheckpointUsageForBook`) + `rebill.go`/`status.go`; тест `reprice_test.go`. 2) 176 — `internal/obs/panic.go` (нов.), recover воркера `waverun.go:260-268`, `exitOf` в `cmd/tmctl/main.go`, ветка `*obs.PanicError`→1 в `exitCode`; usage-строка `invocation.go:96` + её замороженный тест; тесты `wavepanic_test.go`, `panic_exit_test.go`. 3) 172-г — `live_reprobe_threshold_test.go` (нов., без тега) + риг `live_reprobe_test.go`. 4) 187 — `snapshot.go:179-190`, `membank/memory.go:359-365`. 5) живой прогон — исполнен, $0.005582.
|
||||||
|
|
||||||
|
**181, развилка источника чисел (решение).** Пере-прайс идёт ФАКТИЧЕСКИМИ токенами чекпоинтов через тот же шов, что и сеттл (`Pricer.PriceForResponse` + `ledger.CostUSD`), а не оценкой `EstimateUSD`. Причины: оценка резервирует весь `max_tokens` + reasoning-буфер и завысила бы кратно (лечим «число врёт вниз» числом, врущим вверх); оценке нужны отрендеренные сообщения, которых read-путь сознательно не имеет; через шов сеттла проекция не может разъехаться с тем, что забронирует леджер. Мост к usage — НЕ `FinalHash` (он только на ok-пути, как и предупреждал заказ), а джойн `checkpoints ⋈ jobs` по (chapter, chunk_idx, stage): он достаёт usage и для flagged-строк, и для всех попыток. **Обе половины гейта починены вместе:** `projectBookUSD` (база 5%-порога и `projected_book_usd`) пере-прайсится тем же репрайсером — иначе порог сравнивал бы две разные валюты. Историческими остаются `committed/reserved` и `CostUSD` глав-паспортов: потраченное — факт, а не проекция. **Не проецируется (задокументировано, как и контент-ось):** РОУТИНГ — строка прайсится моделью, которая ОТВЕТИЛА, а не той, в которую стадия резолвится сейчас. `HistoricalRows` считает строки, чей usage недостижим (чекпоинт снесён redrive'ом; billed-decode с `{}`-usage) — они несут историческую сумму, и операторский текст это НАЗЫВАЕТ.
|
||||||
|
|
||||||
|
**176, выбор кода.** Паника (любой горутины) → **1**, «infra failure and everything else». Не новый номер: обе полосы — замороженный шов, а слово в ратифицированном словаре не заводится сессией. Ветка `*obs.PanicError` стоит ПЕРВОЙ в `exitCode`. `obs.PanicError` намеренно БЕЗ `Unwrap`: паника значением `context.Canceled`/`*CeilingHalt` иначе уехала бы в 5/4 при формально нетронутом словаре (покрыто тестом на 7 значений). `obs.SafeGo` НЕ применён — он глотает. Стек едет в `Error()`, значит на stderr при любой обёртке.
|
||||||
|
|
||||||
|
**Команды и результаты.** `make battery` → EXIT=0; SKIP ровно два: `TestHelperEventsRun`, `TestHelperKillLoop` — оба helper-процессы подпроцессных харнессов (`t.Skip("helper process only")` без env-ключа), не пропуск покрытия. Корпусные четыре (`TestMinerFullBookParity`, `TestCheckerLabels*`, `TestK6LabelsBaseline`) на этом стенде ПРОШЛИ, не скипнулись. Голден: `go test ./internal/pipeline/ -run Golden -count=1` → ok, бит-в-бит. `go vet -tags live ./...` → чисто. `grep -rh '^func Test' backend --include='*_test.go' | wc -l` = 819; в диффе `^-func Test` = 0 удалённых, +9 добавленных. ⚠ **Испр. приёмкой №18:** финальное число — **827** (пере-считано командой отчёта после последних правок; 819/823 — промежуточные снимки), удалённых имён 0 подтверждено.
|
||||||
|
|
||||||
|
**Красное до фикса — исполнением** (откат в рабочем дереве, без git): 181 — `re-payment projected at $0.003640 but the current price table makes that work $0.014560`; отдельно откат только базы порога — `status projected_book_usd = $0.003640, want $0.014560`. 176 — при снятом recover тест-бинарь падает паникой (`panic: worker exploded mid-chunk`), а реальный бинарь при непойманной панике выходит **2** (замерено: собранная программа-однострочник, `exit=2`). Usage-строка — `usage error text is frozen, got: usage: tmctl <translate|report|status|export|redrive|manifest> --config book.yaml`. Правок тестов ради зелени нет: изменены только `invocation_test.go` (санкция тела 176 + D39.134 п.3) и механические сайты вызова после смены сигнатур `projectRebill`/`projectBookUSD` — утверждения не тронуты.
|
||||||
|
|
||||||
|
**Пункт 5, живой прогон (санкция владельца 17.08, потолок $0.20).** Стенд `~/books/gu-zhenren/coldrun-b/reprobe/classify6/` был на схеме v14 против v15 — `status` дал ратифицированный `exit 13 schema_mismatch`, прогнан `tmctl migrate` (v14→v15, restore point взят). Замер: **4/5 прогонов достигли 6/6**, `finish=stop` на всех пяти, `bad_lines=0`, модель `deepseek-v4-flash`, `max_tokens=8000`, эффорт `unset`. **Итог: ГЕЙТ ПРОЙДЕН по ратифицированной форме — и это ровно тот 4/5, на котором старая форма «6/6 на КАЖДОМ» упала бы ложно.** Трата **$0.005582424**; леджер пробы 0.00038997→0.00597239, дельта совпала с числом рига до последнего знака, `reserved_usd=0`. Ревью исполнением: запросы прочитаны глазами (дамп `classifierMessages` в `classifier-request.json` — `reasoning:""`, то есть reasoning-off НЕ шлётся и thinking у DeepSeek остаётся ON, эхо-мина не взведена), сырые ответы прочитаны из `classifier-6of6-unset.json`, стоимость двух прогонов пересчитана вручную по новой таблице flash и сошлась (run0 = 1143·0.44 + 869·1.32 за 1M = $0.001650). ⚠ **Строку 172-г НЕ закрываю:** риг меряет классификатор на flash, а сменившиеся веса — у pro (редактор).
|
||||||
|
|
||||||
|
**Диспозиция строки 164 — ОСТАВЛЕНА ОТКРЫТОЙ, и она по-прежнему верна.** Сверено кодом: `Status()` (`status.go:388`) не зовёт `seedGlossary`, поэтому `r.baseMemory` на read-пути nil (`seeding.go:157-159` — единственное место присвоения), `precomputeSticky` даёт пустую инъекцию и `renderedContentHashes` не опознаёт repin (`rebill.go:166`). Пак этого не двигает: он чинит ЦЕНУ строки, а 164 — про то, какие строки вообще попадают в счёт. Разделение честнее, потому что лечение 164 — материализация банка на КАЖДОМ `status` (его платформа зовёт перед каждым спавном), то есть решение о цене read-пути, а не правка текста. Пере-прайс её не маскирует — он масштабирует завышение той же таблицей.
|
||||||
|
|
||||||
|
**Находки вне заказа (не чинил, оркестратору на завод строк).** (1) Промт §5 называет `LOG_LLM_BODIES=1`+`LOG_LEVEL=debug` носителем тел запросов для рига — **не работает**: ключ читается из `obs.ReqInfo` контекста (`cmd/tmctl/main.go:196-200` → гейт `obs/logging.go:77`), а `live_reprobe_test.go:119` строит ctx без `WithReqInfo`, поэтому тела не логируются ни при каких env. Использован второй разрешённый носитель (дамп). (2) `docs/experiments/00-provider-quirks.md` до сих пор пишет «цены DeepSeek не изменились (flash $0.14/$0.28)» — протухло со сменой 16.08 (D39.137), зона не моя. (3) Якоря строки 181 ПРОВЕРЕНЫ и оказались точными (не расхождение, называю потому что сверял): в HEAD `rebill.go:166` = `p.USD += cs.CostUSD`, `:252` = сравнение с потолком согласия, `stagerun.go:431/:613` = `EstimateUSD(PriceFor(...))` и `PriceForResponse(...)`. (4) Прежний артефакт стенда `classifier-6of6.json` — старого одно-сэмплового формата; текущий риг пишет `classifier-6of6-<effort>.json`, старый файл рядом никем не перезаписывается и вводит в заблуждение. (5) Список команд usage-строки и подсказки `unknown command` были двумя ручными копиями; сведены в один `dispatchCommands` (байты подсказки не изменились). (6) Строки 146/173/177 по пути видел — не трогал (подписанный пропуск заказа).
|
||||||
|
|
||||||
|
**Адверсариальное ревью §4 — ПРОВЕДЕНО (17.08, воркфлоу `wf_6f671334-f69`: 23 агента, 0 ошибок, 1.95M токенов, 37 мин).** Три независимые линзы (fable — деньги/алгоритм/контракт; opus — ремесло/проза/идиоматика; opus — шов exit-кодов + верность §3/§4), по скептику-опровергателю на каждую находку, критик полноты финалом. 20 находок → **11 опровергнуто**, 8 выжило, +5 от критика.
|
||||||
|
|
||||||
|
| Находка (линзы) | Вердикт | Диспозиция |
|
||||||
|
|---|---|---|
|
||||||
|
| **Репрайсер суммирует чекпоинты ВСЕХ поколений**: `checkpoints` append-only на всю жизнь книги и не несут снапшота, а `chunk_status.cost_usd` ПЕРЕЗАПИСЫВАЕТСЯ текущим поколением ⇒ после первой же пере-покупки число согласия и `projected_book_usd` завышены ×N | CONFIRMED ×3 линзы, воспроизведено исполнением | **ПРИНЯТА — регресс МОЕГО же фикса, исправлен.** Членство поколения выводится из единственного пер-поколенного авторитета в сторе — денег самой строки: обход вызовов С НОВОГО КОНЦА, пока они помещаются в `cs.CostUSD` (`reprice.go`). Потребовало порядка вставки: `ORDER BY c.rowid` (по `attempt` нельзя — он перезапускается каждый прогон) |
|
||||||
|
| **Пропущенные (`skipped`) строки прайсились по осиротевшим чекпоинтам** своей позиции — фантомные деньги в базе порога, без всякого `--resnapshot` | PARTIAL (тот же корень) | **ПРИНЯТА, закрыта тем же фиксом:** у `skipped`-строки `cs.CostUSD=0` ⇒ обход не берёт ни одного вызова |
|
||||||
|
| **Паника воркера, проигравшая гонку другой ошибке волны, исчезала бесследно** — `fail` first-wins, и прогон уходил кодом сиблинга: 4 (платформа пишет `paused`) или 5 (graceful stop), стек уничтожался | PARTIAL, воспроизведено на трёх видах первой ошибки | **ПРИНЯТА, исправлена.** У краха свой слот `panicErr`, возвращается ПРЕИМУЩЕСТВЕННО перед `firstErr`; first-wins для обычных ошибок не тронут. Разошёлся со вторым скептиком, советовавшим только печатать стек: упавший процесс не «пауза» — врать в пользу возобновляемости хуже |
|
||||||
|
| **Обоснование правила остатка ложно**: докстринг ссылался на redrive, а `ResetChunkStages` сносит строку диспозиции ВМЕСТЕ с чекпоинтами в одной транзакции — сценарий недостижим | CONFIRMED / PARTIAL | **ПРИНЯТА:** остаток пере-описан честно (пол для стора, потерявшего вызовы — рестор, легаси), тест пере-написан |
|
||||||
|
| **Спека-проект `backend/docs/D15.2-*.md:398` всё ещё определяет проекцию как Σ хранимого `cost_usd`** (критик; моя зона, заказ требовал «правда или прочь») | найдено критиком | **ПРИНЯТА:** эррата в теле спеки |
|
||||||
|
| Три непокрытые мутации (цена по ОТВЕТИВШЕЙ модели · раскрытие непере-прайсенной части в тексте согласия · порядок panic-first при `errors.Join`) | найдено критиком | **ПРИНЯТЫ:** три пина добавлены; последний показан красным (перенос ветки паники ниже сентинелов даёт 2/3/10) |
|
||||||
|
| Проза: история про exit 2 пересказана в шести блоках; 33-строчная шапка `reprice.go` | ОПРОВЕРГНУТЫ по метрике (плотность файлов сдвинулась на 1–2 пункта, норма репо такая же) | **ЧАСТИЧНО ПРИНЯТЫ ВОПРЕКИ ОПРОВЕРЖЕНИЮ** — слово владельца о лаконичности выше довода «дом так пишет»: шапка `reprice.go` 33→14 строк. ⚠ **Испр. по раунду 2 (находка F6): моё утверждение «история про exit 2 рассказана ОДИН раз» было НЕВЕРНО** — она изложена на четырёх сайтах (`obs/panic.go`, `waverun.go`, `wavepanic_test.go`, `panic_exit_test.go`) и упомянута ещё на двух в `cmd/tmctl`. Ревьюер рекомендовал НЕ резать: каждый текст говорит про свой шов и все четыре фактически верны; исправлено утверждение, не код |
|
||||||
|
| `status` жёстко падает при ошибке загрузки репрайсера · `dispatchCommands` не выводится из switch · порядок в `CheckpointUsageForBook` избыточен · `TM_CLASSIFY6_N` мусорный игнорируется · плоская карта вместо вложенной · и ещё 6 | ОПРОВЕРГНУТЫ исполнением | Действий нет. По одной опровергнутой находке действие всё же сделал: `EXPLAIN QUERY PLAN` показал лишнюю temp-B-tree сортировку по колонкам, которых логика не использует → `ORDER BY c.rowid` |
|
||||||
|
|
||||||
|
**РАУНД 2 адверсариального ревью — ПРОВЕДЁН по дельте первого (воркфлоу `wf_bb22ee8a-a4b`: 15 агентов, 0 ошибок, 1.22M токенов, 70 мин).** Скоуп узкий и намеренный: свежий, никем не смотренный фикс. Линзы — fable по правилу членства поколения (с прямым указанием, что это ВЫВОД, а не тождество), opus по слоту `panicErr` + **мутационная проверка тестов**. 12 находок → 5 опровергнуто, 7 выжило, +3 от критика. **Вердикт критика: HAND OVER WITH NAMED CAVEATS.**
|
||||||
|
|
||||||
|
| Находка | Вердикт | Диспозиция |
|
||||||
|
|---|---|---|
|
||||||
|
| **R2-1: обход ломается на ОТКАТЕ конфига.** Правило считает, что вызовы текущего поколения — самые НОВЫЕ в ячейке. Откат промпт-конфига адресуется старым `request_hash`, сеттл становится no-op (`ON CONFLICT DO NOTHING`), строка пере-записывается стоимостью СТАРОГО вызова, а новый остаётся на файле. Воспроизведено сквозным прогоном: тихое ×2 завышение при `HistoricalRows=0` | PARTIAL major. ⚠ Скептик снял главное обвинение: **это НЕ регресс моего фикса** — до-фиксный код даёт то же число в этом потоке; направление «занижение» ново, но показано только синтетически | **ПРИНЯТА.** Добавлен детектор: перебор `accounted > cs.CostUSD` **доказывает**, что новейшие вызовы не принадлежат строке ⇒ откат к сумме счёта с `fromHistory=true`. Тихое ×2 меняется на устаревшую цену, названную вслух. Точное решение требует маркера поколения на `checkpoints` (схема денежной таблицы) — **вопрос на ратификацию, а не третья заплата** |
|
||||||
|
| **F1 (blocker): направление обхода НЕ ПРИБИТО** — переворот на «от старых» переживал всю зелень: мой фикстур был симметричен (два одинаковых поколения) | PARTIAL | **ПРИНЯТА:** поколения сделаны асимметричными ($0.60 против $0.05); мутация теперь убита |
|
||||||
|
| **F2: `ORDER BY c.rowid` не прибит** — и `ORDER BY c.attempt`, и полное удаление переживали зелень. Плюс: планировщик показывает, что клауза temp-B-tree не убирает, а ДОБАВЛЯЕТ | PARTIAL major | **ПРИНЯТА:** store-тест с немонотонными `attempt` (0,1,0,1 против порядка вставки). ⚠ Моё обоснование через `EXPLAIN QUERY PLAN` в записи выше было неверно: клауза нужна для КОРРЕКТНОСТИ, а не ради плана |
|
||||||
|
| **F4: счётчик раскрытия `HistoricalRows` не прибит** — удаление инкремента переживало зелень | PARTIAL minor | **ПРИНЯТА:** тест ведёт флаг из `rp.usd` через реальную `projectRebill` до текста согласия |
|
||||||
|
| **F8/R2-2: докстринг guard-теста называл формы, которых фикстуры не строят** (ретрай, производные экспорты) — дрейф док-против-кода в паке про честность | PARTIAL | **ПРИНЯТА:** комментарий говорит ровно то, что тест гоняет |
|
||||||
|
| **C2 (критик): текст согласия звал ЧАСТИЧНО пере-прайсенную единицу целиком исторической** («their usage is no longer on file») | найдено критиком | **ПРИНЯТА:** формулировка исправлена |
|
||||||
|
| **C1 (критик): `dispatchCommands` прибит не в ту сторону** — выброс команды ИЗ списка оставлял зелень | найдено критиком | **ПРИНЯТА:** AST-тест читает сам switch `run()` и сверяет со списком в обе стороны |
|
||||||
|
| **C3 (критик): мусорный `TM_CLASSIFY6_N` тихо игнорировался** и проба покупала 5 вызовов — прямо над громким гейтом | найдено критиком | **ПРИНЯТА:** нечисловой/неположительный — громкий отказ до первого вызова |
|
||||||
|
| F6 (проза), и 5 опровергнутых: $0-строка не пере-прайсится вверх · $0-вызов теряется · при победе паники теряется ошибка сиблинга · `Status` жёстко падает · «крах не может уйти кодом 2» неверно для `fatal error` | ОПРОВЕРГНУТЫ | Кода не трогал. Последнее — честное уточнение: неперехватываемые `fatal error` (конкурентная запись в map, OOM) по-прежнему дают 2; `recover` их не ловит по устройству Go. **Назвать оркестратору как остаточный класс** |
|
||||||
|
|
||||||
|
**Мутационная приёмка исполнением.** Четыре мутации, которые у ревьюера ПЕРЕЖИЛИ зелень, теперь убиты: обход от старых → `TestRepricerCountsOnlyTheCurrentGenerationOfCheckpoints`; `ORDER BY c.attempt` → `TestCheckpointUsageForBookReturnsInsertionOrder`; снятие `HistoricalRows++` → `TestProjectionCountsRowsItCouldNotRePrice`; снятие детектора перебора → тот же генерационный тест.
|
||||||
|
|
||||||
|
**Что критик проверил САМ и подтвердил** (не мои клеймы, его прогоны): батарея EXIT=0 с ровно двумя SKIP; голден сверяется с ФАЙЛОМ `testdata/golden/capture.golden`, не сам с собой, и файл не в diff; wire-нейтральность доказана трижды (голден · оба хеш-несущих файла в дельте изменены ТОЛЬКО в комментариях · под `prompts/`/`configs/`/`langpacks/`/`testdata/` нет ни одного изменения); ноль удалённых имён тестов; оба регресса раунда 1 красные на до-фиксном коде; ни `platform/`, ни `frontend/`, ни контракт 14 не читают `projected_book_usd`/`rebill_usd`; **новое чтение замерено на синтетическом сторе 800 глав / 4800 чекпоинтов / 64 МБ — 39–43 мс** против 10-секундного бюджета операции. Мой счёт тестов был на единицу меньше фактического.
|
||||||
|
|
||||||
|
**Перепроверка после ревью — командами.** `make battery` → EXIT=0, те же два SKIP. Голден → ok. `go vet -tags live ./...` → чисто. `^func Test` = 823 (было 819), удалённых имён 0. Красное до фикса показано исполнением для ОБОИХ регрессов: `projected $0.007280` против настоящих `$0.003640` (пере-купленная книга) и `wave returned *pipeline.CeilingHalt` / `*errors.errorString: context canceled` вместо паники. Замер стоимости нового чтения: на самом большом реальном проекте (coldrun-a) 149 чекпоинтов, план — два индексных поиска, 2.13 мс.
|
||||||
|
|
||||||
|
**Obstacle.** (а) Интервальная самопроверка субагентом в СЕРЕДИНЕ работы не проводилась — ревью запускалось финалом по слову владельца; оба регресса нашлись бы раньше, промежуточный прогон линз стоил бы дешевле. (в) Живой прогон стартовал ~00:58 UTC и захватил границу пикового окна 01–04 UTC (правило-рекомендация «не стартовать в пик»): при трате $0.0056 против потолка $0.20 ожидание трёх часов было бы несоразмерно, но факт называю. (г) `git status` показывает чужой ИНДЕКС (полигон: `eval/`, `docs/experiments/`) — не трогал и не прибирал; своё не стейджил.
|
||||||
|
|
||||||
|
**Запись оркестратора №18, 17.08 — ПРИЁМКА ПАКА «ЧЕСТНЫЕ ЧИСЛА И СТАТУСЫ»: ПРИНЯТ С ФИКС-ЛИСТОМ, залендено.** Панель 5 линз (слепая по заказу+диффу ДО отчёта · деньги · шов · вне карты · собственные мутации в копии) + пере-раны оркестратора. **Своей рукой пере-проверено исполнением:** `make battery` EXIT=0, SKIP ровно два и оба helper-процессы · голден `-run Golden` ok · `^func Test` = **827**, удалённых имён 0 · **деньги пробы ДВУМЯ независимыми путями — сумма чекпоинтов минус вызов 02.08 и пере-счёт из сырого `usage_json` по запинённой таблице `models.yaml` — оба дали $0.005582424**, до последнего знака · вердикт гейта из сырого артефакта: `runs: 5, runs_at_threshold: 4`, `finish=stop` ×5 ⇒ PASS по ратифицированной форме и ложное падение по прежней. Регрессов против HEAD панель не нашла: три места, где движок врал, действительно перестали врать.
|
||||||
|
|
||||||
|
**Фикс-лист ФЧ-1…ФЧ-8** (ни один не блокирует лендинг; все — «заявленное не прибито» либо «текст обещает больше числа»). **ФЧ-1 (HIGH, три неприбитые гарантии, мутации ПЕРЕЖИЛИ зелень):** снятие фильтра по книге в `CheckpointUsageForBook` (`store/ledger.go:371`) не валит ни store-, ни денежные pipeline-тесты — **воспроизведено оркестратором лично**, а это единственная защита от того, чтобы деньги ЧУЖОЙ книги вошли в число согласия · ключ ячейки можно лишить `chunk_idx`, и обход начнёт съедать деньги соседнего чанка (во всех фикстурах глава = один чанк) · ветка пометки «строка не пере-оценена» не ловится на продовом пути. **ФЧ-2 (MED):** два докстринга `reprice.go` описывают НЕ то, что делает код (детекция перебора односторонняя — суффикс вытесненных вызовов с точной суммой проходит молча; «остаток несётся по счёту» — код сперва съедает вызовы прошлых поколений) — в паке про честность это тот же класс, что чинился. **ФЧ-3 (MED):** заказ 187 исполнен наполовину — снятый закон approved-only продолжает утверждаться в докстринге теста и в `backend/docs/D15.2-*.md:317`. **ФЧ-4 (MED):** раскрытие «часть суммы — старые деньги» не доезжает до `status`/`--json` (`HistoricalRows` теряется на границе `status.go`), а второй операторский текст отказа (`--accept-rebill`) цитирует пере-прайсенное число без basis. **ФЧ-5 (MED, деньги — решение владельца):** пере-прайс чинит ось ЦЕНЫ, но не ось МОДЕЛИ — при смене модели стадии (модель входит в снапшот) число считается ценой ОТСТАВЛЕННОЙ модели, замер линзы: $0.003640 против честных $0.036400 при `HistoricalRows=0`, и фраза согласия при этом заявляет «current price table» без оговорки. Не регресс, но обещание §0 промта для этого триггера остаётся живым. **ФЧ-6 (LOW):** `Status()` жёстко падает при ошибке репрайсера — в трёх строках над сознательной политикой «ошибка проекции репортится, но отчёт не валит»; это канал сеттла платформы. **ФЧ-7 (MED, шов):** паника воркера ПОВЕРХ пойманного потолка уничтожает факт потолка на обоих каналах — прогон, остановленный ceiling'ом, платформа запишет `failed`, что PD-113 прямо запрещает (не регресс; до пака терялось иначе). **ФЧ-8 (LOW):** докстринг `TranslateBook` про «каждый выход через `terminal()`» неверен для паники вне волны · комментарий `dispatchCommands` («список теперь один») — usage-строка осталась второй копией · шапка рига ссылается на заменённую ратификацию.
|
||||||
|
|
||||||
|
**Подтверждено панелью как ВЕРНОЕ (клеймы сессии, пере-проверенные независимо):** словарь кодов побайтно не двинут, добавлен ровно один `return 1`; «паника → 1» читается платформой как `failed` во всех пяти точках потребления (инвентарь: `ingest/exit.go` · `ingest/supervisor.go` · `runner/engine.go` · `runner/marker.go` · `runs/reconcile.go` · `books/parse.go`), тогда как ДО пака упавший посреди книги прогон записывался `ready` · остаточный класс подтверждён: непойманные `fatal error` (конкурентная запись в map, OOM) по-прежнему дают 2, `recover` их не ловит · wire-нейтральность: оба хеш-несущих файла изменены ТОЛЬКО комментариями · строка 164 после пака по-прежнему верна · клейм сессии про банковые роли верен И это преexisting — заведена строка **194**.
|
||||||
|
|
||||||
|
**Что НЕ проверено:** мутации ФЧ-1 (2) и (3) приняты со слов мутационной линзы — лично воспроизведён только фильтр книги · старый вызов 02.08 в леджере пробы не сошёлся ни с одной из двух ценовых таблиц (вне скоупа пробы, не разбирался) · перф нового чтения на боевой книге — замер только синтетический и со слов сессии.
|
||||||
|
|
@ -2241,7 +2241,7 @@ E1 побайтно равен D0 : 5/16 ← НЕ ОБЪЯВЛЕНО НИГД
|
||||||
|
|
||||||
Санкция владельца 15.08 — **$6.85** (записана числом в `money_d.py`), потрачено $6.002420, оба пути
|
Санкция владельца 15.08 — **$6.85** (записана числом в `money_d.py`), потрачено $6.002420, оба пути
|
||||||
счёта сходятся до шестого знака. **Девиация объявляется:** последняя цифра, приписанная слову
|
счёта сходятся до шестого знака. **Девиация объявляется:** последняя цифра, приписанная слову
|
||||||
владельца в тексте репозитория, — $4.50 (`docs/PROGRESS.md:346`); фактический расход превышал её на
|
владельца в тексте репозитория, — $4.50 (⚠ якорь пере-адресован оркестратором №18 22.08: цитируемая запись вынесена срезкой хроники в `docs/archive/PROGRESS-2026-08-10-15.md:23`=`из $4.50`; прежний якорь в живой PROGRESS мёртв — и он и раньше был неточен на две строки); фактический расход превышал её на
|
||||||
$1.502420 (33%). Цепь $10.00 → $4.00 → $4.50 → $5.40 → 6.74 прошла все самопроверки фазы, потому что
|
$1.502420 (33%). Цепь $10.00 → $4.00 → $4.50 → $5.40 → 6.74 прошла все самопроверки фазы, потому что
|
||||||
**фриз-гейт сверяет с git ПОКУПАЮЩИЙ файл, а не кассу**; потолки правятся в рабочем дереве и
|
**фриз-гейт сверяет с git ПОКУПАЮЩИЙ файл, а не кассу**; потолки правятся в рабочем дереве и
|
||||||
действуют немедленно. На ФД-C этим воспользовались осознанно ($0.334774 против закоммиченных $0.300).
|
действуют немедленно. На ФД-C этим воспользовались осознанно ($0.334774 против закоммиченных $0.300).
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue