51 KiB
Дизайн-пак КАЧЕСТВА БАНКА — этап 1 (ресёрч+дизайн, $0) + этап 2 (стройка)
✅ ОБА ЭТАПА ПРИНЯТЫ И ЗАЛЕНДЕНЫ (оркестратор №9, 02.08.2026, D39.69). Процесс: этап 1 ратифицирован ВЛАДЕЛЬЦЕМ напрямую (без релея оркестратора — его право), этап 2 исполнен той же сессией ДО старта пакета-чекеров (коллизий нет — чекер-сессия не запускалась); отдельного файла-отчёта стройки нет (стройка отчитана записью в PROGRESS §Бэкенд) — компенсировано верификацией оркестратора исполнением. Приёмка:
go build/vet/-race14/14 · майнер-парити EXACT · голден-верификация зелёная · голден сверен независимой маскировкой: 172/172 строки = только 64-hex хеши + 4 токенаembedded_version, вердикты/wire/stage_text байт-идентичны · «ровно 4 серии на живом BANK-FULL» воспроизведено оркестратором независимо (копия DetectSeries по TSV: 一…九转·甲乙丙丁等·甲/乙/丙等资质·中/初/高阶; 方源/元石/元海 вне кластеров) · 4-агентное адверсариальное ревью. Расхождения стройки с дизайном: 2 объявлены и приняты как УЛУЧШЕНИЯ (ось neuter = scopedneuter-directive-v1-фолд вmemory_versionвместо бланкетногоRenderFormatVersion— лучше по правилу условного фолда §6.2;head_final= константа CJK-класса при data-driven классе письма); 4 не объявлены → фикс-лист (строка 87): (1) ГЛАВНОЕ — вdecl_suffixнет «ь»: приёмочный кейс дизайна «Фан Юаню»→«Фан Юань» эмпирически ПРОВАЛИВАЕТСЯ, палладиевский класс -нь/-ль не матчится (фикс = одна строка данных + пере-захват голдена), тесты стройки тихо пинят «мечом»/«горы» вместо него; (2) комментарийBatch«request hash independent of ordering» неверен (freq-сорт пермутирует ChunkIdx в RequestHash мульти-батчевых книг; сейчас смягчено сдвигом embedded_version); (3) оверсайз-серия кладётся в ОДИН батч сверх бюджета (дизайн читался как разрезание; ре-допускает переполнение — помнить мину cap-8000 терминолога); (4)classify_types:trueпри выключенном terminology-гейте = тихий no-op + ноль config-тестов classify-веток; (5) мутационного теста neuter-фолда нет (пин только косвенный голденом); (6) стеммер в voice-checker не заведён (дизайн-«учесть» = нулевой исход, не объявлен). ⚠ Отдельно на владельца:prompts/zh-ru/classifier.mdнесёт книжные каноны стенд-книги (方源·青茅山·蛊·元石·灵泉·窍·甲等·家老) — первый пар-промт с книжными термами; по норме «книжный термин в общем пар-слое = утечка» нужна либо санкция, либо жанрово-генерические примеры (вопрос Q8). Платный порог приёмки §2 «воспроизвести 6/6 harm-фикс» не прогнан ($0-мандат) — добрать при ре-пробе развилки 74.
Бэкенд-сессия, 01.08.2026. По промту
docs/BACKEND_BANK_QUALITY_SESSION_PROMPT.md(D39.68). Деливерабл этапа 1. Кода вbackend/не писал; единственное исключение — санкционированный first-occurrence-тестeval/bank_autonomy/m_firstocc.py(§7.7, $0 на артефактах coldrun-a). СТОП в конце — на ратификацию. Стройка (этап 2) — только по отдельному релею, после лендинга пакета-чекеров.⚠ Этот отчёт прошёл 5-агентную адверсариальную дизайн-критику (author≠reviewer, §8) — 2 решения были BROKEN и переработаны (§1 серия-дефиниция → head-aware; §2 инлайн-тип → классификатор ПЕРВИЧНЫМ), 3 WEAKENED вправлены (§5/§6/§7). Текст ниже — уже ПОСЛЕ правок.
ЭХО-БЛОК (≤10 строк)
- Скоуп: по каждому механизму — вердикт-тройка (посылка/нужность/форма ≥2 альтернатив) + выбранный дизайн (интерфейсы/данные/снапшот-оси/тесты приёмки); пп.1–6 полная форма, п.7 кандидаты 1–2 строки; блок «вопросы владельцу»; итог 3–5 строк в
docs/PROGRESS.md§Бэкенд. - Кода не пишу (кроме
eval/bank_autonomy/m_firstocc.py, $0 на артефактах coldrun-a). - Деньги — НОЛЬ: платных вызовов нет,
--resnapshotне запускаю, пробы не докупаю. - Зона: read-only по
backend/; пишу только отчёт + разрешённую тест-папку. Пост-чек #10 однознаковых ключей строит параллельная чекер-сессия — НЕ проектирую заново. - Стоп-точки: СТОП в конце этапа 1; этап 2 — по релею оркестратора.
- Мандат: ревизия посылок; замер против посылки = СТОП+вопрос владельцу; утверждения о коде грунтованы
file:line+греп; самопроверка исполнением (грунтинг + анкор-верификация + адверсариальная дизайн-критика — §8). - Универсальность: решения на уровне чистого арх-бэкенда; Go не ветвится по паре/книге; критерий приёмки «пара, которой нет в репо, проходит без правки Go».
§0. Глобальный критерий и как читать вердикты
Мерило (владелец 01.08): чистый архитектурный бэкенд, который легко писать и поддерживать и который качественно выполняет задачу. Механизм строится только там, где несёт качество/деньги — не ради галочки бэклога. Общность: «заработает ли на паре, которой в репо ещё НЕТ, без правки Go?».
Курс (D39.59/D39.67): премиса «решение о переводе = подпись владельца» (D39.42/47) АМЕНДИРОВАНА — банк обязан приходить с максимально качественными автономными переводами, подпись опциональна. Рычаг = автономная верность на холодном старте (пустой канон), где несущие факторы §C2-3 мертвы, а консолидатор — терминолог по KWIC (D39.65; §7.7 подтвердил ПОЗИТИВНО: роль ре-решает по контексту, игнорируя порядок/частоту).
Сквозная находка (несущий тезис чистоты) — после дизайн-критики:
| Примитив | Кому служит | Статус |
|---|---|---|
| A. Кластер по общей исходной морфеме, HEAD-AWARE | §1 серия-батчинг (СТРОИТЬ) · §6 голова 蛊 (ИЗМЕР-ГЕЙТ) · §7 ranked-set (свёрнут в §1) | §1 строится; §6-эмиссия демотирована до полигон-замера (критика §6) |
| B. Ре-упорядочивание кандидатов перед батчингом | §1 серия-смежность · §7 feed_cap | СТРОИТЬ с §1 (одна правка terminology.Batch) |
| C. Лёгкий стеммер целевого письма (accepted-set) | §3 Decl-шов пост-чека · §7/строка 25 omission-бэкстоп чекеров | СТРОИТЬ, согласованно с чекер-сессией |
Строится сейчас: §1 (head-aware серия + value-порядок B), §2 (классификатор типа ПЕРВИЧНЫМ + честно-скоупнутый $0-экран), §3 (стеммер C + neuter + короткая форма). Измер-гейт / закрыто: §4 (36б → полигон-замер), §5 (резюме → пилот Ф2.5), §6 (голова → полигон-замер, seed-половина строится), §7-эмбеддинг (закрыт по нужности). Все 8 tech-debt-якорей ре-верифицированы адверсариально — CONFIRMED (§8).
§1. Серия-батчинг (36в) — ПОЛНАЯ ФОРМА · переработана дизайн-критикой (была BROKEN)
(а) Посылка
D39.58/D39.65 (замер 21): финальный холодный банк серийно несогласован причинно на границе батча — 甲等→«класс» (батч 5) против 乙丙丁等→«ранг» (батч 0). Проба §2 PROBES (temp 0): со-батч серии → согласованное+ДЕТЕРМИНИРОВАННОЕ родовое слово (等: 3 порознь→1 вместе; экстраполяция 丁等=«четвёртый разряд»), серий-зависим (转 no-op). §7.7 (исполнено): роль ре-решает по контексту, игнорируя порядок/частоту ⇒ серийную согласованность нельзя добыть весами/порядком, только со-батчем. Посылка верна.
Причинный корень: terminology.Batch (terminology.go:919) режет кандидатов по размеру, сохраняя ЛЕКСИКОГРАФИЧЕСКИЙ порядок ключей (terminology.go:212). Серия с общей морфемой-СУФФИКСОМ (等) сортируется по РАЗЛИЧАЮЩЕМУСЯ ПРЕФИКСУ (甲乙丙丁) → раскол. Related=только вложенность (terminology.go:242); 甲等/乙等 не связаны.
(б) Нужность
Не делать ⇒ холодный банк серийно-несогласован. Причинность+живой фикс замерены, §7.7 показал: альтернатив (веса/порядок) нет. Нужно.
(в) Форма — выбрано: HEAD-AWARE кластер серии + со-батч без раскола (по размеру) + value-порядок (B)
⚠ Первичная форма («равная длина, различие в ОДНОЙ позиции») была BROKEN дизайн-критикой и МОЙ собственной верификацией на
BANK-FULL.tsv(150 поверхностей, $0 read-only): наивное правило даёт 19 транзитивных кластеров, из них ~4 годных; патология — 11-членный блоб[侧室,元气,元海,元石,花海,蛊室,蛊师,蛊虫,酒气,酒肆,酒虫](содержит ОБА §2-branch-harm юнита元石/元海!),[方家,方正,方源,管家](протагонист方源freq 189 + управляющий), вырожденный[点,窍,转](одиночные символы). Наивное правило ломает главного героя и УКРЕПЛЯЕТ ровно тот транслит-harm, что чинит §2. Переопределено ниже.
Оперирует над terminology.Candidate+terminology.Batch (пост-merge; НЕ трогает майнер-парити — она на mr.ranked до Merge, miner_parity_test.go:103-118; concede критика):
- Отношение «серия» HEAD-AWARE. Серия = ≥3 поверхностей РАВНОЙ длины, делящих общую ГОЛОВУ (родовое слово) и различающихся ТОЛЬКО в позиции МОДИФИКАТОРА (не головы). Сторона головы = пар-данные (langpack-булев
head_final): для zh/ja голова — трейлинг-руны, различающаяся руна обязана быть НЕ-финальной. Исключить L=1. Проверено мной наBANK-FULL.tsv: head-aware даёт РОВНО 4 годных серии —一…九转,中/初/高阶,甲乙丙丁等,甲/乙/丙等资质— и корректно роняет元/蛊/酒-семьи (различие в ГОЛОВЕ石/海/室/师⇒ РАЗНЫЕ сущности), протагониста, вырожденные одиночки. Реконсиляция §1↔§2:元石/元海различаются в ГОЛОВЕ ⇒ НЕ серия — они принадлежат §2 (тип-harm), не §1. Пример元石↔元海из чернового §1 УДАЛЁН. - Батчинг. Сорт
(seriesKey, key)(серия смежна) + не резать серию границей батча. Кап оверсайза — по РЕНДЕР-РАЗМЕРУ, зеркаляBatch.maxRunes(terminologist.go:59batchRunes=6000), НЕ по числу членов N (критика: под-N серия с широким KWIC переполнит бюджет; терминолог уже рассуждает 8063 ток у cap, PROBES §1). Серия крупнее бюджета → свои батчи, не роняется. - Value-порядок (примитив B, свёрнут feed_cap): раз трогаем
Batch, ОТРЕЗ бюджета — по частоте-desc/типу (наименее частотный хвост, не лексикографический). Закрывает feed_cap (§7) одной правкой.
Детерминизм/парити (concede критика): terminologyVersion (лог, не фолд); resume $0; майнер-парити НЕ трогается. Пар-агностичность КОДА держится (руны), но ПРЕЦИЗИЯ скрипт-зависима (общий CJK-символ ≈ морфема; алфавитная минимальная пара care/core — совпадение) ⇒ head_final+«серия вкл/выкл» = пар-данные; для не-CJK источника серия-канал по умолчанию OFF данными.
Канон-пин родового слова МЕЖДУ прогонами/книгами:
- Внутри книги, автономно:
neighbourAgreesсчитает ТОЛЬКОapproved(terminologist.go:187) ⇒ на неподписанном мёртв. Софт-вес авто-соседа — вопрос владельцу §9-Q1 (тюнинг фактора против D39.65 «веса на холодном не трогать»). - Между книгами: носитель есть (экспорт подписанного глоссария как сид, бэклог 48а). Дизайна в арке не требует.
Альтернативы (отклонены)
- «Равная длина, 1 позиция» без head-awareness: 27/31 (у меня 15/19) ложных кластеров на BANK-FULL, вкл.
方源и §2-harm — ИЗМЕРЕНО. — Хардкод等/转: утечка. — Тюнить веса: D39.65+§7.7. — Широкий «≥1 общий Han»: взрывает семьи. — Мульти-проход: D39.65 «не гарантирует», платный.
Снапшот-оси
terminologyVersion (лог, не двигает memory_version). Софт-пин (если строить) — тоже туда.
Тесты приёмки
- Юнит:
{甲乙丙丁等,...}head-aware ⇒ один батч;元石/元海(различие в голове) ⇒ НЕ серия; L=1 ⇒ не кластер; серия > бюджета ⇒ свои батчи (по рендер-размеру), не дропнута. - Регресс-фикстура из BANK-FULL: 4 годных серии кластеризуются, 15+ ложных — нет (пин против наивного правила).
- Пар-агностичность:
head_final=false/не-CJK ⇒ канал инертен без правки Go. - Голден Ш-1:
terminologyVersionдвинулась;content_hash/wire не-серийных термов — нет.
§2. Тип-пере-вывод (36а) — ПОЛНАЯ ФОРМА · переработана дизайн-критикой (была BROKEN)
(а) Посылка
D39.65: draft-type ненадёжен 12–22%; 2 строгих branch-harm 元石→юаньши, 元海→Юаньхай. Проба §3: сфокусированный ОТДЕЛЬНЫЙ классификатор той же модели чинит 6/6 harm (+~10 п.п.). Посылка верна.
Поток типа (end-to-end): источник = эвристика (c.Types[0], miner_emit.go:197; formantType miner_patterns.go:65). Гейт эмиссии name|place|title (miner_emit.go:303). Ветка транслита: тип роутит conform (terminologist.go:165-170→terminology.go:415-420); миннер сам не транслитерирует (PalladiusConformance только скорит, miner_palladius.go:106). RenderBatch печатает draft-type роли как подсказку (terminology.go:633). Барьер: ParseReply (terminology.go:855-915) читает РОВНО src<TAB>dst, тип игнорирует (анкор §8: «genuine hard wall — правка И render И parse»).
(б) Нужность
Не делать ⇒ реалии транслитерируются («юаньши/Юаньхай») — «жалоба владельца». Защита = ХРУПКОЕ контекст-переопределение роли, УЖЕ провалившееся на 元石/元海 (RAWMATERIAL:162). Нужно.
(в) Форма — выбрано: ОТДЕЛЬНЫЙ сфокусированный классификатор типа ПЕРВИЧНЫМ (DO-роль-проход ДО RenderBatch)
⚠ Первичная форма (инлайн-тип + $0-бэкстоп как пояс) была BROKEN дизайн-критикой: (1) $0-бэкстоп «name/place с многословным строчным dst → демот» ловит НОЛЬ из 2 замеренных harm —
元石→юаньшиОДНО строчное слово (не многословный),元海→ЮаньхайЗАГЛАВНОЕ (мой же тест-приёмки его не трогал); транслит-направление СТРУКТУРНО невидимо $0-экрану без исходного класса. (2) Инлайн эмитит тип ОДНОВРЕМЕННО с dst — поздно, чтобы разбиасить dst ЭТОГО (холодного = несущего) прогона;RenderBatchпраймит роль невернымtype:nameдо dst. (3) Инлайн воссоздаёт ровно диагноз пробы §3: тип ломается КАК «плохо-сделанная побочная колонка при переводе» (PROBES:46) — инлайн кладёт его обратно побочной колонкой. Инвертировано:
- Классификатор ПЕРВИЧНЫМ. Отдельный дешёвый проход-классификатор (та же модель, задача СФОКУСИРОВАНА на классе — единственная проверенная 6/6 форма, PROBES §3) над кандидатами ДО
RenderBatch, свой request-hash-осью как у терминолога/repair (terminologist.go:46). Корректированный тип: (i) роутит conform-ранжирование ЭТОГО холодного прогона (не после факта), (ii) праймитRenderBatchверным типом (роль видитtype:term→ смещена переводить), (iii) роутит эмиссию-режим. Это ЕДИНСТВЕННАЯ форма с путём предотвратить холодный-run harm.titleв промте-классификаторе ОБЯЗАН явно включать work-title (стихи/песни; майнер их типируетterm, нет work-title-каналаminer_patterns.go:194) — пар-данные. - $0-детерминированный экран — ЧЕСТНО ПЕРЕ-СКОУПНУТ. НЕ «harm-пояс» (он провабельно пропускает
元石→юаньшистрочное и元海→Юаньхайзаглавное). Его реальная роль — тёплого-прогона чистка тип-метки: флагname/place, чей dst был ПЕРЕВЕДЁН (многословный) — расхождение метки для ревью, НЕ safety-net при отказе роли. Записано прямо.
COGS: классификатор = отдельный дешёвый проход по банку (батчи, как терминолог) — цена реальна, но это ПРОВЕРЕННАЯ форма. Инлайн-тип (дешевле) остаётся кандидатом на COGS-оптимизацию ТОЛЬКО за живым A/B, воспроизводящим 6/6 harm-фикс до коммита — не принимать на аргументе цены с нефункциональным поясом.
Честный лимит (§7.7): §2 НЕ закрывает всю «слишком китаизированно». Роль АВТОНОМНО сочиняет пиньинь-транслит для КОРРЕКТНО-типированных term-реалий (юаньци/чжэньюань/цзин-ци-шэнь) — вне тип-роутинга. §2 чинит 2 строгих name/place→транслит; авто-транслит реалий — вкус/промпт (§9-Q5).
Альтернативы (отклонены)
- Инлайн-тип + $0-бэкстоп: BROKEN (выше) — оставлен ТОЛЬКО как COGS-кандидат за A/B. — Только $0-экран: ловит 0/2 harm. — Верить draft-типу: 12–22%.
Снапшот-оси
Классификатор — дешёвый проход, своя request-hash-ось (terminologyVersion/роль-марка). Тип на строке фолдится в memory_version (memory.go:415) ⇒ --resnapshot (repin) при смене типа строки.
Тесты приёмки
- Классификатор: harm-набор (元石/元海/蛊室/池塘/灵泉/酒肆) →
term(воспроизвести 6/6 PROBES §3 при стройке — приёмочный порог). - Тип праймит
RenderBatchДО dst (юнит: корректированный тип в wire-блоке); conform роутится по корректированному типу. - $0-экран: явный тест, что он ПРОПУСКАЕТ
元石→юаньши/元海→Юаньхай(честность роли — не safety-net); ловит только переведённый многословный. - Пар-агностичность:
Conformance=nilне падает; work-title в промте (данные).
§3. Decl-шов (27+73) + род «гу» (84) — ПОЛНАЯ ФОРМА
(а) Посылка
D39.65: Decl 142/142 null. D39.60: «майненая сторона не пишет Decl ⇒ 149 авто-строк не пройдут пост-чек». Строка 27 (D39.44 Q4): «сокращённая форма = ПОЛЕ записи; пост-чек обязан принимать». Строка 84 (D39.21): канон neuter без носителя, gender:neuter — тихий no-op. Грунтовано: dstFormPresent (mempostcheck.go:144-154) = базовый dst + declForms; пустой decl ⇒ ложные флаги (research/14 18–36%). genderConstraintNote (memory.go:815-825) без neuter; SeedLint (memseed.go:486) не валидирует род/тип/decl.
(б) Нужность
- Decl: банк-КОНТЕНТ не портится — decl нужен ПОСТ-ЧЕКУ (flagger, не hard-gate
mempostcheck.go:17-28; hard — бэклог 12) ⇒ цена дыры = ШУМ ложных miss. Ургентность СРЕДНЯЯ. Нужно, не эмиссией форм ролью. - Сокращённая форма (27): ложный miss на краткой форме. Нужно (мелко).
- Род neuter (84): без носителя канон неисполним → C3-спойлер-рода (строка 82). Нужно.
(в) Форма
Decl — лёгкий стеммер целевого письма в accepted-set (примитив C), НЕ эмиссия ролью. dstFormPresent + форма от консервативного суффикс-стеммера цели (пар-данные: реестр окончаний ru). ТОТ ЖЕ стеммер = omission-бэкстоп чекеров (строка 25 R4) — строить согласованно. Кормит и voice-checker (memvoice.go:321) — учесть. Оговорка precision/recall (mempostcheck.go:130-143): монотонно (precision↑/recall↓); КОНСЕРВАТИВНЫЙ + замер на labels/ до hard-gate (связка бэклог-12).
Сокращённая форма (27): дешевле всего — в существующий decl.forms[] (0 схемы/миграции, memory_version уже фолдит r.Decl memory.go:417), через тот же dstFormPresent. §9-Q6: «сокращённая» = морфоклип (forms[] хватает) или прозвище/диминутив (тогда отдельное поле / nickname_translation)?
Род neuter (84): genderConstraintNote+ветка neuter→tx.GenderNeuter (новый gender_neuter в injection.txt, эмбед per-target — пар-данные); SeedLint отбраковывает неизвестные gender. Несущая ось = RenderFormatVersion (memory.go:711), НЕ memory_version (значение neuter уже фолдится memory.go:416 — оно не двигается при начале РЕНДЕРА; новые wire-байты ловит RenderFormatVersion) ⇒ --resnapshot едет ТАМ.
Альтернативы (отклонены)
- Терминолог эмитит decl-формы (целевая морфология, дорого/не работа роли). — Полный pymorphy (тяжёл; для рода-гейта строка 82, для accepted-set избыточен). — Отложить Decl (стеммер дёшев+переиспользуется).
Снапшот-оси
Стеммер в dstFormPresent — в хеш ТОЛЬКО при hard-gate; как flagger — вне. neuter → RenderFormatVersion. Краткая форма в forms[] → memory_version.
Тесты приёмки
- Стеммер: «Фан Юаню»→«Фан Юань» без decl; консервативность на
labels/. neuter:gender:neuter→текст;gender:xyz→SeedLintГРОМКО падает; компат §9-Q6: отбраковывать ли уже-сохранённые neuter-сиды.
§4. 36б «второе мнение» — ЧЕСТНОЕ ОСПАРИВАНИЕ (закрытие HOLDS по критике)
(а) Посылка
Строка 5/36б: рецензент другой моделью, несогласия колонкой подписной таблицы.
(б) Нужность — не строить в арке; закрыть с маршрутом в полигон-замер. (Критик подтвердил закрытие.)
- Как ранжировщик ОТКЛОНЁН фактом (D39.46: разрыв до декоя 1.27–1.42 против 0.20 — катастроф-экран, не ранжировщик).
- §2 закрывает главный тип-harm. Резидуал: систематика ОДНОГО СЕМЕЙСТВА (draft+терминолог — оба DeepSeek) + сочинённое (§7.7: 8/67 сочинено вне drafts). НО «эффективный ≠ верный» — юаньци/цзин-ци-шэнь возможно-ВЕРНЫ (стандартные транслиты), т.е. рецензент чинил бы возможно-НЕ-дефект.
- Ценность рецензента ДРУГОГО семейства над §2+со-батч не измерена; форма = полигон-эксперимент.
(в) Форма
Закрыть бэкенд-стройку. Маршрут §9-Q2: полигон-замер нужности рецензента-другого-семейства ДО стройки; переживёт → тонкая колонка наблюдаемости (не гейт). Реальная диспозиция (Q2 роутит КОНКРЕТНЫЙ замер), не пунт.
§5. Резюме-слой памяти (строка 80) — РЕКОМЕНДАЦИЯ · вправлена критикой (WEAKENED)
(а) Посылка
Строка 80 (D25 п.8–9, D30.8, 06-реестр D1): резюме глава→арка→книга + fact-gate. Грунтовано: механизма НЕТ (memoryVersion = approved-глоссарий+voice+address; snapshot.go:391 «summary» аспирационно); D30.8 (лог:373) отложил в Ф2.
(б)+(в) Рекомендация: ЗАКРЫТЬ ФОРМУ ПЛАТНОГО ПРОЗА-СУММАРАЙЗЕРА; строку 80 держать ГЕЙТОМ ПИЛОТА Ф2.5. (Ядро-действие критик подтвердил на 4 основаниях: D1-компаундинг без пост-чека 06-реестр:60 · неизмеренная нужность на zh/ja→ru 06:120 · арх-коллизия mid-run-append memory.go:157-159/D30.8 · неподписанная «опция Б» COGS D30.4.)
⚠ Две пере-натяжки вправлены критиком:
- «Детерминированное дата-состояние свободно от D1» — БЫЛО ЛОЖНО, СНЯТО. Любое АВТОНОМНОЕ заполнение relationship/status-строк = LLM-экстракция (как сегодня dst); а арк/reveal-факты — source-anchored reveal БЕЗ фаерящего ключа (
mempostcheck.go:199-206объявляет класс вне скоупа by construction). ⇒ дата-строка РЕ-ИМПОРТИРУЕТ D1-компаундинг в структурной одежде, ЕСЛИ пилот не спроектирует source-anchored ВЕРИФИКАТОР (целевой индекс пост-reveal-рендеров). «Детерминированное» = ФОРМАТ-фолдимо, НЕ популяция-верифицировано.- «Резюме ортогонально» → «ратифицированная „вторая половина банка" (D39.66 стр.80, 06-реестр §D, D30.8), но НЕИЗМЕРЕННАЯ на этом стеке — отложена в пилот, НЕ ортогональна».
Первый деливерабл пилота Ф2.5: «допускает ли автономная нарратив-состояние-строка детерминированный верификатор, или это D1 со схемой?» — если верификатора нет, дата-строка НЕ безопаснее прозы, которую заменяет. Провабельно НЕ покрытые KWIC+окнами классы (что резюме БЫ несло): source-anchored reveal (mempostcheck.go:199) + арк-колбэки без ключа (sticky сбрасывается на границе главы wave.go:85) — реальны для длинного нарратива, но НЕ измеренный дефект текущей арки. Решение — владельца (§9-Q3).
§6. Дыра эмиссии 蛊 (строка 18) — ПОЛНАЯ ФОРМА · вправлена критикой (WEAKENED)
(а) Посылка
D39.58/строка 18: голова 蛊 не приходит НИ ОДНИМ каналом автономно. Грунтовано (шире, чем черновик): emissionEligible (miner_emit.go:302-313) бьёт (i) тип-гейтом (蛊 бес-типовый V-A) (ii) длиной (runeLen<2). Композиты 蛊师/月光蛊 ТОЖЕ вне эмитируемой дельты — formantType(蛊)="term" (miner_patterns.go:65), тип-гейт term не пускает; живут в кандидатном СЕТЕ (mr.ranked; парити 蛊@1/蛊师@2 miner_parity_test.go:113), до роли — через БАНКНОТУ. Доменная морфема 蛊 УЖЕ детектируется detectFormants/charOverRep (miner_patterns.go:88-148, miner.go:46 FormantMinPartners:3/FormantMinOverRep:15) БЕЗ литерала ⇒ обобщается. «freq 62» — цифра COLDRUN, не грунтована кодом.
(б) Нужность — расщепить
- Центральный термин книги (в заглавии/брифе) — сид-концерн; майнер для ХВОСТА. Автономная нужность одиночной головы — СРЕДНЯЯ (концессия).
- Курс D39.67 = не полагаться на ручной труд.
(в) Форма — вправлено критиком: seed-половину СТРОИТЬ; эмиссию-канал ДЕМОТИРОВАТЬ до полигон-замера + после #10
⚠ Критик (WEAKENED): единственное качество-обоснование канала — «пин головы → согласованные композиты» — НЕ доставлено построенным механизмом и НЕИЗМЕРЕНО (каждый брат-механизм §1/§2 заработал стройку живой пробой; §6 — нет). Ре-скоуп:
- СТРОИТЬ сейчас — только честный дефолт-сид (uncontested): определяющий термин книги сидится (
allow_short:true, D39.50, легитимная курация; чек-лист сида). Покрывает единственный терм, что важен. - ДЕМОТИРОВАТЬ эмиссию-канал до ИЗМЕР-ГЕЙТА: $0/дешёвый полигон-замер «меняет ли эмиссия голой головы РЕНДЕР композитов (蛊师/月光蛊/本命蛊) против не-эмиссии?». Строить ТОЛЬКО если замер покажет эффект — и ПОСЛЕ лендинга #10 (одно-символьный пост-чек), НЕ параллельно: иначе
allow_shortодно-символьный ключ фаерит в КАЖДОМ композите (memory.go:302转-в-转身), а #10 это чинит. - Перед любой стройкой резолвить: (i)
≥K-композитов-гейт СЕЙЧАС само-провальный (term-формант-композиты эмиссия-блокированыminer_emit.go:303→ K=0 для蛊) ИЛИ избыточен сdetectFormants.minPartners(miner.go:46) — переформулировать; (ii) KWIC-дизамбигуация одиночной головы (kwicForterminology.go:285матчит蛊ВНУТРИ каждого композита → грязный контекст-мешок для консолидации).
Диспозиция §9-Q7: заказать ли полигон-замер эффекта эмиссии головы?
Снапшот-оси
Эмиссия — майнер-версия (не двигает memory_version до подписи). Приёмный allow_short фолдится (memory.go:420) ⇒ --resnapshot. Канал за флагом — парити байт-идентична off.
Тесты приёмки (если построится после замера+#10)
- Синтетика
{XY,ZX,WX}(общая одиночная морфема, freq≥порог, ≥K композита) ⇒ эмит; редкая ⇒ нет. Майнер-парити: корпус без общих голов ⇒ байт-идентично.
§7. Кандидаты — вердикт-тройка 1–2 строки
- 36г
{{banknote_format}}(Р5): УЖЕ — парсер в ОДНОМ файле (pipeline/banknote.go:33/74/44/80), проза в ОДНОМ промте (translator-banknote.md; НЕ «каждый»). НИЗКО (гигиена, линты держатconfig/prompt_lint_test.go). Форма: плейсхолдер{{banknote_format}}(закрытый наборrender.go:180+1) ТОЛЬКО в форме, ГЕНЕРИРУЕМОЙ из констант парсера (иначе перенос дубля;bankTypeOKmap → сортировать); worked-example в промте. Оппортунистически, не standalone. - STITCH-ретирование: research/15 (гасить инъекцию после N чанков). НИЗКО — счётчика нет (
priorityRankmemory.go:647-661); ретируемые термы ВЫСОКОточны (не мусор A1/A2). Форма: закрыть до давления на МАСШТАБЕ; реопен-триггер = бюджет ИЛИ измеренный эффект размера-инъекции на качество (A6-lost-in-middle, критик — маргинальное качество-измерение, не только COGS). Дрейф-риск пост-чек-ловится. - Ranked-set: инъективность dst warning-only ПО ДИЗАЙНУ (
memory.go:1104). КАЧЕСТВО закрывает §1 (упорядоченная серия head-aware). Отдельный тип+hard — низко; hard-режим §9-Q4. - tmctl «замена термина с главы N»: механизм ПОСТРОЕН (
repin.go+rebill.go, D39.42 п.5; командtranslate|report|status|export|redrive|seed-lintmain.go:72-87, замены нет). РЕАЛЬНА (операторский поток). Форма: тонкая CLI над построенным; пак операторского протокола (строка 49). - feed_cap: гейт режет лексикографический хвост (
terminologist.go:261-266). МАСШТАБ-гейтед. Форма: свёрнут в §1 (примитив B value-порядок) — строить с §1. - Эмбеддинг A7/D2: закрыть по НУЖНОСТИ, не по детерминизму (критик вправил категор-ошибку). Две формы: (1) hot-path ретривер на промахах — ломает
request_hash-фолд, верно запрещён (Р3,migrate.go:248); (2) РЕГИСТРОВАЯ A7/D2 (06-реестр:32/61/105) — BATCH-TIME, ВНЕ hot-path, low-trust генератор кандидатов, выход human/judge-промоутится во frozen-банк — арх-ИДЕНТИЧНА LLM-терминологу, что уже населяет банк, фолдится вmemory_version(snapshot.go:179-190); НЕ детерминизм-блокирована. Закрыть на ПРЕМИСЕ: exact-match recall на автономном холодном НЕ измерен недостаточным. Реопен = измеренный recall-разрыв на МАСШТАБЕ, лендинг как batch-time лейн (популяция банка), НИКОГДА hot-path. - First-occurrence-тест: ИСПОЛНЕН — §7.7.
§7.7. First-occurrence-тест (санкционированный $0, ИСПОЛНЕН)
Код: eval/bank_autonomy/m_firstocc.py (единицы ДО агрегата; ничьи/сочинённые/катастрофы экранированы). Данные (author≠reviewer): первое-вхождение-в-БАНКНОТУ = retrieval_state.banknote_detail; частотный-топ+ФИНАЛ = parse_bankstop; джойн EXACT; покрытие 67/75.
Результат — гипотеза первенства ОПРОВЕРГНУТА как механизм; роль-консолидатор ПОДТВЕРЖДЁН ПОЗИТИВНО. Разделяющая подвыборка (первое ≠ частота, N=23 не-сочинённых): финал==первое 7, финал==частота 7, финал==иной черновик 9, +6 сочинено. ⇒ роль НЕ первовхожденческий и НЕ частотный выбиратель — переопределяет ОБА контекстом (позитивно подтверждает вывод-по-исключению D39.65 §2). Следствие §1: серийную согласованность нельзя добыть порядком/весами — только со-батчем. Следствие §2: роль АВТОНОМНО сочиняет пиньинь-транслит для корректно-типированных term-реалий (§9-Q5).
Лимиты: первое = в БАНКНОТЕ, не в исходнике; N мал, одна книга/модель/холодный; «эффективный ≠ верный»; 8/75 недостижимы (superseded, полный фолд дороже но $0). Не манифактурю сходимость — тест ОПРОВЕРГ гипотезу.
§8. Самопроверка (author≠reviewer) — ТРИ рубежа
- Грунтинг (6 агентов): утверждения о коде грунтованы
file:line, перепроверены грепом/чтением исходника. Вправлены 3 моих черновых пере-натяжки (композиты蛊师/月光蛊вне дельты §6; банкнота-проза в ОДНОМ промте §7; neuter-осьRenderFormatVersion§3). - Анкор-верификация (отдельный агент): ВСЕ 8 tech-debt-якорей CONFIRMED против живого кода, 0 REFUTED, номера точны.
- Адверсариальная ДИЗАЙН-критика (5 агентов, дефолт «решение неверно»): 2 BROKEN + 3 WEAKENED — ВСЕ вправлены:
- §1 серия-дефиниция BROKEN → head-aware (я ПЕРЕ-ВЕРИФИЦИРОВАЛ на
BANK-FULL.tsvсам: наивное правило = 19 кластеров вкл. блоб с §2-harm + протагонист; head-aware = 4 годных серии). Реконсиляция §1↔§2. - §2 инлайн-тип BROKEN → классификатор ПЕРВИЧНЫМ (проверенная 6/6 форма, DO-роль ДО RenderBatch); $0-экран честно пере-скоупнут (не harm-пояс — провабельно пропускает юаньши/Юаньхай).
- §5 WEAKENED → «дата-состояние свободно от D1» снято (source-anchored reveal без верификатора); «ортогонально» → «ратифицированная вторая половина, неизмеренная».
- §6 WEAKENED → seed-половина строится, эмиссия-канал → измер-гейт + после #10.
- §7 эмбеддинг WEAKENED → закрыт по нужности (не детерминизму — категор-ошибка); STITCH-реопен += качество-триггер.
- §1 серия-дефиниция BROKEN → head-aware (я ПЕРЕ-ВЕРИФИЦИРОВАЛ на
- First-occurrence-тест ИСПОЛНЕН ($0). Пост-хок верификация оркестратора при лендинге — второй рубеж, не замена.
§9. ВОПРОСЫ ВЛАДЕЛЬЦУ (только реально его — вкус/деньги/продукт)
- Q1 (§1, деньги/риск): строить ли автономный канон-пин родового слова МЕЖДУ прогонами (софт-вес авто-соседа)? Напряжение с D39.65 «веса на холодном не трогать». Реком: НЕ сейчас; вернуться на МАСШТАБЕ.
- Q2 (§4, деньги/продукт): заказать ли полигон-замер нужности рецензента-другого-семейства (36б)? Реком: да, ДО стройки; бэкенд-стройку 36б закрыть.
- Q3 (§5, продукт/деньги): подтвердить закрыть проза-суммарайзер; строку 80 гейтом пилота Ф2.5 (первый деливерабл — «допускает ли нарратив-состояние-строка детерминированный верификатор?»)? Резюме в арку качества банка не входит (0 измеренных дефектов, «опция Б» неподписана D30.4).
- Q4 (§7 ranked-set): hard-режим инъективности (сегодня warning-only ПО ДИЗАЙНУ)? Реком: нет; порядок закрыт §1.
- Q5 (§2/§7.7, вкус): желателен ли АВТОНОМНЫЙ пиньинь-транслит-регистр реалий, что роль сочиняет сама (юаньци/чжэньюань/цзин-ци-шэнь — вне §2), или «слишком китаизированно» → промпт-инструкция роли предпочитать смысл? Вкус/промпт, не тип.
- Q6 (§3, продукт): «сокращённая форма» (27) = морфоклип (
decl.forms[]хватает, $0) или прозвище/диминутив (отдельное поле)? + компат: отбраковывать ли уже-сохранённыеgender:neuter-сиды новым seed-lint? - Q7 (§6, деньги): заказать ли $0/дешёвый полигон-замер «меняет ли эмиссия голой головы 蛊 рендер её композитов»? От него — строить ли эмиссию-канал (после #10) или закрыть (seed-половина достаточна).
§10. Сдвигаемые снапшот-оси (сводно)
- Не двигают
memory_version(толькоterminologyVersion/майнер-версия, лог): §1 серия+value-порядок, §2 классификатор+$0-экран, §6 эмиссия головы (если построится), §7 feed_cap-порядок. - Двигают
--resnapshot(точечный repin): §2 смена ТИПА строки (memory_version); §3 neuter (RenderFormatVersion— НЕmemory_version), краткая форма вdecl.forms(memory_version),allow_shortголовы §6 (memory_version); §3 стеммер — в хеш ТОЛЬКО при hard-gate. - Приёмка этапа 2 (по промту): «пара, которой нет в репо, без правки Go» · голден Ш-1 (пере-захват раз, маскированный дифф, вскрытые единицы, вердикт-двиги ВЕРНЫ) · майнер-парити EXACT ·
-raceвесь пакет · мутационные тесты на новые швы.
§11. Итог (в §Бэкенд PROGRESS.md — 3–5 строк)
Дизайн-пак качества банка (этап 1, $0, кода не писал кроме санкц. m_firstocc.py): 6 пунктов → 3 переиспользуемых примитива (A HEAD-AWARE кластер-по-морфеме: §1 серия+§6 голова · B ре-порядок батча: §1+feed_cap · C стеммер-цели: §3 Decl+omission-бэкстоп чекеров) + дата-правки (тип КЛАССИФИКАТОРОМ-ПЕРВИЧНЫМ; род neuter enum+seed-lint, ось RenderFormatVersion). Пройдено 3 рубежа самопроверки (грунтинг+анкор-верификация+5-агентная дизайн-критика): §1 серия-дефиниция и §2 инлайн-тип были BROKEN — переработаны (§1 head-aware, я пере-верифицировал на BANK-FULL сам; §2 классификатор первичным); §5/§6/§7 WEAKENED-правки вправлены. §4 (36б) и §7-эмбеддинг ЗАКРЫТЫ по нужности; §5 (резюме) и §6-эмиссия — гейтнуты замером. First-occurrence-тест ($0): гипотеза первенства ОПРОВЕРГНУТА, роль-консолидатор подтверждён позитивно. 7 вопросов владельцу (§9). СТОП на ратификацию; этап 2 — по релею после чекеров.