textmachine/docs/archive/architecture/05-decisions-D39-91-105.md

74 KiB
Raw Permalink Blame History

Архив D-лога: D39.91D39.105 (кроме живых тел D39.93 · 99 · 100 · 102 · 104)

⚠ АРХИВ (слайс D39.125, 09.08.2026): тела нот вынесены ИЗ docs/architecture/05-decisions-log.md ДОСЛОВНО. Приёмки №11№13: эффорт · стандарты репо · контракт API · платформа P0 · банк-арбитраж (0204.08). Номера остаются контрактом: карта актуальности и эрраты — в живом D-логе (при конфликте он побеждает). Инструкции отсюда НЕ исполнять; часть решений superseded — сверяй карту и эрраты живого файла.

D39.91 — ПРИЁМКА бэкенд-пака строк 104/46/16 (оркестратор №11): пак ПРИНЯТ и заленден 553f1a3, обе девиации РАТИФИЦИРОВАНЫ, две находки приёмки, все отложки Д4Д9 получили носителей, строка 104 ЗАКРЫТА (02.08).

Мандат — D39.90 п.1 и задача №1 хендоффа. Всё ниже — исполнением, не чтением отчёта.

1. Батарея с фрозен-числами: 5/5 совпали. build/vet/vet -tags live/gofmt чисты, go test -race -count=1 ./... — все 14 пакетов ok (pipeline 82.2s). Голден PASS без пере-захвата · парити EXACT n=13618 catastrophe{方源:0 蛊:1 蛊师:2 古月:22} recall@proposed=0.9655 (56/58) · labels-фриз k4b 10/1/36/99 · k4_inverse 3/0/1/71 · k2 34/1/6/51 · k4a 0/0/0/348 · K6 tp=1 fp=6 fn=0 tn=251.

2. Деньги вторым путём: сошлись до нуля тремя маршрутами. Леджер Σ чекпойнтов $0.045095 ≡ мой независимый пересчёт usage×цены models.yaml (flash $0.034745 + pro $0.010350) ≡ Σ request_log.cost_usd; decode_error 0, estimated 0 (расхождения строки 78 не было). Разбивка по ролям сверена с логом: терминолог $0.005750 (5 вызовов, 4 stop/1 length) · классификатор $0.007706 = осн. $0.004286 + риг $0.003420 · черновик flash $0.021289 (23 вызова: 20 stop + 3 length-ретрая) + pro $0.010350 (2 эскалации). НАХОДКА-1 приёмки: §2.1 отчёта и D39.90 п.2 маркируют «$0.031639 (flash)» — на деле это flash+pro черновой волны ($0.021289+$0.010350); суммы и леджер верны, врёт метка. Поправлено ревью-шапкой отчёта; при цитировании черновая волна flash-only = $0.021289.

3. Адверсариал по несущим клеймам — все выдержали. (а) Рукописных config.Stage{} в не-тестовом коде НОЛЬ (grep), единственный Request{}-литерал — внутри самого attemptRequest (stagerun.go:407); все четыре RequestHash-сайта едут через шов (escalation.go:109, stagerun.go:420, terminologist.go:505, repair.go:353). (б) Перекупки нет: snapshot.go паком не тронут (diff пуст), Gates.Terminology в снапшоте отсутствует, repairSnap нового ключа не фолдит; обратная сторона проверена и признана штатной — СМЕНА gates.*.reasoning потом двигает request-hash без resnapshot-гейта, но это тот же контракт, что у смены gates.*.model (перекупка ограничена классом вызовов гейта, видима леджером; доккоммент TerminologyGate это аргументирует). (в) Гарды: пять НЕЗАВИСИМЫХ посадок приёмки (алиас-импорт-литерал · []cfg.Stage{{…}} · hoisted Request · var-форма · new()) — все CAUGHT с позициями, после удаления посадок гарды зелёные; рефлексионный гард полноты верифицирован чтением (XOR карт carried/deliberatelyZero корректен в обе стороны). (г) ⚠ Клейм «8e4495006b978ed4 в обе стороны» НЕВОСПРОИЗВОДИМ как таковой (старая форма удалена из дерева, хеш не запинен тестом) — принят ПО ЭКВИВАЛЕНТНОСТИ: RequestHash длина-префиксует req.Reasoning, опущенное поле композитного литерала = "" побайтно, плюс TestBankProbeAndAttemptAddressOneCheckpoint (боевой путь ReserveSettleWithCheckpoint, 3 уровня эффорта) и голден без пере-захвата. (д) N=5 сверен с сырьём classifier-6of6-{low,high}.json: low 4/5 · $0.001016 · completion 911278 · промах run3=91 ток. с 1/4 по дискриминирующему подмножеству; high 5/5 · $0.002335 · 9203104; цена ×2.298. (е) Провод: 35 тел reasoning_effort:"low", ключей thinking 0, бюджетных WARN 0; terminology finished: consolidated=72 · unanswered=18 · reclassified=14 · bad_lines=0 · off_language=0.

4. Девиации строки 104 — обе РАТИФИЦИРОВАНЫ этой нотой. (а) Repair: ключ СВОЙ, наследование снято (против буквы промта и D39.87) — деньги и семантика подтверждены исполнением: reasoning: "off" стоит на финальной стадии всех пяти шиппинг-конфигов (c1:77 · c2:51 · arm-glm:43 · arm-deepseek-pro:43, + стенд coldrun-b:44) ⇒ наследование двигало хеш всех оплаченных repair-вызовов; и то же слово «off» на другой модели меняет СМЫСЛ (no-op deepseek → живой thinking:{type:disabled} на glm). Запинено TestRepairStageTakesItsEffortFromItsOwnGate. (б) ThinksOnWire: область правки ровно случай «ключ отсутствует» на extra_body_disable — провод (applyToBody: ""→disable) существовал ДО пака и не менялся, менялся врущий предикат; явный off в армах предупреждался и до, и после (Д11); 8 кейсов теста на три control. (в) Вывод «одна ручка» принят с оговоркой Д8 (2/6 термов — припоминание; носитель Д8 — строка 116). (г) Качество прозы не судилось — остаётся на строках 16/13б, в контракт этой приёмки не входит.

5. НАХОДКА-2 приёмки: стейл-доккоммент capability.go:78. Комментарий константы ReasoningExtraBodyDisable до сих пор говорит «effort "" leaves the provider default», противореча и проводу (applyToBody мержит disable на ""), и inline-коменту самого arm, и новому предикату. Пак чинил ровно эту путаницу (D39.86-обязанность доккомментов) и хвост в 30 строках выше собственной правки не заметил. Однострочный фикс — носитель: строка 114 (тем же касанием, что Д4).

