Refresh the bank fixpack prompt post exp-21: cold-open problem block, row 130 zero-cost minimum, D-number anchors, question channel and test-diff mandate, live-zone fact updated
This commit is contained in:
parent
fe755fe7f0
commit
954ff8062c
1 changed files with 10 additions and 8 deletions
|
|
@ -1,14 +1,16 @@
|
|||
# Промт бэкенд-сессии: ФИКС-ПАК БАНКА «КЛАСТЕРЫ + НАБЛЮДАЕМОСТЬ» (строка 128, + хвост 129)
|
||||
|
||||
**Выдан 04.08.2026, оркестратор №13, по санкции владельца 04.08 (зафиксирована D39.103 п.1; гейт строки 128 снят) и D39.102.** Ты — бэкенд-сессия. Зона записи: `backend/` (код+тесты+puml тем же коммитом-пакетом) + отчёт `docs/archive/reports/BANK_CLUSTER_FIXPACK_2026-08-XX.md` + пинг в `docs/PROGRESS.md` секция «Бэкенд». **НЕ коммитишь** — дерево готовишь, лендит оркестратор. ⚠ **Состояние дерева сверь `git status` В НАЧАЛЕ сессии — этот абзац устаревает быстрее промта.** На 08.08: платформа принята и залендена целиком (D39.109/D39.114), фронт S3 принят (D39.115), а ЖИВАЯ параллельная работа — полигон эксп-21: `eval/`, `docs/experiments/21-role-topology.md` и секция «Полигон» в `docs/PROGRESS.md`. Чужого не трогать и не «прибирать»: 08.08 такая правка стоила семи файлов (D39.113). **Деньги: $0 — платных вызовов НЕТ вообще**; тесты и голден локально. Перекупка бэнк-батчей случится на следующем живом прогоне — в пак не входит, её цену только НАЗВАТЬ в отчёте.
|
||||
**Выдан 04.08.2026, оркестратор №13, по санкции владельца 04.08 (зафиксирована D39.103 п.1; гейт строки 128 снят) и D39.102. Актуализирован 08.08 оркестратором №15 по слову владельца (пост-эксп-21 сверка: 22/22 якорей подтверждены по HEAD, дельта D39.104–D39.117 противоречий не дала).** Ты — бэкенд-сессия. Зона записи: `backend/` (код+тесты+puml тем же коммитом-пакетом) + отчёт `docs/archive/reports/BANK_CLUSTER_FIXPACK_2026-08-XX.md` (дату проставь сам) + пинг в `docs/PROGRESS.md` секция «Бэкенд». «Строка N» здесь и ниже = ID строки ЕДИНОГО БЭКЛОГА (таблица «Бэклог» в `docs/PROGRESS.md`). **НЕ коммитишь** — дерево готовишь, лендит оркестратор. ⚠ **Живую параллельную зону определяй `git status` + CURRENT-STATE В НАЧАЛЕ сессии — имя зоны в этом абзаце протухает быстрее промта.** На актуализацию 08.08: платформа принята целиком (D39.109/D39.114), фронт S3 принят (D39.115), эксп-21 принят и заленден (D39.117); живой сосед — полигон эксп-22 «панель жильцов» (`eval/tenant_panel/`, `docs/experiments/22-*`, секция «Полигон» в `docs/PROGRESS.md`). Чужого не трогать и не «прибирать»: 08.08 такая правка стоила семи файлов (D39.113). **Деньги: $0 — платных вызовов НЕТ вообще**; тесты и голден локально. Перекупка бэнк-батчей случится на следующем живом прогоне — в пак не входит, её цену только НАЗВАТЬ в отчёте.
|
||||
|
||||
**Первый деливерабл — эхо-блок ≤10 строк** (как понял скоуп · четыре работы + хвост · инварианты · что вне скоупа; подтверждения не жди).
|
||||
|
||||
## §0. Рамка
|
||||
|
||||
Вход пака — research/24 §G (принят D39.102; детальный дизайн-синк уровня функций — черновик `docs/archive/reports/DRAFT_BANK_ARBITRATION_V1_2026-08-04.md` §G, читать ЕГО) + находки приёмки D39.102 п.3. Замеры-основания: химера семьи на границе батча (research/24 §B4: одна модель, батч 0 слитно / батч 2 раздельно), 18/149 невидимых противоречий консолидаций на живом банке, «почему у терма такой dst» неответимо по артефактам (§A7), 8/45 голда = одна конвенция семьи.
|
||||
**Какую проблему решаем и что решит твой результат.** Авто-банк держит термин-консистентность всей книги, и по доктрине D39.104 банк на проводе = ЗАКОН для всех ролей — ошибка банка тиражируется в каждое окно консистентно, а чинится «уровнем выше», то есть ровно этим паком. Сегодня сборка банка рвёт семьи термов границей батча и не видит противоречий собственных консолидаций; твой пак чинит сборку (со-батч семей) и делает её видимой владельцу (сверка + наблюдаемость подписи). Вес пака после выдачи промта ВЫРОС: D39.104 п.1/п.3 — «фикс-пак 128 — главный рычаг качества банка», «без него авто-банк даёт не конвенцию, а химеру»; эксп-21 (D39.117) — ремонт по флагам годен ТОЛЬКО с банком (без него канон 0.917→0.895); exp-18 §C.3 — конвенция транскрипции = 18% голда и перекрывает разницу МОДЕЛЕЙ, держит её в проде именно банк-инжект.
|
||||
|
||||
**Инварианты (не трогать):** эмиссия auto/draft — терминолог не может ничего утвердить (`terminologist.go:31-35`); `Select`/пост-чек/эскалация; семантика Merge/AttachKWIC (кроме опц-перфа); ратифицированное «банкнота парсится только finish=stop» (`05-decisions-log.md:624,730`). **НЕ строить** (закрыто числами D39.102): равноправный совет · кросс-модельные веса · self-consistency · селекция из вариантов · отказ-сигнал · эмбеддинг-фетч. **G4 (кластерный роутинг) в пак НЕ входит** — это правило дизайна замера строки 5, кода сейчас не требует. **Ревью-вопрос общности:** «заработает ли пара, которой в репо НЕТ, без правки Go?» — семьи/асимметрия имя-реалия = ДАННЫЕ пары; пара без данных ⇒ канал инертен.
|
||||
Вход пака — research/24 §G (принят D39.102; детальный дизайн-синк уровня функций — черновик `docs/archive/reports/DRAFT_BANK_ARBITRATION_V1_2026-08-04.md` §G, читать ЕГО) + находки приёмки D39.102 п.3. Замеры-основания: химера семьи на границе батча (research/24 §B4: одна модель, батч 0 слитно / батч 2 раздельно), 18/149 невидимых противоречий консолидаций на живом банке, «почему у терма такой dst» неответимо по артефактам (§A7), 8 фолд-клеток голда = 7 поверхностей семьи 古月 + 人祖 (отдельный класс; поправка exp-18 §C.2 к прежнему «8/45 = одна конвенция» — основание G1 держится: 7/45 один класс конвенции).
|
||||
|
||||
**Инварианты (не трогать):** эмиссия auto/draft — терминолог не может ничего утвердить (`terminologist.go:31-35`); `Select`/пост-чек/эскалация; семантика Merge/AttachKWIC (кроме опц-перфа); ратифицированное «банкнота парсится только finish=stop» (D-лог: grep «D39.14» — finish=stop-гейт банкноты; код `banknote.go:338-342`; ⚠ line-номера D-лога плывут от роста шапки-карты — якорить D-номером). **НЕ строить** (закрыто числами D39.102): равноправный совет · кросс-модельные веса · self-consistency · селекция из вариантов · отказ-сигнал · эмбеддинг-фетч. **G4 (кластерный роутинг) в пак НЕ входит** — это правило дизайна замера строки 5, кода сейчас не требует (⚠ «роутинг отклонён» эксп-21 — про РЕДАКТОРСКИЙ арм G, к банковскому G4 не относится и новым основанием не является). **Ревью-вопрос общности:** «заработает ли пара, которой в репо НЕТ, без правки Go?» — семьи/асимметрия имя-реалия = ДАННЫЕ пары; пара без данных ⇒ канал инертен.
|
||||
|
||||
## §1. Онбординг (карта, целиком не читать; жаргон — `docs/glossary.md`)
|
||||
|
||||
|
|
@ -20,18 +22,18 @@
|
|||
|
||||
**G2. `ConsolidationConflicts(cands, out)`** (`terminology/terminology.go`) — тонкий брат `CanonConflicts`: те же containment+`lexemeSubset` (`:787-812`), но правая сторона — консолидации ТЕКУЩЕГО прогона между собой. Вызов в `runTerminologist` после сборки `out` (рядом с `terminologist.go:335`); WARN с именованными парами + счётчик в `terminologyResult` + колонка стоп-таблицы. $0, evidence-сторона, не фолдится.
|
||||
|
||||
**G3. Наблюдаемость арбитража.** (а) `BankStopRow` += `Signals []string` (уже вычисляются per-VARIANT и выбрасываются — печатай сигналы ТОП-варианта, либо вплети по-вариантно в Variants-строку — реши), `Invented bool` (норм-dst ∉ вариантов черновиков), `Conf int`; (б) третье поле «уверенность 0–100» в ответе терминолога — строка в `prompts/zh-ru/terminologist.md` (дата-правка; PromptSHA двигает батчи тем же разом, что G1); ⚠ ловушка парсера: числовой хвост ` \d{1,3}` снять КАК conf ДО ре-джойна полей (`terminology.go:880-885`), иначе молча въедет в dst; **запрещённая форма зафиксирована D39.102**: conf — только сортировка листа ревью «сначала неуверенное», никаких кросс-модельных сравнений и «скор решает»; (в) `reasoning_content` в схему НЕ заводить (debug-сайдкар за флагом, вне снапшота); (г) находки приёмки: **alias-джойн подписной карты** — предложения, пришедшие через алиас кластера, не попадают в note представителя (`miner_emit.go:242`, `mining.go:354-364`; маршрут aliasOwner в Merge уже есть — `terminology.go:160-192`), карта расходится со стоп-таблицей; **имена эвиктнутых** — рядом с `NEvicted` детальный список (форму хранения выбери БЕЗ новой миграции схемы — ловушка неидемпотентных миграций v8–v14, строка 49а); **per-batch «спросили N / ответили M»** + WARN на ПУСТОЙ ответ батча (`terminologist.go:296-299` — сейчас молчаливый continue) и классификатора (`:403-404` — пустой ответ молча; WARN на непустой мусор уже есть, `:412-414`); тест `TestTerminologistEmptyReplyIsLoud` покрыть НАСТОЯЩЕЙ пустой веткой (сейчас фикстура непустая — имя теста врёт).
|
||||
**G3. Наблюдаемость арбитража.** (а) `BankStopRow` += `Signals []string` (уже вычисляются per-VARIANT и выбрасываются — печатай сигналы ТОП-варианта, либо вплети по-вариантно в Variants-строку — реши), `Invented bool` (норм-dst ∉ вариантов черновиков), `Conf int`; (б) третье поле «уверенность 0–100» в ответе терминолога — строка в `prompts/zh-ru/terminologist.md` (дата-правка; промпт-файл входит в PromptSHA → RequestHash бэнк-батчей, то есть двигает батчи тем же разом, что G1); ⚠ ловушка парсера: числовой хвост ` \d{1,3}` снять КАК conf ДО ре-джойна полей (`terminology.go:880-885`), иначе молча въедет в dst; **запрещённая форма зафиксирована D39.102**: conf — только сортировка листа ревью «сначала неуверенное», никаких кросс-модельных сравнений и «скор решает»; (в) `reasoning_content` в схему НЕ заводить (debug-сайдкар за флагом, вне снапшота); (г) находки приёмки: **alias-джойн подписной карты** — предложения, пришедшие через алиас кластера, не попадают в note представителя (`miner_emit.go:242`, `mining.go:354-364`; маршрут aliasOwner в Merge уже есть — `terminology.go:160-192`), карта расходится со стоп-таблицей; **имена эвиктнутых** — рядом с `NEvicted` детальный список (форму хранения выбери БЕЗ новой миграции схемы — ловушка неидемпотентных миграций v8–v14, строка 49а); **per-batch «спросили N / ответили M»** + WARN на ПУСТОЙ ответ батча (`terminologist.go:296-299` — сейчас молчаливый continue) и классификатора (`:403-404` — пустой ответ молча; WARN на непустой мусор уже есть, `:412-414`); тест `TestTerminologistEmptyReplyIsLoud` покрыть НАСТОЯЩЕЙ пустой веткой (сейчас фикстура непустая — имя теста врёт); (д) **$0-минимум строки 130 (добавлен актуализацией 08.08):** дифф старого/нового авто-файла при `writeAutoBank` + WARN с ИМЕНАМИ термов, молча выпавших на пересечении emitRankCap×writeAutoBank (`miner_emit.go:119-123` — кап ДО эмиссионных фильтров, слоты seed/rejects не освобождаются; `mining.go:451-460` — перезапись файла целиком без мерджа); печать/WARN, wire-нейтрально, memory_version не двигается; ГРАНИЦА «ровно так»: накопительный мердж и освобождение слотов НЕ делать — СТОП-решение владельца (двигает банк → memory_version).
|
||||
|
||||
**G5. `foldVariants`:** счёт голосов по `NormalizeTargetForm`-фолду при показе сырых форм; рядом со spread — «конвенций» (folded spread); Via-провенанс при фолде не терять first-wins'ом (`terminology.go:228-234` — консенсус может пометиться «proposed for алиас»): агрегировать прямые+алиасные честно. Косметика (топ двигается 1/75) — делать заодно с G3.
|
||||
**G5. `foldVariants`:** счёт голосов по `NormalizeTargetForm`-фолду при показе сырых форм; рядом со spread — «конвенций» (folded spread); Via-провенанс при фолде не терять first-wins'ом (`terminology.go:228-234` — консенсус может пометиться «proposed for алиас»): агрегировать прямые+алиасные честно (форму агрегации реши сам). Косметика (топ двигается 1/75) — делать заодно с G3.
|
||||
|
||||
**Хвост 129 (банкнота-парсер).** `banknote.go:236`: `dst := parts[1]` голым при 3-польном формате — «Фан␣␣Юань» банкует полу-имя, хвост уезжает в тип и падает в `"term"`. Фикс: ре-джойн середины, когда ПОСЛЕДНЕЕ поле ∈ `bankTypeOK` (`banknote.go:73-74`, закрытый словарь), иначе весь хвост в dst (2-польная строка); зеркалить дисциплину ре-джойна терминолога (`terminology.go:875-890`). Тест на «Фан␣␣Юань» в обеих формах. Цена фолда: авто-банк изменится только на реальных случаях двойного пробела — в отчёте назвать, нашёлся ли хоть один в артефактах `~/books/gu-zhenren/coldrun-a/` (замороженный эталон, ТОЛЬКО чтение).
|
||||
**Хвост 129 (банкнота-парсер).** `banknote.go:236`: `dst := parts[1]` голым при 3-польном формате — «Фан␣␣Юань» банкует полу-имя, хвост уезжает в тип и падает в `"term"`. Фикс: ре-джойн середины, когда ПОСЛЕДНЕЕ поле ∈ `bankTypeOK` (`banknote.go:73-74`, закрытый словарь), иначе весь хвост в dst (2-польная строка); зеркалить дисциплину ре-джойна терминолога (`terminology.go:875-890`). Тест на «Фан␣␣Юань» в обеих формах. Цена фолда: авто-банк изменится только на реальных случаях двойного пробела — в отчёте назвать, нашёлся ли хоть один в артефактах `~/books/gu-zhenren/coldrun-a/` (замороженный эталон, ТОЛЬКО чтение). ⚠ Не смешивать со строкой 140: там ДЕКЛАРАЦИЯ банкнота-канала в shipping-c1 (СТОП-решение владельца, вне пака) — здесь чинится только ПАРСЕР.
|
||||
|
||||
**Опции (только если чисто ложатся, $0):** перф строки 37 — `AttachKWIC` через готовый Aho-Corasick (`membank/memory.go:872-918`); гигиена `BanknoteTruncated` — колонка недостижима в проде (`banknote.go:341` жёсткий false): либо честно провести флаг из исчерпанного length-ретрая, либо снести ветку+колонку+стейл-коммент (поведение «finish=stop-only» НЕ менять — ратифицировано); `NoDst` — узкий префикс-матч испорченного сентинела («⟦TM-NO-DST⟧.», кавычки) до `wellFormedLemma`.
|
||||
|
||||
## §3. Фолд-ось и голден (обязательная секция отчёта)
|
||||
|
||||
Состав батчей терминолога → `RequestHash` бэнк-батчей: G1+G3(промпт)+**G5** двигают их ОДНИМ разом — перекупка центовая, волны/снапшоты книг НЕ двигаются (проверь и предъяви: snapshot id волн не меняется). ⚠ G5 — НЕ только печать: фолд-счёт и Via меняют drafts-строки на wire (`terminology.go:441-449`, `:643-653`). Вне снапшота — только G2 и печать стоп-таблицы. Голден: если payload бэнк-батчей в голдене меняется — пере-захват ОДИН раз, явно названный в отчёте (не тихо); голден-счётчики волн обязаны пройти БЕЗ пере-захвата.
|
||||
Состав батчей терминолога → `RequestHash` бэнк-батчей: G1+G3(промпт)+**G5** двигают их ОДНИМ разом — перекупка центовая, волны/снапшоты книг НЕ двигаются (проверь и предъяви: snapshot id волн не меняется). ⚠ G5 — НЕ только печать: фолд-счёт и Via меняют drafts-строки на wire (`terminology.go:441-449`, `:643-653`). Вне снапшота — только G2 и печать стоп-таблицы. Голден: если payload бэнк-батчей в голдене меняется — пере-захват ОДИН раз, явно названный в отчёте (не тихо); голден-счётчики волн обязаны пройти БЕЗ пере-захвата. В отчёте также назвать наблюдённый эффект G1 на батч-чекпойнты терминолога (адресация ординалом при частотной сортировке — `terminology.go:925-931`, хвост строки 38 «со слов»): G1 меняет состав юнитов и двигает те же ординалы; работа строки 38 в пак НЕ входит — только наблюдение.
|
||||
|
||||
## §4. Самопроверка и СТОП
|
||||
|
||||
Гардрейлы, задеваемые работами: **`backend/.env` НЕ читать** · **PUML не рендерить в svg/png** (владелец смотрит расширением). Мандат 12.07: ревью ИСПОЛНЕНИЕМ своего кода + явный бэкенд-ревью после кода. Вся батарея (`go build ./... && go vet ./... && go test ./...`) зелёная; archguard-тесты не трогать. Отчёт: что сделано по каждой работе с `file:line` · девиации от этого промта с причинами · фолд-предъявление §3 · чего НЕ сделал и почему · **план верификации эффекта на следующем ХОЛОДНОМ прогоне** (D39.103 п.1; что и как смотреть — назвать конкретно). Пинг в PROGRESS «Бэкенд» кратко. ⚠ **Протокол правки этого файла (куплен инцидентом D39.113):** ТОЛЬКО append в свою секцию «Бэкенд»; CURRENT-STATE и чужие секции не касаться; `git status` до и после. Если файл модифицирован чужой сессией — пинг в ОТЧЁТ, вливает оркестратор. **СТОП — приёмка оркестратора** (адверсариальная, клеймы пере-проверяются исполнением).
|
||||
Гардрейлы, задеваемые работами: **`backend/.env` НЕ читать** · **PUML не рендерить в svg/png** (владелец смотрит расширением). Мандат 12.07: ревью ИСПОЛНЕНИЕМ своего кода + явный бэкенд-ревью после кода. Дифф `^func Test` до/после — ИСПОЛНЕНИЕМ (grep), не памятью; список новых/изменённых тестов в отчёт. Вся батарея (`go build ./... && go vet ./... && go test ./...`) зелёная; archguard-тесты не трогать. **Канал вопросов:** непонятно / промт противоречит коду или докам → СТОП по этому пункту и вопрос оркестратору через владельца (в пинг/отчёт), НЕ тихая интерпретация. Отчёт: что сделано по каждой работе с `file:line` · девиации от этого промта с причинами · фолд-предъявление §3 · чего НЕ сделал и почему · **план верификации эффекта на следующем ХОЛОДНОМ прогоне** (D39.103 п.1; что и как смотреть — назвать конкретно). Пинг в PROGRESS «Бэкенд» кратко. ⚠ **Протокол правки этого файла (куплен инцидентом D39.113):** ТОЛЬКО append в свою секцию «Бэкенд»; CURRENT-STATE и чужие секции не касаться; `git status` до и после. Если файл модифицирован чужой сессией — пинг в ОТЧЁТ, вливает оркестратор. **СТОП — приёмка оркестратора** (адверсариальная, клеймы пере-проверяются исполнением).
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue