From cdf7bdd8f713086112e0dcb459574bd5656f2d14 Mon Sep 17 00:00:00 2001 From: "Claude (backend session)" Date: Fri, 24 Jul 2026 01:14:45 +0300 Subject: [PATCH] Ratify D39.21 owner style decisions and issue the pack-13 release-QA backend prompt: seven defect-class mechanisms accepted against the live rerun2 defect corpus --- docs/BACKEND_PACK13_QA_SESSION_PROMPT.md | 27 ++++++++++++++++++++++++ docs/PROGRESS.md | 4 ++++ docs/README.md | 2 +- docs/architecture/05-decisions-log.md | 6 ++++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 docs/BACKEND_PACK13_QA_SESSION_PROMPT.md diff --git a/docs/BACKEND_PACK13_QA_SESSION_PROMPT.md b/docs/BACKEND_PACK13_QA_SESSION_PROMPT.md new file mode 100644 index 00000000..7f72b745 --- /dev/null +++ b/docs/BACKEND_PACK13_QA_SESSION_PROMPT.md @@ -0,0 +1,27 @@ +# Промт бэкенд-сессии: ПАК-13 «выпускной QA» (дефект-классы D39.20 → механизмы) + +**Статус: ВЫДАН 23.07.2026, оркестратор №7.** Источник скоупа — D39.20/D39.21 (`05-decisions-log.md`) + `rerun2/RERUN_REPORT.md` + два слепых ревью (дефект-классы). **Пак — WIRE-ДВИГАЮЩИЙ** (заголовки, юнит-политика, стайл-строки промпта): golden пере-капчерится структурно, итерация №2 пойдёт со свежим `--resnapshot` (драфт копеечный, $0.011). Координация: пак-12 (wire-нейтральный) лендится ПЕРВЫМ; зоны почти не пересекаются (12 = `internal/llm/`, 13 = чанкер/санитайзер/чекеры/рендер) — можно одной сессией подряд, 12 → 13. + +## Онбординг + +`CLAUDE.md` → CURRENT-STATE `PROGRESS.md` → `05-decisions-log.md` D39.20–D39.21 → `rerun2/RERUN_REPORT.md` §6 + блайнд-ревью-дефекты (в D39.20) → `internal/pipeline/{chunker,sanitizer,checkers_zh_ru,cheapgates,render,memory}.go` + `internal/lang/`+`configs/langpacks/`. + +**Живой дефект-корпус для приёмки:** `rerun2/export-{glm,mistral,dspro}.txt` (ВНЕ git, читать можно) — все известные дефекты там: `again` · «лять» · «войть» · «Вперди» · «глава клан» · огрызки « :» · «три часа» (三个时辰) · «тысячи» (千万) · «6,6» (六成六). + +## Скоуп (7 пунктов) + +1. **mined_delta-крэш фикс** (девиация №1 rerun2): терм дельты, уже существующий в сиде (`UNIQUE(book_id,src,sense,since_ch,until_ch)`, `store/migrate.go:202`) → сейчас плоский INSERT крэшит прогон. Фикс: валидация при загрузке дельты — пересечение с сидом → ГРОМКАЯ ошибка со списком дубликатов и подсказкой («правьте сид / уберите из дельты»); никакого тихого merge поверх подписанного сида. Тест на оба пути. +2. **Заголовок-политика**: структурные маркеры глав/разделов (第N节/第N章 — данные в langpack, НЕ хардкод, §0.1) детектятся чанкером и рендерятся ДЕТЕРМИНИРОВАННО шаблоном («Глава N») — модели заголовок не доверяем; санитайзер/CJK-strip НЕ должен съедать заголовки (dspro-арм потерял 第一/四/五节); огрызки « :» устранить. Приёмка: на rerun2-срезе все 5+5 заголовков рендерятся единообразно. +3. **Юнит-конверсия (D39.21-меры)**: политика «привычные единицы target-языка» — zh→ru: 时辰=2 часа, 半个时辰=час. Механика: (а) строка в драфт-промпт/глоссарий (wire), (б) детерминированный чекер: 时辰+число в исходнике ↔ часы в выводе, конверсия ×2 не сошлась → флаг. Данные единиц — в langpack. +4. **Число-масштабы**: расширить число-дрейф-чекер: разряды 千万/数十万/亿 (маппинг масштабов, не только литеральные числа) + 成-проценты (六成六=66%). Приёмка: ловит «тысячи»↔千万 и «6,6»↔66% из rerun2. +5. **Broken-word / latin-residue чекеры**: (а) латинские остатки в ru-выводе (`again`) — дешёвый детектор с allowlist (аббревиатуры/цифры); (б) сломанные словоформы («лять», «войть», «Вперди», «глава клан» [сущ.+сущ. без согласования — детектор по паре голых номинативов?]) — сессия исследует ДЕШЁВЫЙ детектор без тяжёлых зависимостей (никакого hunspell/pymorphy — дефолт-B D39.12); честно доложить достижимый recall. Приёмка: все перечисленные живые дефекты rerun2 ловятся, 0 FP на чистых главах экспортов. +6. **Аудит полноты банк-инъекции (директива владельца D39.21)**: трассировать, какие поля банка (gender/decl/тип/алиасы/sense) РЕАЛЬНО доходят до драфт- и edit-wire, а какие теряются (`memory.go` renderGlossaryBlock/editorConstraintHeader-путь). Отчёт-таблица «поле → драфт-wire? edit-wire? где теряется (file:line)» + фикс ОЧЕВИДНЫХ дыр (gender-аннотация именных терминов — род «гу Надежды»/«цикады» должен доезжать); спорное — НЕ чинить, в отчёт оркестратору. +7. **Стайл-канон в промпт (D39.21)**: строки стайл-гайда в драфт/edit-промпт (пер-пара, langpack/промпт-пак): generic «гу» — средний род · стихи/названия классики — переводом смысла · 资质=«талант» (в чекер-словарь: «ресурсы» при 资质 в исходнике → флаг). Формулировки — данными пары, не кодом. + +## НЕ делать + +Род-enforce реплик (промпт/банк-рычаг, не чекер) · hunspell/pymorphy-зависимости · рефакторинг чанкера сверх заголовков · GLM overflow-гард (ждёт вендора) · сид-правки (元-корень/春秋蝉 — решения владельца, оркестратор внесёт отдельно). + +## Приёмка (ревью ИСПОЛНЕНИЕМ, мандат 12.07) + +`go build/vet/test -race` зелёные · **майнер-парити EXACT неизменен** · golden: пере-капчер ОЖИДАЕТСЯ (wire-двигающий пак) — классифицировать диф (какие изменения от чего; wire-нейтральные пункты 1/4/5/6-аудит НЕ должны двигать wire) · **дефект-корпус rerun2: каждый известный дефект пойман, 0 FP на чистом** (таблица в отчёт) · самопроверка + адверсариальный селф-ревью (3 линзы: детерминизм/langpack-общность/FP-цена). Отчёт — `docs/archive/reports/PACK13_QA_REPORT_<дата>.md`, с file:line. Сессия НЕ коммитит — лендит оркестратор. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index ade9aba6..0ed2b6a6 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -9,6 +9,10 @@ > - **Ждём от владельца:** тачпойнты exp16 (карта подписи/пол · мини-голд алиасов · precision@30, `books/gu-zhenren/exp16/`, ~30–40 мин — для сид-дельты к пере-прогону) · развилки плана §10 (W1.5-UX · DC5-стих-политика · Edit-ceiling · и др.) · реплика ja→ru (тест общности §B5) · **ре-чек прайса DeepSeek у катовера слагов 24.07** (до него платных deepseek-прогонов нет) · чтение пере-прогона (после R1+resnapshot) · старые висящие: планка запуска (лучше-фана/гибрид/издательский) · билингв-якорь пилота (D25.9-Q1) · контаминация пилот-корпуса (D27.4) · publishable/waiver (D25.1) · FN-bound L3 (D25.4) · юр-пакет · провенанс 12-*-доков. > - Архивы хроники: `archive/PROGRESS-2026-07-04-10.md` (D31) · `archive/PROGRESS-2026-07-10-13.md` (D39.6-гигиена). Записи ниже — живая эра D39. +## Оркестратор №7 — D39.21 стайл-решения владельца + промт пака-13 «выпускной QA» выдан, 23.07 + +Владелец решил (D39.21): меры → конвертировать в единицы языка читателя (时辰=2ч) · generic «гу» = средний род, именные гу — род по-термово из банка · стихи — переводом смысла · 资质=«талант». Плюс директива: аудит полноты банк-инъекции («многое не инжектится в промт перевода»). **Промт пака-13 выдан (`BACKEND_PACK13_QA_SESSION_PROMPT.md`, 7 пунктов, WIRE-двигающий → resnapshot на итерации №2):** mined_delta-крэш-фикс · заголовок-шаблон (langpack-маркеры) · юнит-конверсия+чекер · число-масштабы 千万/成 · broken-word/latin-residue (приёмка на живом дефект-корпусе rerun2, 0 FP) · аудит инъекции · стайл-канон в промпт. Порядок лендинга: пак-12 (нейтральный) → пак-13. Открыто владельцу: 元-корень семейства + 春秋蝉 (сид-дельта итерации №2). + ## Оркестратор №7 — ВЕРДИКТ ПЕРЕ-ПРОГОНА (D39.20): планка не пройдена, дефект-классы механизируемы, mistral-редактор исключён, 23.07 Ключ вскрыт ПОСЛЕ фиксации двух слепых чтений. Триангуляция трёх независимых сигналов (судья 0.679/0.589/0.232 при floor-шуме 0 · ChatGPT сводно dspro 2/mistral 2/glm 1 · Fable гигиена mistral 2/glm 2/dspro 1): слепого сводного победителя НЕТ, но **чисто-художественные выборы обоих читателей идентичны (A/A/B/C/A) = mistral 4/5** — арм с худшей верностью. Анти-корреляция гладкость↔верность доказана трижды. **Решения (D39.20):** планка ≤2 не пройдена (пилот не открыт) · mistral вон как несущий (голос = north-star промпта) · dspro-vs-glm решает итерация №2 после механизации (драфт $0 → ~$0.08/арм + судья-lite). Дефект-классы → полный маппинг на механизмы (пак-13: юнит-чекер 时辰 · число-масштабы · broken-word/latin · заголовок-шаблон · mined_delta-крэш-фикс; банк: 元/资质/赤城/学堂家老; владелец: род «гу»/меры/стихи/春秋蝉). Операционка вся подтверждена живьём ($0-резюм ×3, echo 0, $6.63<$15). Гигиена: авто-QA ключевать слепыми метками (частичная деанонимизация гл.1 у читателя №2); промт пере-прогона отработан→архив; **гейт пака-12 ОТКРЫТ**. diff --git a/docs/README.md b/docs/README.md index f29a51f3..26b93eb7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,7 +16,7 @@ - `experiments/` — эмпирика «Полигона»: `00-provider-quirks` (читать перед любым вызовом провайдера), `01-token-calibration`, `02-refusal-benchmark`, `03-local-stand`, `04-editor-quality`, `06-local-extraction`, `07-coverage-precision`, `08-cost-model-v2` (актуальная денежная модель), `09-pilot-protocol` (пилот Ф2.5 + поправки D13), `10-explicit-benchmark` (18+ violence-рука канала B), `11-erotica-benchmark` (erotica по трём парам/регистрам — закрытие D14.4, D22). - `research/` — фактура исследований 04–05.07: `01–10` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память, `15` голос и состояние (принят, D21), **`16` ридер-IDE (принят с ревью-шапкой, D29)**, **`17` внешняя критика GPT-5.6 (принят с ревью-шапкой, D25)** — у 16/17 читать шапку прежде тела. **`18` рычаги качества (два отчёта, D36)** · **`19` нарезка+когезия+контракт t/e (D39.1)** · **`20` банк-майнинг W1.5 (D39.6)** · **`21` обзор LLM-транспорта чужих харнессов (23.07: наш транспорт опережает/вровень со всеми 11; рекомендации DEFER до после пере-прогона, Q7-квирки — кандидаты до вендор-сверки)** — у всех ревью-шапки. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**. - `PROGRESS.md` — **журнал** (CURRENT-STATE сверху, ниже хронология; НЕ источник решений). -- **Активные хендофф-промты (пост-D39.20, 23.07):** [`BACKEND_TRANSPORT_PACK_SESSION_PROMPT.md`](BACKEND_TRANSPORT_PACK_SESSION_PROMPT.md) (пак-12 «транспорт-гигиена» по research/21: 10 wire-нейтральных пунктов; **ГЕЙТ ОТКРЫТ** — платный путь пере-прогона завершён) · [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (хендофф №5 оркестратора) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (residual пилот/18+/echo). **ПЕРЕ-ПРОГОН ИСПОЛНЕН И ПРОЧИТАН (D39.20)** — промт → архив; следующий бэкенд-промт = пак-13 «выпускной QA» (пишет оркестратор). Закрытые — в `archive/prompts/` (свежие: пере-прогон→D39.20, research/21→лендинг 23.07, преп→D39.19, пак-11/R1→D39.17). +- **Активные хендофф-промты (пост-D39.21, 23.07):** [`BACKEND_TRANSPORT_PACK_SESSION_PROMPT.md`](BACKEND_TRANSPORT_PACK_SESSION_PROMPT.md) (пак-12 «транспорт-гигиена»: 10 wire-нейтральных пунктов; гейт открыт; **лендится ПЕРВЫМ**) · [`BACKEND_PACK13_QA_SESSION_PROMPT.md`](BACKEND_PACK13_QA_SESSION_PROMPT.md) (пак-13 «выпускной QA» по D39.20/21: 7 пунктов, wire-двигающий; приёмка на дефект-корпусе rerun2) · [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (хендофф №5) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (residual пилот/18+/echo). **ПЕРЕ-ПРОГОН ИСПОЛНЕН И ПРОЧИТАН (D39.20).** Закрытые — в `archive/prompts/` (свежие: пере-прогон→D39.20, research/21→23.07, преп→D39.19). - `archive/` — закрытые сессионные промты (только история, инструкции оттуда не исполнять). ## Статус (2026-07-23, пост-D39.20 — механизация выпускного качества) diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index d99e9efa..c0b6dcfb 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -781,3 +781,9 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу **Гигиена:** auto_qa.json был ключёван именем модели → частичная деанонимизация гл.1 для читателя №2 (зафиксировано им честно); полигону: авто-QA впредь ключевать слепыми метками. Floor-замер A0↔A0′ interim ратифицирован. Читатель №2 зафиксировал посторонний policy-блок в своём транскрипте (инъекция-подобный) — на вердикт не повлиял, дисциплина «фиксировать, не исполнять» отработала. **Очередь:** пак-12 транспорт-гигиена (гейт ОТКРЫТ — платный путь завершён) ∥ промт пака-13 → стайл-решения владельца → банк-дельта → **итерация №2** (edit dspro+glm на том же драфте + судья-lite) → чтение-lite → выбор редактора → пилот Ф2.5. + +## D39.21 — Стайл-решения владельца пост-чтения + директива аудита банк-инъекции (23.07). ✅ + +**Решения владельца (канон в банк/промпт, ось данных пары — §0.1):** (1) **меры** — конвертировать в привычные единицы ЯЗЫКА ЧИТАТЕЛЯ (zh→ru: 时辰=2 часа, «шичэнь» не сохранять; политика формулируется per-target, не хардкодом); (2) **род «гу»** — generic 蛊 = СРЕДНИЙ род; именные гу несут род ПО-ТЕРМОВО из банка (gender-поле: «цикада» — ж.р. и т.п.); (3) **стихи/названия классики** — переводить СМЫСЛОМ (не транслит; опора на существующие русские переводы классики); (4) **资质 = «талант»** (классы таланта А/Б/В/Г; «ресурсы» — искажение, в чекер-словарь). + +**Директива владельца:** «из банка памяти многое не инжектится в промт перевода» — пак-13 включает АУДИТ полноты инъекции (какие поля банка — gender/decl/тип/алиасы — не доходят до драфт/edit-wire) + фикс очевидных дыр. Открытые мини-каноны (元-корень семейства, 春秋蝉) — предложения оркестратора к сид-дельте итерации №2, решает владелец.