6. Носители отложек — гигиена D39.90 исполнена ТЕМ ЖЕ лендингом. 114 = Д4 (gates.terminology.target_script не сверяется с book.target_lang — мисконфиг тихо ИНВЕРТИРУЕТ банковский экран) + находка-2 (оба — конфиго-слой ручки, вне снапшота, дёшево). 115 = Д6 (//go:embed в lang/embedded.go:22 — ЯВНЫЙ список файлов: новая ЦЕЛЬ требует правки Go, CompileCheckers паникует на неполном файле цели ⇒ на ревью-вопрос общности ответ сегодня НЕТ — дыра в ратифицированной «ФАЗЕ 2 ОБЩНОСТИ » D39.64, и она не про язык, а про строку эмбеда). 116 = Д8 (ратифицированный порог классификатора «6/6» определён для ОДНОГО вызова; на рекомендованном low риг N=5 красный — порог обязан стать выборочным контрактом ДО применения (б) где-либо; решается вместе со строкой 112). Реестр 108 получил двух жильцов: Д5 (enum эффорта провайдер-слеп; решение оркестратора этой нотой — пер-модельную таблицу НЕ строить: новый механизм без носителя качества/денег, misconfig ограничен бюджетами и назван в доккомменте ValidReasoningEffort; триггер реопена — первый живой инцидент кривого поведения уровня на проводе) и Д9 (аддитивные провайдеры отказываются бэнк/repair-гейтам — блок не несёт reasoning_max_tokens; лоадер fail-closed; триггер — первая потребность гейта в аддитивной модели). 107 дописан Д7 (свести давний байтовый TestProviderEgressSeamIsSingle с AST-обходом в один — тем же решением формы гардов). Д1→46 · Д2→46 · Д3→105 · Д10→112 · Д11 закрыт — носители существовали до приёмки, сверено.

7. Сверка §5.4 отчёта ПУНКТАМИ (правило D39.90 п.9 — по плану, не по сводке): потерь сжатия НЕТ. Шаги 12 (корпус-фикстура + регресс-тест запаса) → строка 113 ✓ · шаг 3 (два дока-дефекта: 0.9510→0.9767 на 1055, база 1.5%→3.02%) — УЖЕ исполнен №10 в теле строки 46, других публикаций неверных чисел grep не нашёл ✓ · шаги 46 (чистая функция → офлайн-дифф → бамп classifierVersion с подписью) → тело строки 46 ✓ · шаг 7 (cultivation в сиде, не порогом) → хвост 46 ✓ · шаг 8 (сиблинг строкой с триггером) → первый жилец 108 ✓.

8. Лендинг и очередь. Пак закоммичен pathspec-формой: 553f1a3, ровно 13 файлов backend/, чужие файлы (фронт-сессия ЖИВАЯ, её правки в дереве) и START_PROMT.MD не тронуты. Отчёту дана ревью-шапка ПРИНЯТ. Очередь скриптом по таблице: 97 строк (95 закрытая 104 + новые 114/115/116) · «скоро» 15 (2·4·5·18·46·49·55·95·107·108·109·112·113·114·116) · блокеров 0 · «на приёмке» 0; гейт строки 44 «при приёмке 104» наступил — строка пере-диспозиционирована (вариационный замер флора при low не проводился, вопрос числа жив). На владельце без изменений три решения: развилка (а)/(б)/(в) строки 46 — выбор сессии И приёмки: (а); строка 107 (форма гардов + линтер/CI; первым шагом $0-замер); строка 112 (применять ли (б) к пяти шиппинг-конфигам и когда платить перекупку — теперь в связке со 116).

D39.92 — РЕШЕНИЯ ВЛАДЕЛЬЦА 02.08 (вечер): строка 46 пере-поставлена как closed-set «не тот язык, что просили», строка 107 САНКЦИОНИРОВАНА целиком (CI+линтер+бампы, промт выдан), строка 112 САНКЦИОНИРОВАНА, вендор-сверка DeepSeek исполнена.

1. Строка 46 — переформулировка владельца ратифицирована как ПОСТАНОВКА задачи. Слово владельца: нужен не языковой детектор, а детектор «вернуло НЕ на том языке, что просили» (closed-set, нулевая гипотеза «текст на N», аттракторы: en · язык источника · сиблинги N); полноценный LID — максимум запасной флаггер ВНЕ пути вердикта; «сбой» — четыре режима (эхо · уход в другой язык · дрейф в середине · мета/деградация), гнать всё через один детектор — ошибка проектирования; в коде проверку изолировать отдельным слоем. Констатация приёмки: ресёрч бэкендеров ЗАПИСАН и отвечает этой постановке почти пункт-в-пункт (EFFORT_HANDLE_2026-08-02.md §5.15.3, живые носители — строки 46/113/108): four-modes = Guerreiro (разные детекторы на режим, §5.1); closed-set и аттракторы подтверждены (en — доминирующий аттрактор, наши 2/20 английские); эхо у нас ловится БЕЗ LID и лучше Левенштейна — sourceScriptShare 18/20 при 0 FP и запасе 13× (для zh→ru письменности далёкие); слой «скрипт детерминированно» = и есть предлагаемый экран targetScriptShare на lang.LangScripts (шаг 4 плана §5.4 — ЧИСТОЙ изолированной функцией, ровно «изолировать отдельно»); abstain-вердикт есть (пол 200 букв); срез терминов/латиницы = cultivation в сиде. Расхождения с текстом владельца — ДВА, оба замером на нашем корпусе: (а) гарантия Неймана–Пирсона FPR ≤ 0.1% на этом корпусе не покупается — независимых позиций 114, правило трёх даёт ≤ 2.594% (в 26 раз слабее), а калибровка порога на той же выборке двоит данные ⇒ порог ставится консервативной КОНСТАНТОЙ в пустом интервале [0.0000; 0.9767] и версионируется как контракт (не как тюнинг); (б) замыкание алфавита (L2) и посегментный worst-of LR (L4) на СЕГОДНЯШНЕМ корпусе отвергнуты числами (болгарский алфавит ⊂ русского — L2 нулевой; у L4 ноль положительных примеров и умножение FPR на число сегментов; lingua-go недетерминистична 6/23 на 20k повторов даже в closed-set режиме — в путь вердикта нельзя, как ЗАПАСНОЙ офлайн-флаггер вне вердикта допустима) — это отказ ПО ДАННЫМ ОДНОЙ КНИГИ, при сиблинг-инциденте реестр 108 возвращает вопрос (дискриминатор уже назван: плотность ы/э/ё ниже ожидания). Слой 0 владельца (отношение длин len(out)/len(in) вне полосы пары) в ресёрче НЕ рассматривался — добавить ЗАМЕРОМ на корпус-фикстуре строки 113 (дёшево, решит фикстура). Исполнение: форма (а) из D39.90 п.3 + изолированный модуль; порядок §5.4 в силе (фикстура 113 → чистая функция → офлайн-дифф → бамп classifierVersion); ⚠ денежный шаг 6 (бамп версии = снапшот всех книг) — ПО-ПРЕЖНЕМУ под отдельную подпись владельца, сегодня не санкционирован.

2. Строка 107 — САНКЦИЯ ЦЕЛИКОМ: «делаем по стандартам индустрии». CI + линтер + бамп x/net и библиотек; подход «осторожный, затем полный»; самописные AST-тест-гарды заменить штатной формой, «спилив лишний мусор»; ограничение равной силы: стандарты не должны мешать разрабатывать, тормозить и приводить модели к хакам (в промте — анти-хак-правило: спорное правило линтера ВЫКЛЮЧАЕТСЯ с причиной, а не обходится в коде; голый nolint запрещён). Промт выдан: docs/BACKEND_REPO_STANDARDS_SESSION_PROMPT.md — этапы: 0) строка 112 · A) $0-замер report-only · B) состав+режим по числам · C) Makefile/make battery+CI · D) бамп с живой пробой провода ≤$0.50 (x/net/http2 = транспорт) · E) гарды→analyzer с паритетом 12 посадок, снос тест-гардов только после 12/12 (Д7 исполняется там же). Три СТОП-пинга: >1000 находок · >30 файлов правок разом · любое изменение поведения провода.

