Qualify the header-length divergence with the separator it needs, and name the helper the duplicated inline actually lacked
This commit is contained in:
parent
d6dfc4958c
commit
e342d51bcc
3 changed files with 6 additions and 5 deletions
|
|
@ -24,8 +24,8 @@
|
|||
свойства, свойства не проверяет.
|
||||
|
||||
**Что покупает твой результат.** (1) Следующая правка этих швов падает ГРОМКО, а не молча — это и есть
|
||||
цена, которую сегодня платит разработка. (2) Дизайн перекроя структуры глав (идёт параллельно, чужой
|
||||
сессией) садится на измеренную землю, а не на прозу. (3) Ни один байт провода, снапшота, промта и ключа
|
||||
цена, которую сегодня платит разработка. (2) Дизайн перекроя структуры глав (пойдёт параллельно, отдельной сессией;
|
||||
на момент выдачи этого пака она ещё не запущена) садится на измеренную землю, а не на прозу. (3) Ни один байт провода, снапшота, промта и ключа
|
||||
манифеста не двигается: пак **$0** и не перекупает ни одной оплаченной книги.
|
||||
|
||||
## 2. Зона и git
|
||||
|
|
|
|||
|
|
@ -287,8 +287,8 @@
|
|||
| **— ТЕХДОЛГ БЭКЕНДА: разбор research/33 (D39.224) —** | | | | | |
|
||||
| 344 | ⛔ **ШОВ «ЗАГОЛОВОК ГЛАВЫ» НЕ УТВЕРЖДАЕТСЯ НИЧЕМ: ТРИ МУТАНТА ПЕРЕЖИВАЮТ ПОЛНУЮ БАТАРЕЮ, И ПОД ОДНИМ ГОТОВАЯ КНИГА ТЕРЯЕТ ВСЕ НАЗВАНИЯ ГЛАВ.** `chunk/chunker.go:145` кладёт заголовок в `chapterChunks[0]`, `pipeline/manifest.go:664` восстанавливает его по `ChunkIdx == 0` на read-пути (так читается артефакт `tmctl export`, который берёт платформа), `pipeline/export.go:176/342/343` берёт `u.Members[0].Heading`; боевой код КОРРЕКТЕН — не защищено ровно РАСПОЛОЖЕНИЕ заголовка. ⚠ Мутанты живут в ДВУХ файлах, не в одном: M1 (`manifest.go:664` → `if i == 0`, заголовок на первый чанк каждого ЮНИТА) и M2 (`→ if false`) — в манифесте, M5 (заголовок на последний чанк) — в `chunker.go:145`. Замер 07.09: M2 и M5 посажены на копии HEAD `e989068` и прогнаны полной батареей — каждый **18 ok / 0 FAIL, exit 0**; M1 — ⟲ research/33. Под M2 `bookbuild.go:526-528` подставляет номер при пустом `Heading`, и готовая книга выходит с «1», «2» вместо «Глава 1», «Глава 2». Причина — вырожденные фикстуры двух тестов, чьи имена обещают эту гарантию: `chunker_heading_test.go:101` даёт короткие главы и утверждает только `chunks[0]`; `contractblockers_test.go:294` — ja→ru книга с русским текстом через `\f`, правило заголовка не матчится ⇒ `Heading` пуст с обеих сторон и сравнение вырождается в `"" == ""`. В каталоге мутаций `internal/chunk/chunker.go` — **0** записей из 211 (контроль: `bankdecisions.go` 20). Сосед по шву — строка **201**; ⚠ сосед по СИМПТОМУ — строка **160**: вычитка боевого перевода нашла потерянный заголовок у 6 глав из 17 (`D39.190` п.2), причина там другая, но читателю видно то же. Лечение $0 и снапшот-нейтрально, боевой код не трогается: обеим фикстурам главу, которая реально режется, и правило заголовка zh-ru · утверждение «не-первый чанк главы несёт пустой `Heading`» · M1/M2/M5 в `mutations.json` | бэкенд | скоро (шаг 0 research/33 — параллельно дизайн-паку 161, ДО пака стройки) | невырожденные фикстуры + утверждение о не-первом чанке + три записи каталога | research/33 Д10/Д11, D39.208 п.5 |
|
||||
| 345 | ⛔ **НОВАЯ ПАРА МОЖЕТ ОТВЕЧАТЬ СВОИМИ СЛОВАМИ КЛАССОВ, И ВСЯ БАТАРЕЯ ЗЕЛЁНАЯ — словари классификатора закрыты в Go и прозой промта.** `terminology/classify.go:18` `Types`, `:26` `CandidateTypes`, `:50` `Genders`; третья копия — `pipeline/banknote.go:80` `bankTypeOK` (не упомянут ни одним тестом); те же слова прозой в `prompts/zh-ru/classifier.md`. Леджер меток промтов смотрит на одну пару (`promptlabel_test.go:53` `const pair = "zh-ru"`), а off-vocabulary ответ модели — только `Log.WarnContext` (`terminologist.go:603`), отказа нет. ⟲ research/33: подложенная `prompts/ja-ru/classifier.md` с локализованными словами классов (人名 · 地名 · 称号 · 用語) проходит батарею БЕЗ единого шага автора; цена — молчаливая потеря качества на второй паре (тип неверен 12–22 %, `name/place` форсирует транслитерацию — D39.65). Бьёт прямо по цели №2: дежурный ревью-вопрос «заработает ли пара без правки Go» получает ответ «да, и молча неверно». Лечение $0: линт КАНОНИЧЕСКОЙ формы промта (комментарии снять — наивная версия ложно-зелёная, слова есть в HTML-шапке) в существующем `internal/config/prompt_lint_test.go` (89 строк; сам объявляет целью «ja-ru or en-ru pack authored by copying the zh-ru one») + свести `bankTypeOK` к `terminology.CandidateTypes` (одна строка импорта, уже экспортирован). ⛔ Обратная дорога (словарь в данные) двигает `prompt_sha256`/`RequestHash`/`classifierVersion` и ЗАПРЕЩЕНА — D39.194 п.9 и **D39.195 п.5** (⚠ испр. 07.09: research/33 и первая редакция этой строки ссылались на D39.199 п.5 — там закрытие строки 264, не запрет) | бэкенд | скоро (шаг 0 research/33, $0) | линт в `prompt_lint_test.go` + одна строка импорта | research/33 Д1 |
|
||||
| 346 | ⛔ **ПРАВИЛО ЗАГОЛОВКА РАЗЪЕХАЛОСЬ ПО ТРЁМ ПРЕДИКАТАМ, И «第零章» ЛОМАЕТ ПРОЛОГ — две половины с РАЗНОЙ ценой.** Страж длины живёт только в ингесте (`chunk/ingest.go:307` `chapterHeaderMaxRunes = 60`, применён `:323`; в `chunker.go` `RuneCountInString` — 0 хитов), осмысленность номера — только в чанкере (`chunk/chunker.go:316` `if !any || v <= 0`). Воспроизведено исполнением 07.09 (выброшенная проба на копии дерева): `第零章:序幕` ингест режет главой, а чанкер заголовок НЕ снимает — `heading=""`, сырой CJK-маркер уезжает модели; `parseSectionNumeral` на `零`/`0`/`〇` даёт `0,false` (контроль: `一`=1, `十二`=12); номера расходятся (`第一章` = `Chapter 2` при «Глава 1»); 84-рунный заголовок: ингест `false`, чанкер `ok=true` (контроль на 12 рунах сходится). Перекрёстного теста нет ни в одном из 97 тестов `internal/chunk`. **(а) $0 СЕЙЧАС — пин ИЗВЕСТНОГО расхождения, а не паритет:** красный тест в `main` не ложится (`Makefile:58` `battery: build vet fmt lint test`), скип — класс D39.208; поэтому тест утверждает, что на `第零章` и на 61–84-рунной строке ингест и чанкер СЕГОДНЯ расходятся, назван этой строкой и краснеет ровно тогда, когда приземлится фикс (б), заставляя фиксера его перевернуть. Дизайн-пак 161 §4.5 паритет-тест ОПИСЫВАЕТ, пишет его пак стройки — пин (а) этому не мешает. **(б) В ОКНО ПЕРЕНАРЕЗКИ:** сам фикс меняет ТЕКСТ чанка ⇒ бампает `chunkerVersion` ⇒ снапшот обеих волн (`render.go:55-58` — «a deliberate re-translation»); отдельным актом он платит ту самую перепокупку, которую отменяет. ⚠ Ось «обязательность юнита» — НЕ трогать: носитель строка **303** (⚠ испр. 07.09: research/33 приписывал её `D39.207`, в теле ноты этого нет — греп по предмету 0 при 23 строках тела) | бэкенд | скоро для (а); (б) — в окне перекроя (шаг 3) | (а) пин расхождения · (б) сведение двух предикатов к ингестовским стражам внутри пака перекроя | research/33 Д3, research/27 §6 |
|
||||
| 346 | ⛔ **ПРАВИЛО ЗАГОЛОВКА РАЗЪЕХАЛОСЬ ПО ТРЁМ ПРЕДИКАТАМ, И «第零章» ЛОМАЕТ ПРОЛОГ — две половины с РАЗНОЙ ценой.** Страж длины живёт только в ингесте (`chunk/ingest.go:307` `chapterHeaderMaxRunes = 60`, применён `:323`; в `chunker.go` `RuneCountInString` — 0 хитов), осмысленность номера — только в чанкере (`chunk/chunker.go:316` `if !any || v <= 0`). Воспроизведено исполнением 07.09 (выброшенная проба на копии дерева): `第零章:序幕` ингест режет главой, а чанкер заголовок НЕ снимает — `heading=""`, сырой CJK-маркер уезжает модели; `parseSectionNumeral` на `零`/`0`/`〇` даёт `0,false` (контроль: `一`=1, `十二`=12); номера расходятся (`第一章` = `Chapter 2` при «Глава 1»); 84-рунный заголовок: ингест `false`, чанкер `ok=true`. ⚠ **Испр. 07.09 — без этой оговорки строка читается как ЛОЖНАЯ:** расхождение живёт ТОЛЬКО у заголовка С СЕПАРАТОРОМ после юнита (`第四章:…`); без сепаратора оба предиката дают `false` на любой длине, потому что такую строку отвергают и `isHeaderSeparator` ингеста, и `matchHeaderLine` чанкера. Пере-снято оркестратором на копии `d6dfc49`: с сепаратором 59 и 60 рун — оба `true`; 61 и 84 — ингест `false` при чанкере `ok=true n=4`; без сепаратора 12/55/59/60/61/84 — `false`/`false` во всех шести. Граница ровно `chapterHeaderMaxRunes` = 60. Перекрёстного теста нет ни в одном из 97 тестов `internal/chunk`. **(а) $0 СЕЙЧАС — пин ИЗВЕСТНОГО расхождения, а не паритет:** красный тест в `main` не ложится (`Makefile:58` `battery: build vet fmt lint test`), скип — класс D39.208; поэтому тест утверждает, что на `第零章` и на 61–84-рунной строке ингест и чанкер СЕГОДНЯ расходятся, назван этой строкой и краснеет ровно тогда, когда приземлится фикс (б), заставляя фиксера его перевернуть. Дизайн-пак 161 §4.5 паритет-тест ОПИСЫВАЕТ, пишет его пак стройки — пин (а) этому не мешает. **(б) В ОКНО ПЕРЕНАРЕЗКИ:** сам фикс меняет ТЕКСТ чанка ⇒ бампает `chunkerVersion` ⇒ снапшот обеих волн (`render.go:55-58` — «a deliberate re-translation»); отдельным актом он платит ту самую перепокупку, которую отменяет. ⚠ Ось «обязательность юнита» — НЕ трогать: носитель строка **303** (⚠ испр. 07.09: research/33 приписывал её `D39.207`, в теле ноты этого нет — греп по предмету 0 при 23 строках тела) | бэкенд | скоро для (а); (б) — в окне перекроя (шаг 3) | (а) пин расхождения · (б) сведение двух предикатов к ингестовским стражам внутри пака перекроя | research/33 Д3, research/27 §6 |
|
||||
| 347 | **ПАР-ДАННЫЕ НЕЛЬЗЯ ЗАВЕЗТИ ПО ЧАСТЯМ: манифест требует ≥1 канал, и транслитерационный канал зашит в китайскую форму.** `lang/langpack.go:632` — «manifest declares no channel — omit the file to ship all channels, or list at least one»; каналов два и они закрыты в Go (`source-morphology`, `transliteration`, `:108-114`), а `validate()` при `transliteration` требует ПОИМЁННО пиньинь-категории (`:521-527`); морфологический канал просит общие таблицы (`:507-516`) и в китайскую форму не зашит. Отказ жёсткий: при `gates.terminology.enabled` и `pack == nil` прогон отказывает `RefusalBadConfig` (`pipeline/runner.go:349`), а в боевом `pipeline-c1.yaml:151` гейт включён ⇒ вторая пара выбирает между фиктивными данными китайской формы и прогоном БЕЗ банка терминов (продуктовая цель №1). ⚠ **Триггер — первая новая ИСХОДНАЯ пара, и он РАНЬШЕ строки 115:** манифест лежит в `<root>/<src>/` и хешируется языком-ИСТОЧНИКОМ (`langpack.go:252`), а 115 — про новую ЦЕЛЬ; ближайшая исходная пара в трекере — ja→ru (строка **81**), цель у неё ru. ⚠ **Пять строк снимают отказ, но банка на не-Han источнике НЕ дают** — детектора нет (строка **35**: en-детектор не существует, ja с zh-таблицами активно неверен); заказывать вместе, иначе строка обещает больше, чем покупает. Сегодня не оплачено ни разу: 0 `manifest.txt` в `configs/`, каталог пары один. ⚠ D39.64 П4 ратифицировала ОБРАТНОЕ намерение («источник без пиньинь-морфологии грузится без Palladius-файлов») — строка `list at least one` не дошла шаг до собственной цели | бэкенд | когда-нибудь (вход пака второй пары; триггер общий со строками 81 и 35) | разрешение нулевого числа каналов + решение по форме каналов | research/33 Д7, D39.64 П4 |
|
||||
| 348 | ⛔ **ШАПКИ АРМ-КОНФИГОВ ОБЪЯВЛЯЮТ «ЕДИНСТВЕННОЕ ИЗМЕНЕНИЕ», А АРМ РАСХОДИТСЯ С БОЕВЫМ НА ДВА ДЕСЯТКА КЛЮЧЕЙ — включая снятый банк терминов; лжёт и сам гейт.** Замер 07.09, две независимые методики: голый дифф не-комментарных строк против `configs/pipeline-c1.yaml` — glm **26** / mistral **28** / deepseek-pro **23**; тот же дифф со снятыми пустыми и хвостовыми комментариями — **18/18/15** (КОНТРОЛЬ обеих: c1 против себя = 0). Популяции разные, вывод один: во всех трёх армах `banknote:` 0, `terminology:` 0, `contrast_path` 0, `classify_types` 0, `target_script` 0, `prompt_override` 0 — при ровно ОДНОМ YAML-ключе каждого имени в c1 (⚠ испр. 07.09: прежние «1/1/3/1/1/3» — подстрочный счёт, для этого вопроса негодный). ⚠ **Носителей лжи ТРИ, и они разной силы.** (1) Шапки армов («копия боевого C1 с ЕДИНСТВЕННЫМ изменением») — ложны буквально. (2) `internal/config/echo_mine_test.go:227/234` `TestSwapArmConfigs` обещает в доке «swaps ONLY the editor model … only the editor differs», а утверждает лишь модель редактора, `few_shot` и `rate_limit` — гейт, который назвал себя сторожем этого свойства и им не является (класс D39.208 п.5). (3) `docs/STACK.md:12` («резерв; флип = один арм-конфиг») буквально ВЕРНА — флип и правда подмена одного файла — и подлежит не правке, а дописке о цене подмены. Дрейф датирован: `b8154cd` (04.09) дал c1 +64 строки банкового контура, а всем трём армам — только `prompt_version`. ⚠ **Риск ЛАТЕНТНЫЙ, а не текущий:** деплой прибит к боевому (`platform/deploy/README.md:216`), кодового пути выбора арма нет, армы читают только тесты, платные прогоны идут по книго-локальным конфигам вне git. Цена наступает при ФЛИПЕ деплоя на арм, и она денежная: платформа берёт за банк плоские $2.00 по c1 (`platform/internal/ingest/manifest.go`), а движок без `contrast_path` возвращается до построения кандидатов (строка **251**) ⇒ пользователю выставят $2 за банк, которого никто не майнил. ⚠ **Наследования конфигов НЕТ — испр. 07.09:** research/33 §7.13 и первая редакция этой строки называли его ратифицированным `D39.23` п.(г); в теле ноты (г) — слой пар-КАЛИБРОВОК (`configs/pairs/<пара>`, fertility/len_ratio_bounds, промпт-резолв конвенцией), а в `internal/config/pipeline.go` `extends|inherit|base_config` — 2 хита, оба про ручку, которая «deliberately NOT inherited». Лечение — не «подтянуть наследованием», а пере-снять три арма копией c1 со сменённым редактором и заставить `TestSwapArmConfigs` утверждать «арм == c1 вне блока редактора» | доки + бэкенд | скоро (до любого флипа деплоя на арм) | пере-снятые армы + гейт равенства + дописка в STACK | research/33 §7.13, строка 251 |
|
||||
| 348 | ⛔ **ШАПКИ АРМ-КОНФИГОВ ОБЪЯВЛЯЮТ «ЕДИНСТВЕННОЕ ИЗМЕНЕНИЕ», А АРМ РАСХОДИТСЯ С БОЕВЫМ НА ДВА ДЕСЯТКА КЛЮЧЕЙ — включая снятый банк терминов; лжёт и сам гейт.** Замер 07.09, две независимые методики: голый дифф не-комментарных строк против `configs/pipeline-c1.yaml` — glm **26** / mistral **28** / deepseek-pro **23**; тот же дифф со снятыми пустыми и хвостовыми комментариями — **18/18/15** (КОНТРОЛЬ обеих: c1 против себя = 0). Популяции разные, вывод один: во всех трёх армах `banknote:` 0, `terminology:` 0, `contrast_path` 0, `classify_types` 0, `target_script` 0, `prompt_override` 0 — при ровно ОДНОМ YAML-ключе каждого имени в c1 (⚠ испр. 07.09: прежние «1/1/3/1/1/3» — подстрочный счёт, для этого вопроса негодный). ⚠ **Носителей лжи ТРИ, и они разной силы.** (1) Шапки армов («копия боевого C1 с ЕДИНСТВЕННЫМ изменением») — ложны буквально. (2) `internal/config/echo_mine_test.go:227/234` `TestSwapArmConfigs` обещает в доке «swaps ONLY the editor model … only the editor differs», а утверждает лишь модель редактора, `few_shot` и `rate_limit` — гейт, который назвал себя сторожем этого свойства и им не является (класс D39.208 п.5). (3) `docs/STACK.md:12` («резерв; флип = один арм-конфиг») буквально ВЕРНА — флип и правда подмена одного файла — и подлежит не правке, а дописке о цене подмены. Дрейф датирован: `b8154cd` (04.09) дал c1 +64 строки банкового контура, а всем трём армам — только `prompt_version`. ⚠ **Риск ЛАТЕНТНЫЙ, а не текущий:** деплой прибит к боевому (`platform/deploy/README.md:216`), кодового пути выбора арма нет, армы читают только тесты, платные прогоны идут по книго-локальным конфигам вне git. Цена наступает при ФЛИПЕ деплоя на арм, и она денежная: платформа берёт за банк плоские $2.00 по c1 (`platform/internal/ingest/manifest.go`), а движок без `contrast_path` возвращается до построения кандидатов (строка **251**) ⇒ пользователю выставят $2 за банк, которого никто не майнил. ⚠ **Наследования конфигов НЕТ — испр. 07.09:** research/33 §7.13 и первая редакция этой строки называли его ратифицированным `D39.23` п.(г); в теле ноты (г) — слой пар-КАЛИБРОВОК (`configs/pairs/<пара>`, fertility/len_ratio_bounds, промпт-резолв конвенцией), а в `internal/config/pipeline.go` `extends|inherit|base_config` — 2 хита, оба про ручку, которая «deliberately NOT inherited». Лечение — не «подтянуть наследованием», а пере-снять три арма копией c1 со сменённым редактором и заставить `TestSwapArmConfigs` утверждать «арм == c1 вне блока редактора». ⚠ **Названная цена пере-снятия (07.09):** пере-снятый арм получает банковый контур и банкнотный `prompt_override` черновика ⇒ снапшот ПРОГОНА ПО АРМУ становится другим, и удерживаемый для сравнения арм-прогон не резюмится, а пере-покупается. Оплаченных книг это не касается — деплой прибит к боевому (`platform/deploy/README.md:216`), кодового пути выбора арма нет | доки + бэкенд | скоро (до любого флипа деплоя на арм) | пере-снятые армы + гейт равенства + дописка в STACK | research/33 §7.13, строка 251 |
|
||||
| 349 | **ОСТАТКИ ОПРОВЕРГАТЕЛЕЙ research/33 — мелочи одной строкой, носителей не было.** (а) `pipeline/snapshotdiff.go:157-159` при движении одного `memory_version` дописывает оператору причину, которой НЕ проверял («the auto-bank grew between purchases»). (б) `pipeline/snapshot.go:206-218` — протухшие клаузы про «последовательный драйвер», драйвер один (`bookrun.go:242`). (в) `backend/README.md` называет `export.go`/`quality.go`/`status.go` read-only проекциями, а `status.go:1174` внутри `Runner.Redrive` (`:1047`) зовёт `Store.ResetChunkStages` (`store/chunkstatus.go:161`) — единственный деструктивный путь движка (сверено оркестратором 07.09); вторая половина находки — «`status_test.go:376` обещает замок, который в одиночку не держит» — со слов агента research/33, не пере-проверена. (г) `tracedCtx()` во флаг-фикстуре. ⚠ Заявленный мутационный пробел по `CacheWritePerM` СУЖЕН: ненулевая фикстура уже есть на уровне юнита (`ledger/pricing_test.go:20` `CacheWritePerM: 2.5`), пробел — если он есть — уровня пайплайна, где 25 YAML-фикстур `internal/pipeline/*_test.go` пишут явный 0, а ненулевых там 0 (счёт 07.09). Всё снапшот-нейтрально, берётся попутно | бэкенд | когда-нибудь (попутно с касанием этих файлов) | правки на месте | research/33 §7.7/7.11/7.12/7.14/7.17 |
|
||||
| 350 | **РЕФАКТОРИНГ ОБЛЕГЧЕНИЯ ВЕДЕНИЯ (санкция владельца 07.09) — снапшот-нейтрально, и заказ здесь «решить», а не «удалить».** Вызовов вне определения ноль у шести функций (греп 07.09; КОНТРОЛЬ — `SplitChunks` 34 живых вызова): `obs.SafeGo`, `text.TokenizeCyrillic`, `CheapGateResult.UnitScaleHard`/`UnitScaleSoft`, `Bank.Voices()`, `Bank.Pairs()`. ⚠ **Четыре из шести стоят НАМЕРЕННО, и слепое удаление снимет намеренное:** `UnitScaleHard/Soft` сами называют, кого ждут — `checks/cheapgates.go:155-156` «for the report and a future hard gate», то есть строку **12**; `TokenizeCyrillic` — образец паттерна value-default, на который ссылаются `checks/sanitizer.go:21` и `:197`; `SafeGo` — намеренный контраст к `obs/panic.go`, названный решением `pipeline/waverun.go:405` («NOT obs.SafeGo»), и его удаление повесит два комментария в воздухе — класс строки **299**; `Voices`/`Pairs` (`membank/memory.go:371-376` «frozen for the job») ждут потребителя, которого держит строка **13б**. ⇒ по каждой ОДИН исход с объявлением в отчёте: удалить ЛИБО назвать причину жизни в комментарии. Плюс «последняя стадия» дважды одинаковым инлайном (`pipeline/export.go` и `quality.go`) при готовом `finalStageWave()` (`snapshot.go:247`; вызовов `.finalStageWave()` 13 — 10 прод и 3 теста, ⚠ испр. 07.09: прежние «20» считали и комментарии) и словарь родов в четырёх носителях (`membank/memory.go`, `membank/memseed.go`, `terminology/classify.go:50`, промт), где текст собственной ошибки врёт о принимаемом множестве. ⛔ Границы санкции: НЕ дробить `internal/pipeline` и НЕ переписывать `Runner` (`12-go-style-notes.md` §1, D39.23), ничего, что двигает снапшот / хеш запроса / ключ манифеста. ⚠ Адреса сняты research/33 на `e69902a`, а лендинг 07.09 тронул `memseed.go` и `export.go` — пере-снимать командой, не по тексту | бэкенд | когда-нибудь | попутный проход с батареей + объявление исхода по каждой функции | research/33 §7.1, санкция владельца 07.09 |
|
||||
| 350 | **РЕФАКТОРИНГ ОБЛЕГЧЕНИЯ ВЕДЕНИЯ (санкция владельца 07.09) — снапшот-нейтрально, и заказ здесь «решить», а не «удалить».** Вызовов вне определения ноль у шести функций (греп 07.09; КОНТРОЛЬ — `SplitChunks` 34 живых вызова): `obs.SafeGo`, `text.TokenizeCyrillic`, `CheapGateResult.UnitScaleHard`/`UnitScaleSoft`, `Bank.Voices()`, `Bank.Pairs()`. ⚠ **Четыре из шести стоят НАМЕРЕННО, и слепое удаление снимет намеренное:** `UnitScaleHard/Soft` сами называют, кого ждут — `checks/cheapgates.go:155-156` «for the report and a future hard gate», то есть строку **12**; `TokenizeCyrillic` — образец паттерна value-default, на который ссылаются `checks/sanitizer.go:21` и `:197`; `SafeGo` — намеренный контраст к `obs/panic.go`, названный решением `pipeline/waverun.go:405` («NOT obs.SafeGo»), и его удаление повесит два комментария в воздухе — класс строки **299**; `Voices`/`Pairs` (`membank/memory.go:371-376` «frozen for the job») ждут потребителя, которого держит строка **13б**. ⇒ по каждой ОДИН исход с объявлением в отчёте: удалить ЛИБО назвать причину жизни в комментарии. Плюс ИМЯ последней стадии дважды одинаковым инлайном — `r.Pipeline.Stages[n-1].Name` в `pipeline/export.go:283` и `quality.go:342` (адреса на `d6dfc49`). ⚠ **Испр. 07.09: и research/33 §7.1, и первая редакция этой строки называли здесь «готовый `finalStageWave()`» — это ДРУГАЯ функция**: она возвращает ВОЛНУ (`snapshot.go:247`, вызовов 13 — 10 прод и 3 теста), а хелпера для ИМЕНИ не существовало вовсе, и «при готовом хелпере» читалось как «работа уже сделана» и словарь родов в четырёх носителях (`membank/memory.go`, `membank/memseed.go`, `terminology/classify.go:50`, промт), где текст собственной ошибки врёт о принимаемом множестве. ⛔ Границы санкции: НЕ дробить `internal/pipeline` и НЕ переписывать `Runner` (`12-go-style-notes.md` §1, D39.23), ничего, что двигает снапшот / хеш запроса / ключ манифеста. ⚠ Адреса сняты research/33 на `e69902a`, а лендинг 07.09 тронул `memseed.go` и `export.go` — пере-снимать командой, не по тексту | бэкенд | когда-нибудь | попутный проход с батареей + объявление исхода по каждой функции | research/33 §7.1, санкция владельца 07.09 |
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
> ратифицировано `D39.23` п.(г) (§7.13) · запрет двигать `classifierVersion` — `D39.195` п.5, не `D39.199` п.5
|
||||
> (Д1) · ось «обязательность юнита» не в `D39.207`, а в строке 303 (Д3) · триггер Д7 — новая ИСХОДНАЯ пара,
|
||||
> не строка 115.
|
||||
> ⚠ **Дописка 07.09, воспроизведением:** §7.1 «последняя стадия двумя инлайнами при готовом `finalStageWave()`» называет НЕ ТУ функцию — та возвращает волну, а дублировалось ИМЯ стадии, и хелпера для него не было. §3 Д3: расхождение длинного заголовка воспроизводится ТОЛЬКО с сепаратором после юнита — без него оба предиката дают `false` на любой длине.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue