From 662ab602cf6be71793eee6e25ff67f7d2ba5c716 Mon Sep 17 00:00:00 2001 From: "Claude (backend session)" Date: Sat, 25 Jul 2026 01:30:19 +0300 Subject: [PATCH] Revise pack-16 prompt and handoff norms for the source-of-truth duality: ratified invariants verbatim, code facts as entry points the session verifies itself --- ...CKEND_PACK16_DIFF_EDITOR_SESSION_PROMPT.md | 46 ++++++++++++------- docs/ORCHESTRATOR_SESSION_PROMPT.md | 6 +-- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/docs/BACKEND_PACK16_DIFF_EDITOR_SESSION_PROMPT.md b/docs/BACKEND_PACK16_DIFF_EDITOR_SESSION_PROMPT.md index e16da0bd..e3129539 100644 --- a/docs/BACKEND_PACK16_DIFF_EDITOR_SESSION_PROMPT.md +++ b/docs/BACKEND_PACK16_DIFF_EDITOR_SESSION_PROMPT.md @@ -1,34 +1,46 @@ # Промт бэкенд-сессии: ПАК-16 «слой-3 diff-редактор» (ДВУХФАЗНЫЙ: дизайн → ратификация → стройка) -**Статус: ВЫДАН 25.07.2026, оркестратор №7.** Слой 3 `09-target-architecture.md` — крупнейший остаток плана; мандат редактора до сих пор full-regen (D39: причина инверсий). Приоритет подтверждён research/22 (§2 №1): прецеденты — AiNiee ProofreadTask (typed-error → адресный proofread строки), LinguaGacha retranslation-by-keyword; наш способ ДОЛЖЕН остаться нашим — детерминированные чекеры уже есть (`internal/checks`, паки 13/15), недостаёт петли gate→repair→re-gate. North-star: ИЗМЕРЕННЫЙ вклад петли (сколько дефект-классов чинится, на живом дефект-корпусе rerun2), не вера. +**Статус: ВЫДАН 25.07.2026, оркестратор №7 (ревизия 2 — усилен по анти-рассинк норме).** Слой 3 `09-target-architecture.md` — крупнейший остаток плана; мандат редактора до сих пор full-regen (D39: причина инверсий). Приоритет подтверждён research/22 §2 №1: конкуренты ЧИНЯТ typed-error адресно (AiNiee ProofreadTask — однострочный proofread с `error_type`; LinguaGacha — retranslation-by-keyword), мы только флагаем. Их код GPL/AGPL — НЕ копировать ни строчки, брать только идею. North-star: ИЗМЕРЕННЫЙ вклад петли (сколько чинится по классам), не вера. -**Цель:** флаг типизированного чекера → адресный ремонт минимального спана дешёвым вызовом → re-gate → при неудаче прежний flag+skip (дисциплина D2 сохраняется, мусор не течёт в TM/экспорт). +**Цель:** флаг детерминированного чекера → адресный ремонт минимального спана дешёвым вызовом → детерминированный re-gate → при неудаче прежний flag+skip. -## Онбординг +## Инварианты — «РОВНО ТАК» (ратифицировано, из кода не выводится; конфликт промта с кодом/доками → пинг оркестратору через владельца, НЕ интерпретация) -`CLAUDE.md` → `09-target-architecture.md` (слой 3) → `internal/checks` (typed-факты: CheapGateResult/SanitizerResult/DC-чекеры) → отчёты паков 13/15 (дефект-классы D39.20 → механизмы) → research/22 §2 №1 (прецеденты; их код GPL/AGPL — НЕ копировать, только идеи). +- **Дисциплина D2 неприкосновенна:** петля НЕ хард-гейт; неудача ремонта = сегодняшний flag+skip, мусор не течёт в TM/экспорт. +- **Лестница эскалации не ломается:** ремонт встраивается в существующую механику `regenerate_before_escalate` → `escalate_to` (под `budget_usd`), не меняя её семантику молча (развилки — в D3a). +- **Wire/деньги:** $0-резюм драфта НЕ ломать; repair-вызовы = новый класс → чекпойнты, RequestHash, леджер Reserve→Settle с CostSource-маркером; **no-repair путь байт-идентичен** (петля выключена = сегодняшнее поведение, golden compare-режим зелёный БЕЗ пере-капчера). +- **Общность §0:** промпт ремонта = данные пары → файл конвенции `prompts/<пара>/<роль>.md`; никаких пар/книго-литералов в Go; новые ключи конфига проходят строгий декод. +- **Провайдер-ловушки:** DeepSeek thinking НИКОГДА не off (эхо-мина); слаги не менять без live-фактчека. +- **Книга и производные ВНЕ git:** валидация на живых rerun2-выходах — на СТЕНДЕ, без коммита текста; в репо — только СИНТЕТИЧЕСКИЕ фикстуры по образцу дефект-классов (тест-данные пары легитимны §0.3, цитаты книги — нет). -## ФАЗА 1 — ДИЗАЙН (без единой правки кода) +## Отправные точки в код (сверь САМ — код первичен; это entry-points, не предписания; у тебя контекст кода лучше оркестраторского) -Дизайн-отчёт с вариантами и рекомендацией по каждому пункту; СТОП после отчёта — ратификация оркестратора (через владельца), стройка только после неё. +Typed-факты чекеров: `internal/checks` — `CheapGateResult`/`RunCheapGates` (`cheapgates.go:~89/120`), `SanitizerResult`/`SanitizeOutput` (`sanitizer.go:~142/190`), `CoverageResult` (`coverage.go:~139`), DC-паттерны из `configs/langpacks/zh-ru/dc-checkers.txt` (`checkers.go:~50`). Диспозиция-луп: `internal/pipeline/chunkrun.go` (classifyOutput). Гейты в волне: `waverun.go` (draft- и edit-пути). Грубая петля: `retries.regenerate_before_escalate` (`internal/config/pipeline.go:~110`). CostSource: `store/migrate.go` (v10). Инвентаризацию «кто даёт позиции, кто только факт» делай по коду, не по этому списку. -- **D1. Единица ремонта** (спан / предложение / чанк / edit-единица) и маппинг флаг→спан: инвентаризация — какие чекеры дают ПОЗИЦИИ, какие только факт; что нужно дотипизировать в checks (не ломая паки 13/15). -- **D2. Дефект-классы петли v1** vs flag-only: кандидаты в петлю — юнит-конверсия (时辰), число-масштабы (千万/成), broken-word, latin-residue, заголовок-шаблон, глоссарий-строгость; остаётся flag-only — register/style (недетерминируемо чинится). Критерий: детерминированный ре-чек возможен. -- **D3. Механика вызова:** промпт ремонта (src-спан + draft-спан + типизированная ошибка → исправление; ЯЗЫК промпта = данные пары, §0 — pair-keyed файл конвенции) · где живёт (новая стадия конфига? суб-шаг edit?) · модель (дешёвая, flash?) · потолок вызовов/бюджет · loop-guard (1 раунд, потом flag+skip). -- **D4. Wire/снапшот-дисциплина:** ремонт = НОВЫЙ класс wire-вызовов → RequestHash/чекпойнты/resume ($0-резюм не сломать); снапшот-фолд промпта ремонта; resnapshot ОДИН; golden — эволюция capture новым классом вызовов (пере-капчер по санкции с классификацией диффа; no-repair путь ОБЯЗАН остаться байт-идентичным). -- **D5. Деньги/отчётность:** repair-вызовы в CostSource/леджер; счётчики «починено/по классам/не удалось» в quality-report и паспорт главы. -- **D6. Валидация $0:** петля офлайн-тестируема на фикстурах дефект-корпуса rerun2 (дефекты пака-13 приёмки); mini-live гейт — отдельным решением владельца, НЕ в этом паке. +## Онбординг (карта чтения — для направления и глубины) -Приёмка фазы 1: отчёт-предложение (варианты+рекомендация+риски по D1–D6) + адверсариальный селф-ревью дизайна (линзы: детерминизм/resume · деньги · D2-дисциплина · общность §0 «заработает ли на паре, которой нет»). Кода НЕ трогать. +`CLAUDE.md` → `09-target-architecture.md` (слой 3) → `docs/archive/reports/PACK15_STRUCTURE_REPORT_2026-07-25.md` (пакет checks, границы) → D39.20 в D-логе (дефект-классы → механизмы) → research/22 §2 №1. -## ФАЗА 2 — СТРОЙКА (только после ратификации) +## ФАЗА 1 — ДИЗАЙН (без единой правки кода; каждый пункт — «реши сам и аргументируй», советы оркестратора = приоры, опровергаются только аргументом/замером) -По ратифицированному дизайну. Инварианты: **no-repair путь байт-идентичен** (петля выключена = сегодняшнее поведение, golden в compare-режиме зелёный БЕЗ пере-капчера) · парити EXACT · петля вкл. — новый golden-класс по санкции · тесты на дефект-корпусе · `-race` весь. **Хвосты первого касания (байт-нейтральные, тем же паком):** строгий декод `book.yaml` (санкционирован D-логом; перед вкл. — проверить стендовые book.yaml на внесхемные ключи и доложить) · строгий декод pair/models-слоёв · loose-ассерт unknown-key-теста (пинить имя ключа) · zero-value-паники PickedEntry/Bank (конструктор-гард или док). +- **D1. Единица ремонта + маппинг флаг→спан.** Инвентаризация: какие чекеры дают ПОЗИЦИИ, какие только факт; что дотипизировать в checks (не ломая API пака-15). *Приор: спан = предложение(я) с матчем + минимальный контекст; дотипизация = позиции в Result-структуры аддитивными полями.* +- **D2. Классы петли v1 vs flag-only.** Критерий отбора: существует детерминированный ре-чек. *Приор: в петлю — юнит-конверсия (时辰), число-масштабы (千万/成), broken-word, latin-residue; flag-only — register/style/coverage (нет детерминированного «починено»). Отдельно отсортируй класс (в): чинится ЧИСТЫМ КОДОМ без LLM (прецеденты уже в проде: заголовок-шаблон пака-13, санитайзер-стрип D30.3) — такие в LLM-петлю НЕ тащить.* +- **D3. Механика вызова.** Промпт ремонта (src-спан + draft-спан + типизированная ошибка → исправление; язык = данные пары) · где живёт в конфиге (суб-шаг edit-стадии vs новая стадия) · модель · потолок вызовов/бюджет · loop-guard. *Приор: суб-шаг edit-стадии (меньше поверхности схемы/снапшота), модель = дешёвая (flash-класс), 1 раунд на чанк, re-gate тем же чекером + полной cheap-сюитой юнита.* +- **D3a. Позиция в лестнице эскалации.** Как ремонт соотносится с `regenerate_before_escalate` и `escalate_to`. *Приор: для typed-span дефектов ремонт ПЕРВЫМ (дешевле полного re-gen); regenerate остаётся для классов без спана; эскалация не трогается. Провал ремонта НЕ триггерит regenerate автоматически (иначе двойная оплата пути) — аргументируй, если не согласен.* +- **D4. Wire/снапшот/resume.** RequestHash для repair-вызовов · чекпойнт-ключи (резюм скипает сделанный ремонт) · снапшот-фолд промпта ремонта · resnapshot ОДИН · golden: эволюция capture новым классом вызовов — пере-капчер ТОЛЬКО по санкции, no-repair путь без пере-капчера. +- **D5. Деньги/отчётность.** CostSource-маркер для repair · счётчики «починено/по классам/не удалось» в quality-report и паспорт главы. +- **D6. $0-валидация.** Синтетические фикстуры дефект-классов в репо (см. «РОВНО ТАК» про книгу вне git) + прогон на стенде против живых rerun2-выходов без коммита; mini-live гейт = отдельное решение владельца, НЕ в паке. + +**Приёмка фазы 1:** отчёт-предложение `docs/archive/reports/PACK16_DESIGN_<дата>.md` — по каждому D: варианты, рекомендация, риски, где расходишься с приорами и почему; адверсариальный селф-ревью дизайна (линзы: детерминизм/resume · деньги · D2-дисциплина · общность «заработает ли на паре, которой нет»). Кода НЕ трогать. **СТОП — ратификация оркестратора через владельца.** + +## ФАЗА 2 — СТРОЙКА (только после ратификации; список пунктов станет размеченным «ровно так» при ратификации) + +По ратифицированному дизайну. Инварианты фазы: no-repair путь байт-идентичен · парити EXACT · `-race` весь · тесты на синтетических фикстурах + стенд-прогон. **Хвосты первого касания (байт-нейтральные, тем же паком):** строгий декод `book.yaml` (санкционирован; перед вкл. проверить стендовые book.yaml на внесхемные ключи, доложить) · строгий декод pair/models-слоёв · unknown-key-тест пинит ИМЯ ключа · zero-value-паники PickedEntry/Bank (гард или док). ## НЕ делать -Канал B (пак-17) · копирование GPL/AGPL-кода · пар/книго-литералы в Go (§0; язык промпта ремонта = данные пары) · live-вызовы без санкции владельца · расширение скоупа без пинга оркестратору. +Канал B (пак-17) · копирование GPL/AGPL · пар/книго-литералы в Go · live-вызовы без санкции владельца · книжный текст в git · расширение скоупа без пинга. ## Приёмка (мандат 12.07) -Фаза 1 — отчёт `docs/archive/reports/PACK16_DESIGN_<дата>.md`, СТОП. Фаза 2 — ревью исполнением: build/vet/test -race · golden (см. инварианты) · парити · дифф `^func Test` ИСПОЛНЕНИЕМ в отчёте (норма после паков 14/15) · адверсариальный селф-ревью. Отчёт `docs/archive/reports/PACK16_DIFF_EDITOR_REPORT_<дата>.md`. Сессия НЕ коммитит; `git mv` стейджит — декларировать. +Фаза 1 — см. выше, СТОП. Фаза 2 — ревью исполнением: build/vet/test -race · golden (инварианты выше) · парити · **дифф `^func Test` ИСПОЛНЕНИЕМ в отчёте** (норма после паков 14/15) · адверсариальный селф-ревью. Отчёт `docs/archive/reports/PACK16_DIFF_EDITOR_REPORT_<дата>.md`. Сессия НЕ коммитит; `git mv` стейджит — декларировать. Вопросы/конфликты — пинг оркестратору через владельца. diff --git a/docs/ORCHESTRATOR_SESSION_PROMPT.md b/docs/ORCHESTRATOR_SESSION_PROMPT.md index 174af991..00abdbbf 100644 --- a/docs/ORCHESTRATOR_SESSION_PROMPT.md +++ b/docs/ORCHESTRATOR_SESSION_PROMPT.md @@ -71,9 +71,9 @@ Промт — ЕДИНСТВЕННЫЙ контекст сессии: она не видит твоих разговоров, чужих отчётов и решений, принятых после её старта. Отсюда шесть правил: -1. **Самодостаточность несущей части.** Ратифицированные решения (алгоритм, дизайн, формат, инвариант) — В ТЕЛЕ промта с file:line-якорями, не «см. док». Карта чтения ≤5 позиций и только для глубины/подтверждения; если сессии придётся пере-выводить решение из доков — промт написан плохо. -2. **Явная разметка свободы.** Каждый пункт — либо «делай РОВНО так» (решение принято; отступление = пинг, не тихая девиация), либо «реши сам и аргументируй в отчёте». Неразмеченная середина — главный источник миссимплементации. -3. **Имплементационные советы давать**, когда они есть: алгоритм, структура данных, подводный камень, wire-квирк, порядок этапов. Сессия не обязана пере-открывать известное; тактический (кодинг/конфиг) промт несёт квирки, стратегический — направление (не смешивать). +1. **Самодостаточность несущей части — с разделением по ИСТОЧНИКУ ИСТИНЫ (двойственность, владелец 25.07).** В ТЕЛЕ промта — то, что из кода НЕ выводится: ратифицированные решения, инварианты, квирки, направление «что мы делаем и зачем». КОД-факты сессия вытаскивает САМА — у неё контекст кода лучше твоего; промт даёт entry-points (file:line как отправные точки со сверкой «код первичен», не как предписания). Не прескрайбь то, в чём сессия компетентнее; карта чтения ≤5 позиций. +2. **Явная разметка свободы.** Каждый пункт — либо «делай РОВНО так» (ратифицировано; отступление = пинг, не тихая девиация), либо «реши сам и аргументируй в отчёте». Неразмеченная середина — главный источник миссимплементации. +3. **Советы давать как ПРИОРЫ**, когда они есть: алгоритм, структура данных, подводный камень, wire-квирк, порядок этапов — с явной пометкой «опровергается аргументом/замером». Сессия не обязана пере-открывать известное, но и не связана твоей догадкой; тактический (кодинг/конфиг) промт несёт квирки, стратегический — направление (не смешивать). 4. **Mid-flight аддендумы доезжают ТОЛЬКО релеем** — бегущая сессия файл промта не перечитывает. Требуй эхо-подтверждение получения + отдельный пункт в отчёте; при приёмке проверяй каждый аддендум явной строкой (так пойман потерянный parsePalladius-аддендум пака-14). 5. **Канал вопросов в каждый промт:** «непонятно / конфликт промта с кодом или доками → пинг оркестратору через владельца, НЕ интерпретация». 6. **Мандат самопроверки исполнением** (CLAUDE.md, 12.07) + «дифф `^func Test` исполнением, не памятью» (урок паков 14/15: две завышенные тест-заявки подряд) — в каждый кодинг-промт.