3. Строка 112 — САНКЦИЯ: править все пять шиппинг-конфигов сейчас (reasoning: "low" на черновике), перекупка снапшотов старых книг при их следующем прогоне принята, новые книги $0. Внесено этапом 0 промта п.2; редакторские/финальные off не трогаются (Д11).

4. Строка 116 — рекомендация оркестратора подана владельцу: порог классификатора пере-ратифицировать выборочным — «≥4/5 прогонов N=5 достигают 6/6» (пер-прогонный критерий 6/6 сохраняется, контракт становится выборочным; совпадает с замеренным low и дефолтом рига). Ждёт слова владельца; альтернатива, если хочет жёстче: порог по дискриминирующему подмножеству 4/4 без двух термов-припоминаний.

5. Вендор-сверка DeepSeek исполнена по правилу 10.07 (веб, не гадание). Вопрос владельца: «полного лечения эха нет? модель хуже прежней? мигрировать?» Ответ тремя фактами: (а) наши замеры — low стену НЕ убирает, а разрежает (1/5 батчей всё ещё умирает на потолке с reasoning=7999), эхо лечится эскалацией (2/20 в пробе), т.е. РЕЖИМ УПРАВЛЯЕМ, но не вылечен; (б) интернет ДЕГРАДАЦИЮ НЕ подтверждает: 0731 = официальный релиз flash (re-post-train, бенчи ВВЕРХ, вкл. agentic) — наш отказ это не «модель хуже», а СМЕНА ПОЛИТИКИ ДЕФОЛТА (thinking по умолчанию high) на плотном хане, и ключ reasoning_effort — штатный вендорский рычаг, который мы теперь и используем; (в) ⚠ вендор анонсировал смену МАППИНГА эффорта deepseek-v4-pro «early August 2026» ⇒ квирк 3а («у pro эффорт не настраивается, low→high») может устареть со дня на день — вахта заведена в реестр 108 (триггер: аномалия редакторского арма / дата > 05.08 ⇒ пере-проба маппинга + сверка changelog; абсорбция в 00-provider-quirks — полигоном по его зоне). Миграция черновика с deepseek — вопрос ЗАМЕРА, не решения сейчас: при работающем low приоритет низкий; кандидаты (glm-5, mistral, qwen) меряются той же пробой формы bank-low, когда/если владелец даст добро — строкой не заводится до его слова.

6. Строка 5 (банк-ресёрч) — статус подтверждён владельцу: промт BANK_ARBITRATION_RESEARCH_SESSION_PROMPT.md жив, но заход по нему прерван владельцем досрочно, артефактов в дереве НЕТ (проверено №10) — находки существуют только в истории той закрытой сессии. Диспозиция пере-запуска ратифицирована (D39.90 п.5: §3-A+B1+B3, B2 → под-проба, §5-C отложен, потолок $1.20); промт будет подрезан оркестратором ПЕРЕД пере-выдачей. Вопрос владельцу открыт: вытащит ли он находки из истории прерванной сессии (тогда они входом в подрезанный заход), или пере-запуск с нуля.

D39.94 — ЗАКРЫТИЕ СЕССИИ ОРКЕСТРАТОРА №11 (02.08): состояние передачи.

1. Сделано: приёмка бэкенд-пака 104/46/16 исполнением — ПРИНЯТ, код 553f1a3, строка 104 закрыта (D39.91) · решения владельца ратифицированы: 46 пере-поставлена closed-set, 107 санкционирована целиком, 112 санкционирована (D39.92) · дизайн-ввод по 46: изолированный пакет детекторов, именованные причины отказа, именованный флаг вместо реюза FlagCJKArtifact (D39.93) · выдан BACKEND_REPO_STANDARDS_SESSION_PROMPT.md (линтер/CI/бампы/гарды→analyzer; этап 0 = пять шиппинг-конфигов на low).

2. Ждёт исполнения: бэкенд-сессия по промту стандартов; её приёмка — преемником по образцу D39.91 (батарея + фрозен-числа + посадки-паритет 12 обходов этапа E + предъявление живой пробы этапа D ≤$0.50).

3. Ждёт выдачи (преемник): промт пака экрана 46. Порядок жёсткий: фикстура+регресс (113) → изолированный модуль с именованными вердиктами → офлайн-дифф по всем чекпойнтам (ожидание: ровно 2 строки меняются, СТОП при любой здоровой) → денежный шаг (бамп classifierVersion) ТОЛЬКО с подписью владельца. Ограничения: D39.92 п.1 (порог константой-контрактом · abstain 200 букв · слой-0 длин добавить замером · Hunspell/GlotScript/LID в путь вердикта НЕ строить) + D39.93 (именованный флаг + escalatable(); скрипт-НАБОРЫ цели в данных — ja/ko). Тем же диффом: Д2 (detectLatinInsertion под TargetScriptNonLatin) и Д3 (SourceEchoExpected для classifier) — строки 46/105.

4. Открыто на владельце (ответа при закрытии НЕТ): 116 — форма порога классификатора (подано «≥4/5 прогонов N=5 дают 6/6»; альтернатива — 4/4 по дискриминирующему подмножеству) · строка 5 — вытащить находки прерванного банк-ресёрч-захода из истории той сессии ИЛИ пере-запуск с нуля; в обоих случаях промт ПОДРЕЗАТЬ перед выдачей по D39.90 п.5 (§3-A+B1+B3 · B2 → под-проба · §5-C отложен · потолок $1.20) · мини-проба строки 44 «low + потолок 16k на упавшем классе батчей» (~$0.05) — идея владельца, санкции нет · подпись денежного шага по 46 (когда дойдёт).

5. Вахты и грабли преемнику: вендор-анонс смены маппинга эффорта deepseek-v4-pro «early August 2026» — реестр 108, триггер: дата >05.08 или аномалия редакторского арма; medium на DeepSeek не ставить (вендор документирует low/high/max — Д5, реестр 108); фронт-сессия ЖИВАЯ; дерево на закрытии чисто от бэкенд/докс-зон, незакоммиченное в дереве — фронта и START_PROMT.MD.

6. Очередь скриптом: 97 строк · «скоро» 15 (2·4·5·18·46·49·55·95·107·108·109·112·113·114·116) · блокеров 0.

