textmachine/docs/archive/reports/BANK_QUALITY_DESIGN_2026-08-01.md

51 KiB
Raw Permalink Blame History

Дизайн-пак КАЧЕСТВА БАНКА — этап 1 (ресёрч+дизайн, $0) + этап 2 (стройка)

ОБА ЭТАПА ПРИНЯТЫ И ЗАЛЕНДЕНЫ (оркестратор №9, 02.08.2026, D39.69). Процесс: этап 1 ратифицирован ВЛАДЕЛЬЦЕМ напрямую (без релея оркестратора — его право), этап 2 исполнен той же сессией ДО старта пакета-чекеров (коллизий нет — чекер-сессия не запускалась); отдельного файла-отчёта стройки нет (стройка отчитана записью в PROGRESS §Бэкенд) — компенсировано верификацией оркестратора исполнением. Приёмка: go build/vet/-race 14/14 · майнер-парити EXACT · голден-верификация зелёная · голден сверен независимой маскировкой: 172/172 строки = только 64-hex хеши + 4 токена embedded_version, вердикты/wire/stage_text байт-идентичны · «ровно 4 серии на живом BANK-FULL» воспроизведено оркестратором независимо (копия DetectSeries по TSV: 一…九转·甲乙丙丁等·甲/乙/丙等资质·中/初/高阶; 方源/元石/元海 вне кластеров) · 4-агентное адверсариальное ревью. Расхождения стройки с дизайном: 2 объявлены и приняты как УЛУЧШЕНИЯ (ось neuter = scoped neuter-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 строк)

  1. Скоуп: по каждому механизму — вердикт-тройка (посылка/нужность/форма ≥2 альтернатив) + выбранный дизайн (интерфейсы/данные/снапшот-оси/тесты приёмки); пп.16 полная форма, п.7 кандидаты 12 строки; блок «вопросы владельцу»; итог 35 строк в docs/PROGRESS.md §Бэкенд.
  2. Кода не пишу (кроме eval/bank_autonomy/m_firstocc.py, $0 на артефактах coldrun-a).
  3. Деньги — НОЛЬ: платных вызовов нет, --resnapshot не запускаю, пробы не докупаю.
  4. Зона: read-only по backend/; пишу только отчёт + разрешённую тест-папку. Пост-чек #10 однознаковых ключей строит параллельная чекер-сессия — НЕ проектирую заново.
  5. Стоп-точки: СТОП в конце этапа 1; этап 2 — по релею оркестратора.
  6. Мандат: ревизия посылок; замер против посылки = СТОП+вопрос владельцу; утверждения о коде грунтованы file:line+греп; самопроверка исполнением (грунтинг + анкор-верификация + адверсариальная дизайн-критика — §8).
  7. Универсальность: решения на уровне чистого арх-бэкенда; 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 критика):

  1. Отношение «серия» HEAD-AWARE. Серия = ≥3 поверхностей РАВНОЙ длины, делящих общую ГОЛОВУ (родовое слово) и различающихся ТОЛЬКО в позиции МОДИФИКАТОРА (не головы). Сторона головы = пар-данные (langpack-булев head_final): для zh/ja голова — трейлинг-руны, различающаяся руна обязана быть НЕ-финальной. Исключить L=1. Проверено мной на BANK-FULL.tsv: head-aware даёт РОВНО 4 годных серии — 一…九转, 中/初/高阶, 甲乙丙丁等, 甲/乙/丙等资质 — и корректно роняет 元/蛊/酒-семьи (различие в ГОЛОВЕ 石/海/室/师 ⇒ РАЗНЫЕ сущности), протагониста, вырожденные одиночки. Реконсиляция §1↔§2: 元石/元海 различаются в ГОЛОВЕ ⇒ НЕ серия — они принадлежат §2 (тип-harm), не §1. Пример 元石↔元海 из чернового §1 УДАЛЁН.
  2. Батчинг. Сорт (seriesKey, key) (серия смежна) + не резать серию границей батча. Кап оверсайза — по РЕНДЕР-РАЗМЕРУ, зеркаля Batch.maxRunes (terminologist.go:59 batchRunes=6000), НЕ по числу членов N (критика: под-N серия с широким KWIC переполнит бюджет; терминолог уже рассуждает 8063 ток у cap, PROBES §1). Серия крупнее бюджета → свои батчи, не роняется.
  3. 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 ненадёжен 1222%; 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-170terminology.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-типу: 1222%.

Снапшот-оси

