From ac5f3128349dfc852a0f5916a3ef3548ef3e80c5 Mon Sep 17 00:00:00 2001 From: "Claude (backend session)" Date: Sun, 19 Jul 2026 21:57:08 +0300 Subject: [PATCH] Close the exp16 gender sign-off and issue the pre-rerun-prep backend prompt: mining-wiring fixes, echo-split, read-model naming, and single-resnapshot readiness --- docs/BACKEND_RERUN_PREP_SESSION_PROMPT.md | 102 ++++++++++++++++++++++ docs/PROGRESS.md | 4 + docs/README.md | 2 +- 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 docs/BACKEND_RERUN_PREP_SESSION_PROMPT.md diff --git a/docs/BACKEND_RERUN_PREP_SESSION_PROMPT.md b/docs/BACKEND_RERUN_PREP_SESSION_PROMPT.md new file mode 100644 index 00000000..d93f6111 --- /dev/null +++ b/docs/BACKEND_RERUN_PREP_SESSION_PROMPT.md @@ -0,0 +1,102 @@ +# Промт: сессия БЭКЕНД — пере-прогон-преп (mining-wiring фиксы · echo-сплит · read-model чистка · готовность к единому resnapshot), 2026-07-19 + +> **Место в очереди (пост-D39.18):** ПАК-11 ЗАВЕРШЁН (Block A → continuation → арх-проход → R1 драйвер-свитч → +> parent-cancel-фикс → c-lite blast-radius). Осталось перед пере-прогоном — **набор мелких целевых фиксов**, +> накопленных приёмками (рубеж-2 R1 + пост-лендинг-ревью). После этой сессии → пере-прогон (ОДИН `--resnapshot` +> fresh-translate под финальным конфигом) → чтение владельца. **Это НЕ сам пере-прогон** (тот — операционная/ +> полигон-сессия с langpack+contrast+mined_delta+армами) и НЕ смена алгоритмов. + +## Директива дисциплины (владелец, в силе): не упарываться на миноры + +Это заход **целевых фиксов из ратифицированных находок**, НЕ рефакторинг-ради-рефакторинга и НЕ минор-хант. +Скоуп-лист ниже — исчерпывающий; сверх него ничего не трогать. Чистый код, стандарт «сеньор Google», stdlib/ +`x/text`, но без над-инженерии. + +## Кто ты и что сдаёшь + +Бэкенд-сессия. **Зона: `backend/`.** Прочее read-only. **НЕ коммитить** (лендит оркестратор). Сдаёшь: код по +скоупу + тесты (пины/golden/race) + отчёт **в финальном сообщении** (НЕ `backend/*_REPORT.md`; детальный +артефакт при нужде → `docs/archive/reports/`). $0 к провайдерам (вся верификация build/test/golden/фикстуры). + +## Онбординг + +1. `CLAUDE.md` (гардрейлы) → `backend/README.md` (**инварианты 1–8**). +2. D-лог `05-decisions-log.md`: **D39.17 (R1) · D39.17-errata (parent-cancel) · D39.18 (c-lite + read-модели)** + целиком + шапка-актуальность. План `11-implementation-plan.md` **§8 (манифест единого resnapshot)**. +3. Отчёты приёмок (контекст находок): `docs/archive/reports/R1_DRIVER_SWITCH_REPORT_2026-07-19.md` + + `R1_POST_LANDING_REVIEW_2026-07-19.md`. +4. Код по скоупу: `cmd/tmctl/main.go`+`render.go` (exit-коды), `mining.go`+`waverun.go` (стоп), + `memnorm.go` (Ш-2), `quality.go`+`status.go`+`export.go` (echo/read-модели), `snapshot.go` (§8-манифест). +5. `docs/experiments/00-provider-quirks.md`. + +## Скоуп (исчерпывающий — 6 пунктов) + +### 1. R1-FL-A — CLI обрабатывает `WaveSignatureStop` (exit-код) +Сейчас `exitCode()` (`main.go`) маппит только `*CompletedWithFlags`→2; `*WaveSignatureStop` падает в default→ +**exit 1 (== крэш)** → exit-код-автоматику вводит в заблуждение (человек видит stderr, но код неотличим от +падения). Фикс: `errors.As(&sigStop)` рукав → **distinct exit-код** (предлагаю 3, отдельный от 2-flagged/1-крэш; +задокументировать в `render.go`-комменте кодов) + рендер `Terms`/`SignaturePath` оператору. **Поправить +оверклейм-комменты** (`waverun.go:72/77` «CLI-сентинел»/«carried up like CompletedWithFlags» — сейчас ложь). +Тест: `WaveSignatureStop` → ожидаемый exit-код. Wire/снапшот НЕ трогает. + +### 2. R1-FL-B — mining-стоп: reject-set (нужен дизайн, ниже — дефолт) +Сейчас стоп очищается ТОЛЬКО при пустой дельте (`mining.go`); reject-механизма нет → терм, который владелец +ОТКЛОНИЛ (опустил из `mined_delta`), ре-предлагается каждый прогон → **стоп фаерит вечно** (livelock), edit-волна +недостижима; единственный костыль-escape (пометить `status:auto` no-dst) не задокументирован. **Дизайн-дефолт +(реализуй, если владелец не переопределит):** **reject-set файлом** — `Book.MinedRejects` (yaml, список `src` +отклонённых термов) грузится в `runBankMiningStop`, `MineBank`-эмиссия исключает их (как seedSurfaces). +**Стоп очищается, когда каждый предложенный терм ЛИБО промоутнут (`mined_delta`) ЛИБО отклонён (reject-set).** +Reject-set НЕ фолдится в снапшот (влияет только на ПРЕДЛОЖЕНИЕ, не на контент банка). Обнови stop-сообщение: +«промоутни в mined_delta ИЛИ отклони в mined-rejects». Тест: отклонённый терм не ре-фаерит стоп. *(Это закрытие +твоего же вопроса W1.5-UX §10-1 — чистый reject-list вместо status:auto-костыля.)* + +### 3. R1-FL-C — `x/text/norm` Unicode-редакция в Ш-2 +`memoryNormVersion` фолдит stdlib `unicode.Version`, НО `x/text/unicode/norm` (NFKC в `normalizeSourceKey`) +несёт СВОЮ Unicode-редакцию независимо → `go get -u golang.org/x/text` мог бы тихо сдвинуть NFKC → пере-вердикт +post-check без сдвига снапшота. Фикс: вплести версию x/text (модуль-версию из `runtime/debug.ReadBuildInfo` +для `golang.org/x/text`, ИЛИ явную пин-константу + трипваер-коммент «бампать x/text только с resnapshot»). +**Двигает снапшот** (`memoryNormVersion`) → golden re-capture (version-only, masked-diff чист). Строка §8-манифеста. + +### 4. echo-сплит `echo_draft_rate` / `echo_edit_rate` (решение владельца) +Заменить агрегат `EchoRate` + re-derive-хак (`quality.go:124`) на **два поля по стадии**: `echo_draft_rate` = +доля draft-стадия chunk_status с `FlagReason=cjk_artifact` (переводчик эхнул — вкл. дропнутых c-lite, считается +ПРЯМО из draft-строк) / `echo_edit_rate` = доля edit-стадия строк с `cjk_artifact` (редактор эхнул / echo в +шипнутом — качество доставленного). Убирает костыль (draft-echo не нужно пере-выводить per-unit — он в draft- +строках). Старое `echo_rate`/`echo_chunks` — снести или пометить deprecated (JSON-консюмеры: report — наблюдаемость, +не контракт). Тест: дропнутый draft-echo → `echo_draft_rate`>0, `echo_edit_rate`=0. Report — наблюдаемость, снапшот +НЕ трогает. + +### 5. read-model naming-debt +Поля `chunk`/`total_chunks` в read-моделях теперь несут UNIT-счётчики (пост-c-lite) — имена вводят в заблуждение +JSON-консюмеров. Переименовать в unit-семантику (`unit`/`total_units` или явный алиас), внутренние счётчики уже +верны (D39.18). Косметика контракта, не логика. Наблюдаемость, снапшот НЕ трогает. + +### 6. Ниты D39.17-errata (ЛЁГКАЯ гигиена — только явно-мёртвое/дешёвое; НЕ раздувать) +- `minedToCandidates` — dead в live-пути (вытеснен file-based `loadMinedDelta`) → снести, если реально мёртв (греп-подтверди). +- `jobs.status`-трэш под shared chapter×stage строкой — **advisory, ничего не гейтит** → коммент-note, не фикс (если фикс дёшев и чист — можно, иначе оставить). +- `escMu` через LLM-вызов — известный трейд (throughput vs soft-cap-точность) → **НЕ трогать** (осознанно). +- HTTP-адаптер concurrency неотестирован фейк-клиентом → **опционально** один live-parallel smoke-тест (stdlib `http.Client` thread-safe by design) — если дёшево; иначе коммент-note. +Всё под «не упарываться»: сомнительное/дорогое → note, не фикс. + +## Готовность к единому resnapshot (§8-манифест — ВЕРИФИЦИРОВАТЬ, НЕ исполнять) +Пере-прогон будет ОДНИМ `--resnapshot` fresh-translate (D30.9). Эта сессия его НЕ запускает — но обязана +**подтвердить, что §8-манифест полон**: всё снапшот-двигающее свёрнуто (memmatch-v4 · sanitizer-v6 · чанкер-v5 +segmentation · src→dst render-format · pack.Version · **+ R1-FL-C unicode/x/text** · reseed-сид). Сверь список +§8 с реальными фолдами в `snapshot.go`; расхождение → в отчёт (не тихо). Golden после сессии: только version-only +сдвиги (Ш-2/R1-FL-C) + новые поля report — НУЛЬ вердикт/wire-правок (echo-сплит/naming — наблюдаемость). + +## Гардрейлы +Инварианты 1–8 не трогать · $0 к провайдерам · Go-каноны (`gofmt`/`vet`/`-race` чисто; `%w`; table-driven) · +неконсистентность → даблчек тулзами + эскалация · `.env` не читать · книга/производные вне git · не коммитить. + +## Верификация (мандат самопроверки) +`build/vet/test -race` после каждого куска (лог, не слово) · golden: version-only (Ш-2/R1-FL-C) + новые +report-поля, НОЛЬ вердикт/wire-правок · пины на каждый фикс (exit-код · reject-set не-livelock · x/text-фолд · +echo-сплит · naming) · **адверсариальный селф-ревью** (author≠reviewer) по несущему (reject-set-логика, +echo-сплит-корректность, §8-манифест-полнота) — находки чинить до сдачи. + +## Приёмка (оркестратор — знай заранее) +Прямая верификация исполнением (build/race/golden-version-only/пины) + спот-чек §8-манифеста; тяжёлый воркфлоу +по надобности (эти фиксы локальны — вероятно прямой верификации хватит). Затем лендинг → D-блок → **пере-прогон** +(операционная сессия: langpack+contrast+подписанная сид-дельта[карта exp16]+армы редактора; ОДИН resnapshot; риг- +стандарт D39.7; finish=stop; ⚠ ре-чек прайса DeepSeek у катовера 24.07 ДО платных вызовов) → чтение (планка 2 претензии). diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 3273ebbd..aaa5157c 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 — gender-signoff закрыт + промт пере-прогон-препа выдан, 19.07 + +**Gender-signoff карты exp16 ЗАКРЫТ** (владелец «male ок», оркестратор проставил корректно, не бланк-штампом): **male** (name-персоны he-доминантно) 方源·古月·方正·人祖·花酒行者·古月赤练/赤城/漠北/漠尘/冻土 · **female** 沈嬷嬷 (嬷嬷=нянька, 0/2) + **沈翠** (KWIC разрешил ничью 2/2: 丫鬟/丫头=служанка, дочь 沈嬷嬷 — счётчики 他 были от окружающих мужчин) · **hidden** 白凝冰 · **n/a** все title/term/place + 困境 («Беды»=имя стаи). Флагов не осталось. Карта (`books/gu-zhenren/exp16/signature_map.md`, вне git) — dst-канон + пол закрыты, готова к сид-дельте. **Промт `BACKEND_RERUN_PREP_SESSION_PROMPT.md` ВЫДАН** — 6 целевых фиксов (R1-FL-A CLI-exit · R1-FL-B mining-reject-set [дизайн-дефолт: reject-list файлом] · R1-FL-C x/text-версия в Ш-2 · echo-сплит · read-model naming · лёгкие ниты) + верификация полноты §8-манифеста единого resnapshot; директива «не упарываться на миноры» вшита. Пере-прогон (ОДИН resnapshot fresh-translate + армы + подписанная карта) — операционная сессия ПОСЛЕ препа; гейт: ре-чек прайса DeepSeek 24.07. + ## Оркестратор №7 — D39.18: c-lite blast-radius + 4 read-модель-фикса залендены, 19.07 Ратифицирован product-вариант (c) по blast-radius (флагнутый черновик-член бланкал всю edit-единицу → регресс). **Залендено `488c8d4` (c-lite):** флагнутый член дропается, редактор бежит по чистому остатку (source+draft хороших), при всех флагнутых → ""; без флага байт-идентично (golden цел). Приёмка прямая (локализованный flag-путь — тяжёлый воркфлоу не нужен; сессия сама прогнала 4-линзовый адверсариал): build/race/golden зелёные сам, деньги честны (draftCost по всем членам, редактура 1×). + 4 read-модель-фикса пост-лендинг-ревью сессии: quality-echo пере-выведен (**открытое решение владельцу: echo «где угодно» [текущее] vs «только шипнутое» — one-line**), status first-flagged, export --pairs source realign, export detail. Отчёт `docs/archive/reports/R1_POST_LANDING_REVIEW_2026-07-19.md`. R1-FL-A/B/C — deferred в пере-прогон-преп (live-mining-гейтнуты). **Echo-метрика РЕШЕНА (владелец, идея владельца лучше моего A/B): сплит `echo_draft_rate` (переводчик эхнул — здоровье модели, вкл. дропнутых c-lite прямо из draft-строк) / `echo_edit_rate` (редактор эхнул / echo в шипнутом — качество доставленного, серьёзнее).** Заменяет A/B И убирает re-derive-хак `quality.go` (draft-echo считается прямо из draft-строк по Stage+`cjk_artifact`). → пере-прогон-преп. **Очередь без изменений:** пере-прогон-преп (R1-FL-A/B/C + echo-сплит + единый resnapshot; blast-radius уже сделан) → пере-прогон → чтение. diff --git a/docs/README.md b/docs/README.md index be6608ac..c603a5db 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)** — у всех ревью-шапки. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**. - `PROGRESS.md` — **журнал** (CURRENT-STATE сверху, ниже хронология; НЕ источник решений). -- **Активные хендофф-промты (пост-D39.17, 19.07):** [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (хендофф №5 оркестратора; статус-баннер — пост-D39.17) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (residual пилот/18+/echo). **ПАК-11 ЗАВЕРШЁН** — след. шаг = пере-прогон-преп (3 mining-wiring-фикса R1-FL-A/B/C + единый resnapshot; промт пишет оркестратор). Закрытые — в `archive/prompts/` (свежие: пак-11/R1→D39.17, арх-cleanup→D39.16, дизайн-синтез→D39.12). +- **Активные хендофф-промты (пост-D39.18, 19.07):** [`BACKEND_RERUN_PREP_SESSION_PROMPT.md`](BACKEND_RERUN_PREP_SESSION_PROMPT.md) (**СТАРТОВЫЙ — пере-прогон-преп: 6 целевых фиксов [R1-FL-A/B/C · echo-сплит · read-model naming · ниты] + готовность §8-манифеста; перед пере-прогоном**) · [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (хендофф №5 оркестратора) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (residual пилот/18+/echo). **ПАК-11 ЗАВЕРШЁН.** Очередь: преп → пере-прогон (ОДИН resnapshot + армы + подписанная карта) → чтение. Закрытые — в `archive/prompts/` (свежие: пак-11/R1→D39.17, арх-cleanup→D39.16). - `archive/` — закрытые сессионные промты (только история, инструкции оттуда не исполнять). ## Статус (2026-07-19, пост-D39.16 — стройка пере-прогонного стека)