D39.95 — Пост-клоуз гигиена по речеку владельца: онбординг-хвосты добиты (02.08, ночь).

Речек владельца «перечитай онбординг» вскрыл хвосты, пропущенные лендингами №11: (1) строка 74 ЗАКРЫТА — её собственная буква «закрывается приёмкой этого пака» исполнилась в D39.91, а строка осталась в таблице; развилка решена (б) ещё D39.87, обе половины замера исполнены (флор-фальсификация · low-оживление), остатки давно живут в именованных строках: конфиги → 112 · экран → 46 · холодный прогон → 16 · число флора → 44; очередь после закрытия — 96 строк (счёт D39.94 «97» устарел этой нотой). (2) Промт BACKEND_EFFORT_HANDLE заархивирован с баннером приёмки, карта промтов README обновлена (текущий бэкендный — BACKEND_REPO_STANDARDS, банк-ресёрч помечен прерванным с диспозицией подрезки). (3) Буллеты CURRENT-STATE «Курс»/«Горизонт»/«Стек» освежены: ре-проба 74 — исполнена, не будущее; стоячее ограничение перед платными прогонами теперь — строка 112 (шиппинг-конфиги до лендинга покупают пустые ответы); «editor v4-pro вендором НЕ тронут» дополнено анонсом смены маппинга (вахта 108). (4) Шапка-диапазон этого файла и счётчик ролей в промте оркестратора доведены до D39.95. Урок в копилку №12: закрытие строки обязано триггерить греп по её НОМЕРУ во всех живых доках — буквы «закрывается X» в чужих строках и буллетах не закрываются сами.

D39.96 — ПРИЁМКА пака «стандарты репо» (строки 107 · 112 · Д7, оркестратор №12), ДВА ПАССА: пак принят по качеству кода УСЛОВНО, лендинг ГЕЙЧЕН тремя решениями владельца; найдена регрессия egress-паритета, запрещающая снос байт-гарда по букве промта (03.08).

Мандат — D39.92 п.23, задача №1 хендоффа D39.94. Отчёт: archive/reports/REPO_STANDARDS_2026-08-03.md (ревью-шапка). Приёмка шла ДВУМЯ пассами: пасс-1 (шесть верификаторов по клеймам отчёта) и — после вмешательства владельца, вскрывшего «след отчёта» как метод-дефект — пасс-2 из пяти АНТИ-СЛЕДОВЫХ линз (мнение до чтения отчёта · поиск дефектов вне его карты · реконструкция снесённых гардов из HEAD · аудит исключений линтера по коду · независимая репликация экспериментальных клеймов). Всё ниже — итог обоих пассов; расхождения пасс-1 ↔ пасс-2 названы явно как урок.

1. Ядро подтверждено исполнением (оба пасса, $0). Батарея: make tools-check + make battery EXIT=0 (real 1m25s на тёплом кэше) · golangci-lint 2.12.2 0 issues (сырой uncapped errcheck воспроизведён точно: 413; ⚠ методологическая грабля — без --max-issues-per-linter=0 --max-same-issues=0 no-config-режим молча режет к 50) · vet оба тег-набора с -vettool · 15 пакетов ok -race · скип ровно один. Конфиги: ровно 5 флипов черновиков; находка-1 (адрес c2:39 из промта = judge на glm-5) подтверждена кодом models.yaml:191194 + capability.go:155168; редакторские/судейские off целы. Бамп: версии и lockstep-пины сверены; голден-дифф пере-выведен независимо — двигаются ТОЛЬКО хеш-поля, атрибуция установлена форензикой пасса-2: голден сдвинут исключительно пином x/text (norm.go:69), не флипом конфигов и не x/net (голден живёт на fake-model). Код-дифф: все 9 дефект-фиксов §2 подтверждены, посторонних правок нет, //nolint в дереве 0, зеленения-хаков нет.

2. Экспериментальные клеймы — РЕПЛИЦИРОВАНЫ независимо (пасс-2; пасс-1 принял их со слов отчёта — это была ошибка приёмки, вскрытая владельцем). (а) Эквивалентность x/text 0.38↔0.40 ПОДТВЕРЖДЕНА с нуля и шире спецификации: все скаляры Unicode × {NFC, NFKC, width.Fold} + битый UTF-8 + меж-рунные пары/хангыль + энкодеры GB18030/GBK/UTF-16 (наш ingest.go) — три независимых SHA-256 идентичны под обеими версиями. (б) h2-фингерпринт: появление SETTINGS_MAX_FRAME_SIZE=16384 ПОДТВЕРЖДЕНО на байтах фреймов (свой TLS+ALPN стенд, копия keepAliveHTTPClient); набор/значения заголовков и тело байт-идентичны. ⚠ Поправка принятого клейма: «порядок HPACK-заголовков изменился» — МИСХАРАКТЕРИЗАЦИЯ (отчёта И пасса-1): порядок обычных заголовков рандомен per-request под ОБЕИМИ версиями (map-итерация в net/http), стабильного «до/после» не существует — опираться на него не мог никто; стабильны псевдо-заголовки и хвост. Дельта фингерпринта = только SETTINGS-раскладка. Непроверенным осталось (честная граница редукции): прокси-туннель CONNECT, CONTINUATION/PING, TLS-слой — закрывается живой пробой (п.5).