Классификатор — дешёвый проход, своя 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 1836%). 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+ветка neutertx.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:xyzSeedLint ГРОМКО падает; компат §9-Q6: отбраковывать ли уже-сохранённые neuter-сиды.

§4. 36б «второе мнение» — ЧЕСТНОЕ ОСПАРИВАНИЕ (закрытие HOLDS по критике)

(а) Посылка

Строка 5/36б: рецензент другой моделью, несогласия колонкой подписной таблицы.

(б) Нужность — не строить в арке; закрыть с маршрутом в полигон-замер. (Критик подтвердил закрытие.)

  • Как ранжировщик ОТКЛОНЁН фактом (D39.46: разрыв до декоя 1.271.42 против 0.20 — катастроф-экран, не ранжировщик).
  • §2 закрывает главный тип-harm. Резидуал: систематика ОДНОГО СЕМЕЙСТВА (draft+терминолог — оба DeepSeek) + сочинённое (§7.7: 8/67 сочинено вне drafts). НО «эффективный ≠ верный» — юаньци/цзин-ци-шэнь возможно-ВЕРНЫ (стандартные транслиты), т.е. рецензент чинил бы возможно-НЕ-дефект.
  • Ценность рецензента ДРУГОГО семейства над §2+со-батч не измерена; форма = полигон-эксперимент.

(в) Форма

Закрыть бэкенд-стройку. Маршрут §9-Q2: полигон-замер нужности рецензента-другого-семейства ДО стройки; переживёт → тонкая колонка наблюдаемости (не гейт). Реальная диспозиция (Q2 роутит КОНКРЕТНЫЙ замер), не пунт.


§5. Резюме-слой памяти (строка 80) — РЕКОМЕНДАЦИЯ · вправлена критикой (WEAKENED)

(а) Посылка

Строка 80 (D25 п.89, 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.)

Две пере-натяжки вправлены критиком:

  1. «Детерминированное дата-состояние свободно от D1» — БЫЛО ЛОЖНО, СНЯТО. Любое АВТОНОМНОЕ заполнение relationship/status-строк = LLM-экстракция (как сегодня dst); а арк/reveal-факты — source-anchored reveal БЕЗ фаерящего ключа (mempostcheck.go:199-206 объявляет класс вне скоупа by construction). ⇒ дата-строка РЕ-ИМПОРТИРУЕТ D1-компаундинг в структурной одежде, ЕСЛИ пилот не спроектирует source-anchored ВЕРИФИКАТОР (целевой индекс пост-reveal-рендеров). «Детерминированное» = ФОРМАТ-фолдимо, НЕ популяция-верифицировано.
  2. «Резюме ортогонально» → «ратифицированная „вторая половина банка" (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-дизамбигуация одиночной головы (kwicFor terminology.go:285 матчит ВНУТРИ каждого композита → грязный контекст-мешок для консолидации).

Диспозиция §9-Q7: заказать ли полигон-замер эффекта эмиссии головы?

Снапшот-оси

Эмиссия — майнер-версия (не двигает memory_version до подписи). Приёмный allow_short фолдится (memory.go:420) ⇒ --resnapshot. Канал за флагом — парити байт-идентична off.

Тесты приёмки (если построится после замера+#10)

  • Синтетика {XY,ZX,WX} (общая одиночная морфема, freq≥порог, ≥K композита) ⇒ эмит; редкая ⇒ нет. Майнер-парити: корпус без общих голов ⇒ байт-идентично.

§7. Кандидаты — вердикт-тройка 12 строки

  • 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) ТОЛЬКО в форме, ГЕНЕРИРУЕМОЙ из констант парсера (иначе перенос дубля; bankTypeOK map → сортировать); worked-example в промте. Оппортунистически, не standalone.
  • STITCH-ретирование: research/15 (гасить инъекцию после N чанков). НИЗКО — счётчика нет (priorityRank memory.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-lint main.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) — ТРИ рубежа

  1. Грунтинг (6 агентов): утверждения о коде грунтованы file:line, перепроверены грепом/чтением исходника. Вправлены 3 моих черновых пере-натяжки (композиты 蛊师/月光蛊 вне дельты §6; банкнота-проза в ОДНОМ промте §7; neuter-ось RenderFormatVersion §3).
  2. Анкор-верификация (отдельный агент): ВСЕ 8 tech-debt-якорей CONFIRMED против живого кода, 0 REFUTED, номера точны.
  3. Адверсариальная ДИЗАЙН-критика (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-реопен += качество-триггер.
  4. 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 — 35 строк)

Дизайн-пак качества банка (этап 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 — по релею после чекеров.