From b0cf84f4b009e01ac32eab08bc4e046dc6d181fa Mon Sep 17 00:00:00 2001 From: "Claude (backend session)" Date: Sun, 2 Aug 2026 20:47:31 +0300 Subject: [PATCH] Close orchestrator eleven: pack accepted and landed, standards prompt handed to backend, screen pack design frozen for successor, four owner questions left open --- docs/PROGRESS.md | 8 ++++++-- docs/architecture/05-decisions-log.md | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 69dd7216..e15f0e8a 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,7 +1,7 @@ # Журнал прогресса -> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-02, голова D39.93). -> - ✅ **ПРИЁМКА бэкенд-пака строк 104/46/16 ИСПОЛНЕНА (оркестратор №11, D39.91): пак ПРИНЯТ, код заленден `553f1a3` (13 файлов backend/, pathspec-форма), строка 104 ЗАКРЫТА.** Батарея пере-прогнана — 5/5 фрозен-чисел совпали; деньги пере-выведены вторым путём ($0.045095 ≡ usage×цены ≡ Σ `request_log`, дельта $0.000000); пять НЕЗАВИСИМЫХ посадок в гарды — все CAUGHT; N=5 сверен с сырьём. **Обе девиации пака РАТИФИЦИРОВАНЫ** (repair-ключ свой · `ThinksOnWire`). Поправки приёмки (метка «$0.031639 (flash)» = на деле flash+pro · хеш-клейм принят по эквивалентности · стейл-доккоммент `capability.go:78`) — в D39.91 и ревью-шапке отчёта; отложки Д4–Д9 получили носителей: НОВЫЕ строки **114** (Д4+доккоммент) · **115** (Д6 go:embed-общность) · **116** (Д8 порог 6/6) · реестр 108 (+Д5/Д9) · строка 107 (+Д7). **Решения владельца 02.08 вечер (D39.92):** 46 — пере-поставлена closed-set («вернуло не тот язык»), форма (а)+изолированный модуль, порядок §5.4 в силе, ⚠ денежный шаг 6 всё ещё под отдельную подпись · 107 — САНКЦИЯ целиком (CI+линтер+бампы, «стандарты не должны толкать к хакам»), промт выдан: `BACKEND_REPO_STANDARDS_SESSION_PROMPT.md` · 112 — САНКЦИЯ, исполнение = этап 0 того же промта. **ОТКРЫТО НА ВЛАДЕЛЬЦЕ:** 116 (порог: рекомендация «≥4/5 при N=5» подана) · строка 5 (вытащить ли находки прерванного банк-ресёрча из истории той сессии, иначе пере-запуск по подрезанному скоупу $1.20) · подпись на шаг 6 строки 46 (бамп `classifierVersion`, когда дойдём). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md`; этот файл — ЖУРНАЛ.** +> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-02, голова D39.94). +> - ⚠⚠ **ПЕРЕДАЧА ОТ ОРКЕСТРАТОРА №11 → №12 (D39.94, 02.08).** Пак 104 ПРИНЯТ и заленден `553f1a3` (строка 104 закрыта, D39.91); решения владельца ратифицированы (D39.92–93). **Задачи преемника:** (1) приёмка пака по `BACKEND_REPO_STANDARDS_SESSION_PROMPT.md`, когда бэкенд отработает (образец — D39.91; этап 0 промта = пять шиппинг-конфигов на `low`, санкция есть); (2) выдать промт пака экрана 46 — порядок и ограничения в D39.94 п.3 (фикстура 113 первой; денежный шаг ТОЛЬКО с подписью владельца). **ОТКРЫТО НА ВЛАДЕЛЬЦЕ (ответа нет):** 116 (порог «≥4/5 при N=5» подан) · строка 5 (находки прерванного банк-ресёрча или пере-запуск; промт подрезать до $1.20 ПЕРЕД выдачей) · мини-проба 44 «low+16k» (~$0.05) · подпись денежного шага 46. **Вахта:** маппинг эффорта `deepseek-v4-pro` меняется «early August 2026» (реестр 108, триггер >05.08). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md`; этот файл — ЖУРНАЛ.** > - **Сделано (сводно; детали — D-лог и архив-слайсы):** Ф0 ✅ · Ф1-инфра ✅ · арх-ресет D39 (7 слоёв, паки 11–16) ✅ · паки 17 «канал B» · 18 «долги» · 19 «голос/состояние» · 20 «банк+терминолог» ✅ (D39.26–28/31/41–56) · мини-прогон (D39.37) и ХОЛОДНЫЙ прогон (D39.58: recall банка 0.918/0.980, банк приходит переведённым) приняты · полигон-пакеты 5–8, ToS-речек (D39.57), Р6+P4 (D39.61) закрыты · **карта языковой привязки движка (D39.60): 149 сайтов/45 файлов, книго-ось чиста (4), ja→ru безопасно без правки Go, en→ru — нет** · Р1–Р4 закрыты целиком (D39.63: Р2 = ЗНАЧЕНИЕ, Р4 = норма потолка recall) · **ФАЗА 2 ОБЩНОСТИ ✅ (D39.64: П0 эмбед-хеш · П1 цель-шов · П2 скрипт-шов, ko-баг закрыт · П3 нарезка · П4 манифест-по-каналам; голден вердикт-нейтрален 0/172, майнер-парити EXACT)** · жанровый словарь отменён как класс (D39.47) · петля ремонта построена и НЕ включена (D39.38). > - **Курс (D39.59–78): ОБЩНОСТЬ ✅ → КАЧЕСТВО БАНКА ✅ (D39.69/75/77) → ПАКЕТ-ЧЕКЕРОВ ✅ (D39.78: строка 25 целиком; харнесс labels В GIT 12/12; K2 r0.85 · K4b r0.22 · K6 fp 14→6; Р2 hard/soft + Р4-потолки в контрактах).** **Текущее: МЕЛКАЯ ПАЧКА ✅ ПРИНЯТА И ЗАЛЕНДЕНА (D39.82: строки 89/53/83 закрыты · 93 сужена до остатков · F4-бэкап+pre-flight построен · register/жанр → книжный слой · DC7 пере-гейчен сид-покрытием → строка 98); решения §6 исполнены (D39.79/82); **РЕ-ПРОБА + ОТЛАДОЧНЫЙ ХОЛОДНЫЙ ПРОГОН coldrun-b САНКЦИОНИРОВАНЫ (D39.83: промт выдан и холодно аудирован — 3 major вправлены; потолки $0.15 ре-проба / $5 прогон; ступени 2+8 глав, автобанк по D39.77)**; ре-проба flash (строка 74) — по слову владельца; finding-1 ЗАКРЫТ (D39.77); онбординг-оверхол доков исполнен (D39.80); **ФРОНТ ОТКРЫТ владельцем (D39.81: продукт = SaaS; зоны `frontend/` + `platform/` живые, фронт работает на моках; движковая очередь НЕ пере-упорядочена — ранняя вставка одна: строка 95 «контракт API» $0; строки 96/97 и перевесы 49/94 заведены)**; **СТЕК ФРОНТА/ПЛАТФОРМЫ ЗАПИНЕН, 8 решений владельца ратифицированы (D39.84: SEO Google-only · PWA-первый · денег в MVP-UI нет · стоп-на-банке = параметр запуска, `--verify-bank` готов · перевод НИКОГДА на индексируемый URL = ПТ-34 · якорь чтения = edit-unit, ПТ-21; работы движка под фронт = строки 99–102; фронт/платформа ведут ЗОННЫЕ бэклоги — `frontend/docs/BACKLOG.md` · `platform/BACKLOG.md`, строки 96/97 → П-1/П-2; зоны залендены, фронт-промт S0–S7 в `frontend/docs/`)**; **ШОВ ДВИЖОК↔ПЛАТФОРМА РАТИФИЦИРОВАН ПО РЕСЁРЧУ (D39.85, `research/23`): NDJSON-поток событий → материализация в Postgres → SSE; артефакты границ стадий; анти-паттерны запрещены (живой SQLite не читать · HTTP в движок не тащить · read-пакет из ядра не выносить); строка 103 заведена, входы контракта 95 зафиксированы)**.** **coldrun-b ПРИНЯТ И ЗАЛЕНДЕН (D39.86): фазы A/B исполнены за $0.114378 из $0.15, фаза C заморожена чекпойнтом — легитимный исход по D39.83.** Блокер 0731 воспроизведён на боевой форме (0 из 9 пригодных при `max_tokens=8496`); **вариант (а) флор-16000 ФАЛЬСИФИЦИРОВАН** (4/5 пустых при 16992, добавка уходит в размышление); **(б) `reasoning_effort:"low"` оживляет волну, но требует правки Go** (у бэнк-ролей ручки нет — НОВАЯ строка 104; посылка об амендменте гейта неверна только для СТАДИЙНОЙ ручки); **(в′) thinking OFF замерен карантинно — эхо-мина ЖИВА на весах 0731 (4/20)**, флаг `echoes_when_thinking_off` сохраняет основание; **(г) pro ≈×8.9, а не ×3.1**, и на pro ручка эффорта не работает (вендор `low→high`, смена маппинга объявлена «early August 2026»). Порог классификатора **6/6 взят**; две дыры наблюдаемости закрыты; live-риг не собирался с D39.64 — починен. НОВЫЕ строки **104** (ручки синтетических стадий) и **105** (мис-вердикт классификатора + честность поверхностей); **46** повышена до «скоро» с живым носителем; **16 НЕ закрыта**. ✅ **РАЗВИЛКА 74 РЕШЕНА ВЛАДЕЛЬЦЕМ (D39.87): вариант (б)** — `reasoning_effort: "low"` черновику ПЛЮС правка Go, дающая ручку эффорта ролям, у которых её нет (строка 104), ПЛЮС экран целевого языка (строка 46). Мандат владельца на исполнение — «элегантно встроить в текущее решение по коду, чтоб было чисто»: правка обязана быть использованием СУЩЕСТВУЮЩЕГО поля `Stage.Reasoning`, одним швом на все три рукописные `config.Stage`, так чтобы четвёртое такое место не могло появиться молча. **Промт выдан** — `BACKEND_EFFORT_HANDLE_SESSION_PROMPT.md` (работы A/B $0 + проба банка ≤$0.10 + добивка прогона ≤$5, закрывающая строку 16 и впервые дающая данные по осям голоса для 13б). Перекупок нет (D39.63). > - **Горизонт (D39.62/67):** ре-проба flash (74; + платный порог 6/6 классификатора + пробы 36б-замера Q2/эмиссии Q7 по слову) → **ДОБОР ИДЕАЛА** (первым прогоном: оси голоса 24 · авто-режим · итерация №2 редакторов 65 · цена 16 · веса K1–K12 13а · вне-претрейн чекпоинт 55) → ВТОРАЯ ПАРА живьём (ja→ru; преп 81) → МАСШТАБ → пилот Ф2.5 (гейт резюме-строки 80; строки 62–68, 85) → Ф3 ридер-IDE (69–71). **Стоячие:** ToS-триггер 25.10 · Ш-2 до go1.27 · строка 74 перед любым платным прогоном. @@ -122,6 +122,10 @@ | 109 | **Продуктовые требования БЕЗ строки-носителя (сверка 02.08):** **ПТ-6** структурные традиции целевого языка (короткие zh-абзацы → читаемые ru-структуры) — держится только редакторскими мандатами в пар-промптах, поверхности измерения нет, в составе Ф2-гейтов (52) структуры абзацев нет · **ПТ-7** «слабый оригинал: подправлять художественно или быть верным» — вопрос владельца, не заведён даже в блоке «висит на владельце»; после ответа: режим параметром запуска (данные, не ветка Go) + мандат в промпте + гейт «улучшение vs отсебятина» · **ПТ-22** продуктовый ИНТЕЙК настроек (сегодня = рукописный `book.yaml`; частично покрыт 67 в части «версия исходника») · **ПТ-10** сам механизм веб-фетча (tool-calling, провенанс/кэш добытого, инжект под правилом «книга = недоверенные данные») — есть только гейт безопасности 70. Гигиена реестра тем же касанием: ПТ-24 не проставлена 101, ПТ-1/ПТ-11 не проставлена 105, ПТ-2 не проставлены 46 и 34а | оркестратор/владелец | скоро ($0 — расписать носители) | завести строки/вопросы → диспозиции | D39.90, product-requirements | | 110 | **Детектор повторов лемм / защита авторских рефренов** (`04-unhappy-paths.md:97,130 п.5`): $0-минимум исполнен промптом (editor.md, пакет-чекеров 02.08), механизм явно не строился — «нет размеченного класса; связка с alignment/Bertalign». Строки-носителя не было; предмет живой, потому что отличить дефектный повтор от авторского рефрена без выравнивания нельзя | бэкенд/полигон | когда-нибудь (с корпусом пилота, строка 85) | размеченный класс → решение | 04-unhappy §5, D39.90 | | 111 | **Дубль ключа пар-файла: фикс накрыл половину.** D39.82 закрыл строку 53 через `putUniqueDC` в `parseDCCheckers`, но генерик-парсер категорий `parseCategoryRows` (`internal/lang/langpack.go:806-826`, строка `cats[f[0]][f[1]] = val`) по-прежнему МОЛЧА last-wins — а якорь техдолга указывал именно на него. Пар-данные с опечаткой-дублем тихо теряют первую строку | бэкенд | когда-нибудь (малое касание, с любой правкой langpack) | fail-loud + тест | 13-tech-debt-anchors, D39.82, D39.90 | +## Оркестратор №11 — ЗАКРЫТИЕ СЕССИИ И ПЕРЕДАЧА №12 (D39.94), 02.08 + +Итог сессии: приёмка пака ручки эффорта исполнением — принят, заленден `553f1a3`, строка 104 закрыта (D39.91); решения владельца ратифицированы: 46 → closed-set «не тот язык» изолированным пакетом с именованными причинами (D39.92 п.1 + D39.93), 107 → санкция целиком, промт `BACKEND_REPO_STANDARDS_SESSION_PROMPT.md` выдан, 112 → санкция (этап 0 промта); вендор-сверка DeepSeek: 0731 не деградация, а смена политики дефолта thinking=high; вахта на смену маппинга v4-pro (реестр 108). Преемнику: приёмка пака стандартов + выдача промта экрана 46. На владельце: 116 · строка 5 · мини-проба 44 · подпись шага 6 по 46. Очередь: 97 строк · «скоро» 15 · блокеров 0. + ## Оркестратор №11 — РЕШЕНИЯ ВЛАДЕЛЬЦА ПО 46/107/112 РАТИФИЦИРОВАНЫ, ПРОМТ СТАНДАРТОВ ВЫДАН, ВЕНДОР-СВЕРКА DEEPSEEK (D39.92), 02.08 Владелец: 46 — пере-постановка closed-set («вернуло не тот язык, что просили», LID только запасной флаггер, проверку изолировать) — ресёрч бэкендеров ЗАПИСАН (§5.1–5.3 отчёта EFFORT_HANDLE) и отвечает постановке; два расхождения замером (гарантия FPR≤0.1% не покупается на n=114 — порог константой-контрактом; L2/L4 отвергнуты числами этой книги, реопен через реестр 108), слой-0 (полоса длин) — добавить замером на фикстуре 113. 107 — САНКЦИЯ целиком: CI+линтер+бамп x/net и библиотек, «осторожно, затем полностью», анти-хак-правило; выдан `BACKEND_REPO_STANDARDS_SESSION_PROMPT.md` (этап 0 = строка 112 · A замер · B состав · C Makefile/CI · D бамп с живой пробой ≤$0.50 · E гарды→analyzer, паритет 12 посадок, Д7). 112 — САНКЦИЯ (перекупка принята). Вендор-сверка по правилу 10.07: 0731 = офиц. релиз flash, бенчи вверх — «модель хуже» интернет НЕ подтверждает, наш отказ = смена ПОЛИТИКИ ДЕФОЛТА thinking=high на плотном хане; ⚠ анонс смены маппинга эффорта v4-pro «early August 2026» — вахта в реестре 108. Миграция черновика — замер по слову владельца, не решение. Открыто на владельце: 116 (рекомендация «≥4/5 при N=5» подана) · строка 5 (вытащить находки прерванного захода или пере-запуск $1.20) · подпись шага 6 по 46. diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index 577cf32e..bd71aac9 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1370,3 +1370,17 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу ## D39.93 — Дизайн-ввод владельца по строке 46 (02.08, ночь): проверки выхода — ИЗОЛИРОВАННЫМ модулем с ИМЕНОВАННЫМИ причинами; деталь «переиспользовать FlagCJKArtifact» СНЯТА в пользу именованного флага. ✅ Слово владельца: «какая разница почему пришёл отказ — бэкенду надо ПРИЧИНУ назвать (эхо · не тот язык · вообще не ответила); я выступаю за степень изолированности кода» + классический вопрос «сколько стоит добавить пару». Следствия, вносимые в дизайн пака экрана ДО его выдачи: (1) детекторы выхода живут отдельным пакетом чистых функций (вход: текст + дата-план цели; выход: именованный вердикт + счёт), движок только вызывает и маппит в диспозицию; (2) **деталь §3.6 отчёта «переиспользовать `FlagCJKArtifact` для нового экрана» СНЯТА** — она экономила правку `escalatable()`, но ВРЁТ о причине (off-target-язык лёг бы в телеметрию как «артефакт исходной письменности»); правильно: новый именованный флаг + явное включение в белый список `escalatable()` (диспозиция та же: эскалируем, не ретраим); (3) пары: сам экран пар-слепой (скрипт-набор цели из `data/lang-script.txt`), новая пара = строка данных; известные ограничения — 115 (явный embed-список: новая ЦЕЛЬ сегодня требует правки Go) и семантика ПОДМНОЖЕСТВ письменностей для ja/ko (чисто китайский выход для →ja набирает 1.000 — решается в данных набором скриптов, не в Go). Попутно: предложение владельца по DeepSeek «поднять токены размышления при low» = ровно открытый замер строки 44 (вариация флора при `low` не проводилась; при `high` фальсифицировано D39.86) — мини-проба ждёт его санкции. + +## 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); фронт-сессия ЖИВАЯ и коммитит сама (D39.88, только pathspec); дерево на закрытии чисто от бэкенд/докс-зон, незакоммиченное в дереве — фронта и `START_PROMT.MD`. + +**6. Очередь скриптом:** 97 строк · «скоро» 15 (2·4·5·18·46·49·55·95·107·108·109·112·113·114·116) · блокеров 0.