3. Посадки приёмки в гарды: пасс-1 — 7 своих (6/7 CAUGHT); пасс-2 добавил реконструкцию старых гардов из HEAD и НОВЫЕ посадки вне карты отчёта. Итог по осям: (а) Stage-сеам — прирост без регрессий: двойная цепь алиасов: старый гард ловил только ПЕРВОЕ звено (одна точка отказа), новый — все три узла; конверсия из 17-полевого близнеца ловится; негативные контроли чисты. (б) Request-сеам — дыра ОБЩАЯ с предшественником, подтверждено исполнением на реконструкции: var r pipeline.Request+присваивание и new(pipeline.Request) проходят ОБА поколения (контроль чувствительности: hoisted-литерал старый гард ловит) — клейм пасса-1 «не регрессия» оказался верен, но был записан ДО проверки, это второй урок; дыра нигде не задокументирована на Request-стороне (runRequestSeam — один узел CompositeLit, archguard.go:197, против четырёх у Stage) — носитель 121. (в) ⚠ Egress-сеам — РЕГРЕССИЯ против снесённого байт-гарда, две исполнимые формы (посадки пасса-2, обе exit=0 у tmvet): пакетная функция llm.Complete(...) (у qualified identifier Selections[sel] = nil → анализатор молча выходит, archguard.go:240-242; пакет llm исключён целиком) и потребительский интерфейс, прячущий llm-типы ВНУТРИ композита (Complete(ctx, []llm.LLMRequest) ([]*llm.LLMResponse, error)touchesPkg не рекурсивен, archguard.go:79-82). Старый регекс .Complete( ловил ОБЕ формы. Несущий коммент «that is what cannot be hidden» (archguard.go:250-253) и клейм фикстуры ФАЛЬСИФИЦИРОВАНЫ. Сегодня таких форм в дереве нет (латентно), но промт разрешал снос гардов «ТОЛЬКО после доказанного паритета» — по egress-оси паритет неполон ⇒ снос байт-гарда в текущем виде букве промта НЕ соответствует. Развилка владельцу — п.7.

4. Направление и решения (линза пасса-2, мнение сформировано ДО чтения отчёта). Состав линтера обоснован числами и анти-хак-правило соблюдено буквально; аудит исключений по коду: все классы подтверждены для СЕГОДНЯШНЕГО дерева (единственный контрпример фразе «все 33 прод-Close — читатели»: chunktest/epub.go:51, файл на запись в тест-фикстуре; потерю данных не прячет — zip.Writer.Close проверяется). Точностные хвосты → 122: Fprint-исключение на весь модуль вместо cmd/ · w\.Write-исключение ключуется именем receiver-а вопреки собственному принципу конфига · miningstop-исключение глушит текстом весь файл · комменты-обоснования конфига — снимки настоящего времени, ничто не пере-проверяет их посылку · дрейф provenance-чисел (293/31/93 против записанных 294/33/91) · .skips.log не в gitignore · GO_MIN_VERSION без патч-уровня · коммент c1 «echo mine unarmed» противоречит quirks §4 («low ПЕРЕ-ВООРУЖАЕТ эхо-мину», 1/16) — сам флип ратифицирован, вреда нет, коммент поправить. Батарея против «не тормозить»: двойной прогон сьюта ради имён скипов ≈6.4s из 1m25s (~8%) — приемлемо; главный расход — архитектурные инварианты исполняются трижды (vet ×2 тег-сета + archguard-тест 17.7s LoadAllSyntax под -race) — осознанно, резать при росте модуля здесь.

5. Живая проба провода — единственный пункт промта, не закрытый никем; после п.2(б) её предмет сузился до реального: примут ли WAF/фронты провайдеров новую SETTINGS-раскладку и 31 минорку семантики ретраев. Сессия пробу не провела (довод «не было санкции» неверен — потолок $0.50 ратифицирован D39.92 п.2), приёмке запуск заблокирован пермишен-слоем на . ./.env. Линза направления независимо назвала это главным долгом пака: «осторожный, затем полный» требовал осторожную половину именно здесь. Команда владельцу — строка 117. До пробы (или явного слова владельца) транспортный бамп НЕ лендится.

6. Пять mid-flight решений владельца 03.08 — НЕ ратифицированы (пасс-1 ошибочно ратифицировал «с вето-окном» — снято): известны только со слов сессии, владельцу выдан список confirm/deny. (i) CI-воркфлоу не писать (Forgejo 10.0.3, раннер не подтверждён) → жилец 108. (ii) Охват eval/ анализатором снять (замер: три программы, ни одна не строит Stage/Request). (iii) Бамп @latest вместо минимального — НЕСУЩЕЕ: при confirm лендится текущий go.mod (x/net 0.57 + sqlite 1.55 + пере-захват голдена), при deny — минимальный бамп (x/tools@v0.45 → x/net 0.54, x/text НЕ двигается, голден БЕЗ пере-захвата; жизнеспособность доказана ревьюером сессии) и состав bump-коммита другой. (iv) Пере-захват голдена — следствие (iii). (v) Адверсариальное ревью §9 по требованию владельца — информационно.

7. ВЕРДИКТ И РАЗВИЛКА ЭТАПА E. Пак ПРИНЯТ по качеству кода (ядро п.1, репликации п.2, аудиты п.4 — уровень высокий, самопроверка сессии реальная: 18 своих дефектов починены до сдачи). Лендинг ГЕЙЧЕН тремя решениями владельца: (1) проба 117 — или явная санкция лендить до пробы; (2) confirm/deny пяти решений п.6 (несущее — @latest); (3) этап E: рекомендация оркестратора — МИКРО-ДОФИКС бэкенд-сессией ДО лендинга сноса (~30 строк + посадки: requestseam ValueSpec/new-симметрия [п.3б] · egressseam fallback на Uses при nil-Selections [п.3в-1] · рекурсивный touchesPkg [п.3в-2] · честные комменты вместо «cannot be hidden»); альтернатива — лендить как есть с ЗАДОКУМЕНТИРОВАННОЙ регрессией по двум egress-формам и строкой 121 «скоро». План лендинга — семь pathspec-коммитов с само-атрибуцией (рекомендация линзы направления, форензика голдена бесплатна в истории): конфиги 112 → дефект-фиксы §2 (поведенческие, именованные) → механические линт-фиксы → бамп+пины+голден (гейт 117 в сообщении) → анализаторы+снос гардов+README → .golangci.yml+Makefile → док-лендинг. Строки 107/112 закрываются док-коммитом лендинга; носители 117123 и жильцы 108 подготовлены в PROGRESS тем же касанием.

8. УРОК ПРИЁМКИ (слово владельца 03.08, оплачено этой нотой; норма — в промте оркестратора). Пасс-1 попался на шести ловушках: след отчёта (план верификации структурирован его секциями) · связность вместо истинности (два несущих клейма приняты со слов с записью «исполнением») · соглашательство (пять «решений владельца» ратифицированы со слов сессии; оценочные эпитеты в ноте) · догадка фактом («не регрессия» до проверки) · слепой участок одной модели · экономия усилия на неудобном (направление/решения не ревьюились). Пасс-2 (анти-следовые линзы) на тех же токенах нашёл: регрессию egress-паритета, запрещающую снос по букве промта; мисхарактеризацию принятого клейма; двух исполнимых обходов вне карты отчёта. Механика-минимум закреплена нормой в ORCHESTRATOR_SESSION_PROMPT.md (03.08).

D39.97 — ПРИЁМКА дофикса archguard + живой пробы (оркестратор №12): ПРИНЯТ, весь пак стандартов ЗАЛЕНДЕН семью pathspec-коммитами, строки 107/112/117 ЗАКРЫТЫ; решение по tools/go.mod — строить; вопрос владельца о снапшоте разобран (04.08).

Мандат — D39.96 п.7 (дофикс до сноса — выбор владельца) + промт BACKEND_ARCHGUARD_DOFIX. Отчёт: archive/reports/ARCHGUARD_DOFIX_2026-08-03.md (ревью-шапка ПРИНЯТ).

1. Приёмка исполнением (короткая, по пропорциональности; свои посадки — вне карты отчёта). Батарея на реальном дереве EXIT=0 (1m29s, скип один). Деньги вторым путём: usage×цены models.yaml ≡ заявленным по всем трём вызовам и сумме, дельта $0.000000 ($0.005269 ≈ заявленным $0.0053). Свои посадки в свежей копии: значение метода f := c.Complete CAUGHT (клейм таблицы подтверждён независимо) · method expression llm.LLMClient.Complete CAUGHT — формы нет ни в таблице отчёта, ни в списке пропусков (SHAPE-половина берёт её по типам аргументов — гард сильнее собственной документации) · негативный контроль шва чист. Вход приёмки на месте: CONFIRM владельца по @latest записан отчётом (D39.96 п.6-iii закрыт) — проба шла на текущем go.mod.

2. Что принято. Этап 1: шесть дыр закрыто (3 из промта + 3 сверх, включая блокер «вызов через параметр типа» — невидимый ОБОИМ прежним поколениям; ось имени llm.Do; ложное срабатывание var s *config.Stage снято); оба сеама на общем обходчике seamRule; исключения переведены с path-суффиксов на import-path (//line-идентичность отрезана PositionFor(…, false)); 9/9 мутаций ловятся, мутация M7 нашла мёртвую ветку TypeParam в самом фиксе — образец, зачем мутационная проверка обязательна; assertGuardVocabularyIsLive против молчаливого гниения строковых ключей; 38 want-посадок + 8 негативных контролей; ноль диагностик на боевом дереве. Этап 2: проба PASS 3/3 (finish=stop, новых отказов/фреймингов нет); прямой клейм по проводу: reasoning_content 965 симв., reasoning_tokens:234completion:280ReasoningSubset подтверждён на проводе; механика 112 подтверждена телом запроса (reasoning_effort отсутствует на ReasoningNone); h2-ALPN подтверждён на всех трёх эндпоинтах за $0 ⇒ новая SETTINGS-раскладка не отвергнута. Граница честная (три эндпоинта · по вызову · одна сеть) — принята. Семь осознанных пропусков — фикстурами без want (покраснеют в день, когда начнут ловиться) — носитель 121(д). Оговорка сессии о 20/43 умерших ревью-агентах — компенсирована её пере-проверкой и моими посадками. Остаток: инвариант-коммент httpllm.go:77 («zero wire bytes» — верен для полей пинга, неверен для бампа, который их привёз) дофикс не тронул → хвост в 122.

3. ЛЕНДИНГ: весь пак стандартов + дофикс — семь pathspec-коммитов с само-атрибуцией (план D39.96 п.7): e8d4ac0 конфиги 112 · 5a97020 девять поведенческих дефект-фиксов · b155da3 механика линта · cb368c0 бамп+пины+голден (движутся только хеш-поля) · 6356471 анализаторы+снос старых гардов · 5a81bff .golangci.yml+Makefile+README · 0e64efe opt-in лога тел в live-пробе. Фронт-сессия закоммитила своё (ece94ef) ПАРАЛЛЕЛЬНО лендингу — pathspec-дисциплина коллизию исключила by construction. Строки 107, 112, 117 ЗАКРЫТЫ. Оба промта архивированы. Оставшиеся не-несущие mid-flight решения 03.08 (CI-воркфлоу не писать · охват eval/ снят) ратифицированы этой нотой — порог нормы «confirm только для несущих» соблюдён, триггеры реопена в реестре 108.

4. Решение по tools/go.mod (владелец 04.08: «вам решать») — СТРОИТЬ, отдельным малым паком, НЕ гейт ничему. Форма: отдельный модуль (например backend/tools/ со своим go.mod), куда переезжают cmd/tmvet + internal/archguard — ⚠ tool-директива Go 1.24 НЕ решает задачу (тулы в главном go.mod участвуют в MVS так же). Следствия, которые пак обязан удержать: make battery гоняет тесты ОБОИХ модулей (инвариант «падать на обычной батарее» переезжает в Makefile — он и так единственная точка входа); shippingtree_test живёт в tools-модуле и грузит главный. Выигрыш: бамп инструментов ФИЗИЧЕСКИ не может двинуть x/net/x/text главного модуля ⇒ класс «линтер тронул денежную ось» закрывается по построению. Туда же — решение по sqlite: оставить 1.55 (уже заленден, прогонов не было, откат = отдельное движение без выгоды). Строка 118 переформулирована под это решение.

5. Вопрос владельца «не слишком ли агрессивен снапшот, можно ли безопасно ослабить» — разбор. Короткий ответ: механизм НЕ слишком агрессивен — он неточно НАЦЕЛЕН, причём в обе стороны сразу, и лечится калибровкой осей + дешёвой перекупкой, а не ослаблением. Три факта: (а) есть недо-чувствительность (строка 119: SanitizerVersion НЕ сворачивает width.Fold — смена x/text перевернула бы вердикт БЕЗ движения снапшота; это аргумент ПРОТИВ ослабления вслепую); (б) есть пере-чувствительность по охвату: EmbeddedVersion фолдится безусловно по ВСЕМ файлам всех пар (D39.90 п.3) — добавление ja-данных перекупает zh-книги; лечится пер-парным хешом (только файлы своей пары) — заодно шаг к мандату общности (родня 115/120); (в) версия-строка ≠ поведение: бамп x/text доказан поведенчески пустым на 17M+ входов, но снапшот сдвинулся, потому что фолдится СТРОКА версии. Направление фикса (в): не «фолдить меньше», а сделать перекупку дешёвой, когда поведение не менялосьtmctl resnapshot --dry-run, который по чекпойнтам сверяет БАЙТЫ тел (msgsContentHash уже в голдене): байт-идентичные юниты пере-привязываются к новому снапшоту без пере-вызова, платятся только реально изменившиеся; детерминизм цел (каждая пере-привязка аудируема), деньги видимы (канон §5), «тихих перепокупок» не появляется — наоборот, исчезают громкие ПУСТЫЕ перекупки. Опция «фолдить поведенческий отпечаток вместо строки версии» рассмотрена и отложена: probe-корпус = пол, не доказательство; риск тихого изменения поведения хуже цены ложной перекупки. Заведена строка 124 (дизайн-вход: (а)+(б)+(в) одним паком, приоритет — перед МАСШТАБОМ, когда перекупки начнут стоить реальных денег; сегодня боль теоретическая — книг в работе нет).

D39.98 — Ревью и лендинг фронта S2 + дофикса; git-канон v2 (коммитит только оркестратор) разнесён по носителям (04.08).

1. Приёмка S2 (ece94ef) — адверсариальный воркфлоу, 5 линз × независимые скептики с ре-раном (12 агентов), плюс сверка оркестратора глазами по цитируемым строкам. Подтверждено исполнением: npm run check зелёный · виртуализация реальна (3143 DOM-строки на 2293 узлах, live-проба) · три новые зависимости ратифицированы ДО коммита (STACK_DECISIONS при D39.84, fbebe33 — дрифта стека нет) · правки макета владельца соблюдены · 11/11 терминов фикстур сошлись с боевой БД по read-only SQL · noindex стоит · eslint-disable в коде 0. Три подтверждённых дефекта: (а) токен --font-cjk пиновал SC-гарнитуры пар-слепо (tokens.css:66 + безусловное применение к колонке оригинала) — нарушение пина D39.84 «системный стек + lang из данных» и канона общности: ja→ru отрисовал бы кандзи китайскими начертаниями молча, en→ru получил бы CJK-латиницу; generality-тест TSX-only к CSS слеп; (б) org в BankTerm.kind — тип, которого в движке НЕТ (закрытый словарь classify.go:15 + banknote.go:74 = name·place·title·term·nickname), и журнал фронта приписывал migrate.go:176 перечень, которого в файле нет — изобретённое API, поданное как прочитанное; (в) ключ рядов банка term.source ломается на полисемии — движок уникален по (src,sense,since_ch,until_ch), migrate.go:202. Три находки ревьюеров ОПРОВЕРГНУТЫ скептиками и НЕ предъявлены (RunState-Record «уронит апп» — data-router даёт error boundary, триггер недостижим до S3; sync-сим «дефект» — ратифицированный план, S3 гейчен контрактом; претензия к pre-commit-хуку судила по ещё не залендженному правилу).

2. Дофикс фронта принят и заленден 02872b6 (батарея пере-гнана оркестратором: 77/77; лендинг-коммит прошёл их pre-commit-хук живьём). Лечения верные: токен снят ЦЕЛИКОМ — подбор гарнитуры делает браузер по lang из данных пары (чище предложенного :lang(): языковая ветка в CSS — та же пар-специфика); org выпилен из типа и скейл-фикстуры, журнальная строка исправлена с грунтом по реальным гейтам; ключ составной (src·dst·type) с честной пометкой «заплата» и записью недостающих полей в Ф-14. Гейты укреплены: динамический import() закрыт по всем трём швам во всех зонных оверрайдах · тернарник/шаблон-носители литерала в CSS-var-гейте · generality.test.ts получил CSS-половину (:lang() падает тестом) с явно названной границей «значений стилей тест не видит». Мелочь: ранг content_filter=0 (status.go:152), фантомный промах фикстуры r2-2 сделан реальным в тексте, дубль счёта тестов снят. Остаточное (info, зона фронта, не гейт): в main.tsx статический no-restricted-imports выключен целиком (динамо-швы стоят) · scroll-padding вне регексов спейсинг-гейта · клеймы, требующие build/browser (check:full, axe, медианы скролла), приняты «со слов» — в дереве им ничего не противоречит.

3. Git-канон v2 заленден по носителям (решение владельца 04.08, правка CLAUDE.md его рукой): коммитит ТОЛЬКО оркестратор; право самокоммита фронта/платформы (D39.88) ОТОЗВАНО — supersede-запись = этот блок. Носители: CLAUDE.md (таблица зон + гардрейлы) · промты фронта (переписаны фронт-сессией в своей зоне) · platform/README.md · подчистки D-лога/PROGRESS. ⚠ Процедурная нота (D23.3): синхронизация переписала тела D39.84 п.8 и D39.88 НА МЕСТЕ — снято в т.ч. дословное решение владельца 02.08; это против правила «исторические записи не переписываются». История цела в git (2b166b7, pre-rewrite HEAD); авторство подчистки — на подтверждении владельца; впредь supersede — только пометкой в карте + новым блоком.

4. Открыто на владельце (+2 к списку D39.97): confirm/deny двух «решений владельца 04.08» из журнала фронта («+» в левой панели закрывает половину Ф-7 · референсы возвращены на диск) · авторство подчистки D-лога (п.3). В дереве появились нетрекнутые артефакты банк-арбитража (docs/research/24-bank-arbitration.md · eval/bank_arbitration/) — заход строки 5, судя по всему, пере-исполнен; НЕ залендены, ждут отдельной приёмки. (04.08.2026, оркестратор №12).

D39.101 — ЗАКРЫТИЕ СЕССИИ №12 И ПЕРЕДАЧА №13: доки актуализированы и подрезаны, банк-промт заархивирован; первая задача №13 — приёмка банк-арбитража (04.08).

1. Итог №12 одной строкой: пак стандартов + дофикс archguard приняты и залендены (D39.96/97) · фронт S2 + дофикс (D39.98) · контракт API v0 в форме OpenAPI, строка 95 закрыта (D39.99) · решения владельца + платформа открыта промтом P0 (D39.100); 16 лендинг-коммитов (e8d4ac00e64efe — 7, бэкенд; 8-й в диапазоне ece94ef — коммит самой фронт-сессии по старому канону · 02872b694a24b7 — 9, фронт/контракт/платформа/доки); методологический урок сессии — анти-паттерны приёмки (владелец 03.08) — вписан в промт оркестратора и отработан: три контрактных пасса дали 19/19 подтверждённых находок при нуле опровергнутых.

2. Актуализация закрытия: CURRENT-STATE сжат (4 сессионных буллета → передача + сводка; «Курс» → дайджест с указателями — числа закрытых паков живут в D-логе, дублирование снято) · BANK_ARBITRATION_RESEARCH_SESSION_PROMPT.md исполнен и заархивирован с баннером (archive/prompts/) · README: карта (контракт 14, платформа с промтом и журналом), активные промты (бэкендного НЕТ; фронт S3 — замок открыт; платформа P0), стейл-хвост о прерванном заходе банка снят · ПТ-реестр актуализирован (D39.100 п.4). Хроника PROGRESS НЕ слайсилась — резать эру D39.59+ рано, она живая. Счёт очереди пере-снят с ЯВНЫМИ определениями (строго = ячейка ровно «бэкенд» → 54; широко = содержит «бэкенд» → 67); прежние 58/66 в D39.99 считались префикс-матчем — историческая нота не переписывается, определения отныне в строке счёта.

3. Очередь №13 (по слову владельца): (i) приёмка банк-арбитража — артефакты в дереве не залендены (research/24 · eval/bank_arbitration/ · черновик в archive/reports/; итог $0.1073, ⚠ арифметика пинга внутренне бита — сверить; потолок ратифицирован $1.20 против $1.00 в пинге; при лендинге поправить путь промта в шапке research/24); норма — адверсариальная приёмка, экспериментальные клеймы с репликацией (хотя бы редуцированной), лендинг одним атомарным заходом отчёт+харнесс+пинг с ревью-шапкой; (ii) бэкенд-доработки по бэклогу: выдать промт пака экрана 46 (дизайн заморожен D39.92 п.1+D39.93; фикстура 113 ПЕРВОЙ; денежный шаг ТОЛЬКО с подписью) · малый пак tools/go.mod (D39.97 п.4) · блокеры контракта 99/100/101/103/125 — промтом(ами) по готовности; (iii) вахта deepseek-v4-pro (триггер >05.08 НАСТУПАЕТ; реестр 108); (iv) приёмка P0 — сессия успела ОТРАБОТАТЬ в ходе закрытия №12: отчёт и дизайн-ответы К-4/К-7/К-12/П-5 (предложениями, ратификация — оркестратор) в platform/docs/platform-PROGRESS.md; клеймы журнала («make check зелёный», healthz против живого Postgres 18.4) — СО СЛОВ, перепроверить исполнением; дерево platform/* целиком, включая модифицированный go.mod, не заленжено — не трогать до приёмки; свип трёх открытых вопросов (один — владельцу: авто-резюме после сброса лимитов) · лендинг S3 при её запуске (свип зонных журналов на «решения владельца» — норма D39.99 п.4).

4. Грабли преемнику (проверено на себе): пермишен-классифаер блокирует сорсинг .env — живые пробы промтом бэкенд-сессии или !-командой владельца · счёт очереди ТОЛЬКО скриптом по таблице (ручной список «скоро» недосчитывает жирные веса) · cwd в Bash-вызовах липнет между командами — пути абсолютные или с cd в начале · чужое незакоммиченное в дереве (артефакты арбитража) не трогать и не «прибирать» · голову D-лога и шапку PROGRESS сверять грепом перед закрытием (отставание головы — известный класс дефекта).

5. ДОБОР (тот же день): владелец поймал «актуализацию» на частичности — исполнен ПОЛНЫЙ док-свип (6 сканеров по кластерам, 89 находок: 17 operative-wrong · 42 stale-pointer · 2 архив-кандидата · 28 nice-to-have; 11 файлов чисты). Применено ~60 правок по 15 файлам: CLAUDE.md (координация зонных журналов · контракт в источниках · онбординг платформы) · глоссарий +7 терминов (Платформа · S/P-нумерация · зонные журналы · контракт 14 · провенанс · ПТ-N · paused) · PROGRESS (два ПОТЕРЯННЫХ хроникальных заголовка D39.97/98 восстановлены — мои же правки их съели; пять 95-указателей → контракт 14; штампы; амендмент-маркеры «короткой приёмки»; разрыв таблицы склеен) · голова D-лога: два supersede-указателя (D39.88 · норма 30.07) · 09-target (стейл isRuTarget → D39.64; баннер пост-D39.101; ссылка на архив) · 10-prompt (пар-пути; язык промпта = Р6 отрицателен; Q4a/Q4c измерены; снапшот-фолд построен) · 13-tech-debt (9 закрытий стрелками «→ Dxx») · полигон-промт (P4-хвост ЗАКРЫТ ×2 · пре-рег-исключение · указатели) · ПТ-реестр (6 + квалификация STACK-путей) · ревью-шапки research/16 и /23 (контракт ратифицирован) · фронт-промты (S3: замок открыт, строка 95 снята; стоящий: 5 датированных поправок D39.99/100) · S2-промт заархивирован (archive/prompts/FRONTEND_S2_SESSION_PROMPT.md). Отложено до приёмки P0 (зона живая): 2 правки platform/README.md (стейл «промта ещё нет»; «живая стоимость» против D39.84) и архивация P0-промта — №13 при лендинге платформы. Урок — в памяти оркестратора (doc-actualization-means-full-sweep). (04.08.2026, оркестратор №12).

D39.103 — РЕШЕНИЯ ВЛАДЕЛЬЦА 04.08 (приёмка №13): фикс-пак 128 санкционирован, проба редакторского провода санкционирована, фронтир-«go» дан, алиасы отложены; ДВА ПРОМТА ВЫДАНЫ (04.08).

1. Фикс-пак банка (строка 128) САНКЦИОНИРОВАН — гейт вопроса №4 D39.102 п.4 снят. Промт docs/BACKEND_BANK_CLUSTER_FIXPACK_SESSION_PROMPT.md ($0-пак; холодный аудит перед выдачей: 34 опоры подтверждены, 8 дефектов вправлено). Эффект верифицируется следующим холодным прогоном — план верификации обязателен в отчёте пака.

2. Проба редакторского провода САНКЦИОНИРОВАНА — промт docs/POLYGON_EDITOR_WIRE_PROBE_SESSION_PROMPT.md (≤$0.30; аудит перед выдачей: 17 опор, 9 дефектов вправлено). Армы: изолированный контроль без блока (его не было никогда) · закон · цена неверного закона · метаязыковое окно (оговорка области + leakage) · посаженные дефекты черновика «исправлено X из Y» + межоконная консистентность. Уточнение к экспам: rerun2/мини-прогон гоняли edit-волну с ЖИВЫМ канон-блоком; не было изолированного контроля и двухсекционки в платной волне.

3. Фронтир-пасс: «go» ДАН (data-sharing на ключе OpenAI отключён — слово владельца; ≤$0.50). Кандидаты: deepseek-v4-pro + свежие OpenAI, названные владельцем как «терра»/«луна» — слаги/цены ТОЛЬКО live-фактчеком, цены в отчёт и пинг.

4. Мини-голд алиасов (§E-1): ОТЛОЖЕН до первого длинного прогона (на 10-глав стенде фарм тощий) — вопрос (i) D39.102 п.4 закрыт.

5. Находка диалога: противоречие инструкций редактора — editor.md:7 «СТРОГО по приведённому глоссарию» против editor_unverified_header «вправе перевести иначе». Снято доктриной D39.104.

D39.105 — ЗАКРЫТИЕ СЕССИИ ОРКЕСТРАТОРА №13 И ПЕРЕДАЧА №14: приёмка банка исполнена, доктрина инжекта ратифицирована, два промта выданы, полный док-свип (04.08).

1. Итог №13: приёмка research/24 — ПРИНЯТ, все числа чисты пере-раном тремя контурами (D39.102, 271f8b0) · решения владельца: фикс-пак 128 и проба редакторского провода санкционированы, промты выданы с двойным аудитом (факты file:line + понятность холодным исполнителем), фронтир-«go» дан, алиасы §E-1 отложены (D39.103) · доктрина инжекта ратифицирована (D39.104) · строки 128132/134 заведены, строка 5 пере-скоуплена. Лендинги: 271f8b0 · d653aa1 · закрывающий.

2. Док-свип закрытия (норма «актуализация = полный свип»): 5 сканеров по кластерам (корень · PROGRESS · architecture · research · experiments), ~40 находок применено: передача №13→№14 и счёт очереди скриптом (109 строк · бэкенд 60 строго / 72 широко · «скоро» 24) · supersede-указатель доктрины D39.104 в шапку этого файла и баннеры 09-target/10-prompt/06-registry/12-style/research 15·20·24/experiments README·09-pilot · глоссарий +«доктрина инжекта» · норма «без саги» вписана в промт оркестратора · хроника №9/№10 и закрытые бэкенд-записи срезаны в archive/PROGRESS-2026-08-01-02.md (PROGRESS ~356 → ~230 строк). Отложено до приёмки/лендинга P0 (зона живая, №14): 2 правки platform/README.md · правка «кода нет» в 14-api-contract/README · архивация P0-промта.

3. Очередь №14 — CURRENT-STATE (первым — приёмка P0 платформы). Грабли преемнику: перед запуском любого полигон-скрипта читать код на сетевые вызовы (--score/score_f1 офлайн; голые запуски ПЛАТНЫЕ; load_dotenv на импорте — стабить при офлайн-ре-ранах) · перед пере-ранами — sha256-манифест сырья и бэкап харнесса (gold.jsonl пере-собирается байт-в-байт, детерминизм подтверждён) · пинг полигона может врать арифметикой при чистом леджере — сверять из сырья · счёт очереди ТОЛЬКО скриптом · git — только pathspec-форма · чужое незакоммиченное (platform/*) не трогать.