Record the second-pair reachability report and its adversarial round, written by the backend session in its own journal section
This commit is contained in:
parent
dca0e06887
commit
2a2ba4a451
1 changed files with 146 additions and 0 deletions
146
docs/PROGRESS.md
146
docs/PROGRESS.md
|
|
@ -210,6 +210,152 @@
|
|||
|
||||
## Бэкенд
|
||||
|
||||
#### ДОПОЛНЕНИЕ к отчёту пака «ДОСТИЖИМОСТЬ ПАР-ДАННЫХ»: АДВЕРСАРИАЛЬНЫЙ ПРОХОД ПО СДАННОМУ (18.09, та же сессия `textmachine-main-c8`). НЕ КОММИЧУ
|
||||
|
||||
**Почему дополнение вообще есть.** Пак требовал адверсариального прохода по СВОЕЙ готовой работе (§5), и я его
|
||||
не сделала — были проверки по ходу, отдельного захода «атаковать то, что уже сдано» не было, и в отчёте про
|
||||
это не написано. Дыру назвал владелец. Проход проведён после приёмки `D39.268`: три ревьюера по разным
|
||||
линзам плюс советчик, все read-only, свои пробы держали в /tmp. Нашлось **21 наблюдение, из них 13 —
|
||||
настоящие дефекты МОЕЙ работы**, и три из них меняют утверждения акта, а не только код. Деньги: **$0**.
|
||||
|
||||
**ТРИ НАХОДКИ УРОВНЯ АКТА.**
|
||||
|
||||
**1. ⛔ Байты комментариев langpack-файлов входят в `Pack.Version()`.** Замер: правка ТОЛЬКО комментариев в
|
||||
`configs/langpacks/en-ru/*.txt` сдвинула версию английского пака (`429e72063a26` → `c98785fc0974`), китайская
|
||||
не двинулась. ⇒ в проекте два слоя данных с ПРОТИВОПОЛОЖНОЙ ценой комментария: у промтов он снимается перед
|
||||
хешем, и соседний доккомментарий обещает это вслух («an edited comment costs nobody a re-purchase»), у
|
||||
langpack-файлов он стоит пере-покупки всех книг пары. Обещание одного слоя читатель обобщает на другой.
|
||||
⇒ ⛔-шапка в каждом из трёх файлов + пин `TestACommentInAPackFileIsPartOfItsVersion`, предъявляющий свойство
|
||||
исполнением. Сам фолд не тронут: снятие комментариев двинуло бы и китайский пак.
|
||||
|
||||
**2. ⛔ Алгоритм распознавания курсива не версионировался ничем — и я это нарушила в том же дереве.** Данные
|
||||
пары фолдятся через `packVersion`, а КОД детектора был прикрыт только конвенцией «правка ингеста бампает
|
||||
версию нарезки», записанной прозой. Я расширила сканер (рекурсия в `@media`/`@supports`, Unicode-имена
|
||||
классов) при неизменной версии. На боевых книгах это замеренный no-op (4842 носителя и тот же текст глав до
|
||||
и после), но механизм «расширили сканер — молча сдвинули провод» работал. ⇒ остаток (в) акта ЗАКРЫТ той же
|
||||
ратифицированной формой: `inlineMarkupAlgoVersion` фолдится УСЛОВНО, только когда пара несёт
|
||||
`inline-markup.txt`. Пара без файла байт-идентична.
|
||||
⚠ И пин на это я сперва написала ПУСТЫМ: он утверждал «объявление файла двигает версию», а это двигают сами
|
||||
байты файла — тег он не отличал. Поймал инструмент (мутация ВЫЖИЛА), пере-написан так, чтобы подменять тег.
|
||||
|
||||
**3. ⛔ Порча ЧИТАТЕЛЬСКОГО файла, которой в акте нет.** Один потерянный моделью маркер ИНВЕРТИРОВАЛ
|
||||
выделение до конца абзаца: `сноску* и сказал *важно*` давало `сноску<i> и сказал </i>важно*` — книга выделяет
|
||||
слова, которых модель не выделяла, и файл при этом валиден. Тем же счётом ломался авторский разделитель сцены
|
||||
`* * *` → `<i> </i> *`. ⇒ фланкирующее правило при равных глифах: открывающим не может быть маркер после
|
||||
буквы или цифры, закрывающим — после пробела. Это ровно форма, какую производит ингест, поэтому законное
|
||||
выделение не теряется, а авторская пунктуация не трогается.
|
||||
|
||||
**ЧТО ЕЩЁ ПОЧИНЕНО** (каждое с пином, каждый пин пере-проверен посадкой): счётчик `italic_carriers` считал
|
||||
носителей в ИСКЛЮЧЁННЫХ служебных документах (обложка с одним курсивом прятала ноль, ради которого счётчик и
|
||||
заведён) · пара, объявившая разметку над `.txt`-книгой, получала ТИШИНУ вместо честного нуля — а боевая
|
||||
китайская книга именно `.txt` · блочная обёртка с курсивным классом (`<blockquote class="ital">` — так верстают
|
||||
стихи и эпиграфы) теряла ВСЁ выделение молча · `<br><br>` внутри прогона разрывал пару маркеров между чанками ·
|
||||
вложенный `<span>` закрывал внешний `<span class="italic">` раньше времени · правило `h1.prologue` красило
|
||||
заголовки как класс на любом теге (во второй английской книге дерева таких 26) · белый список полей брифа и
|
||||
его проводка были двумя копиями одного списка · ключ `prompt_versions` с опечаткой был мёртвым и молча
|
||||
оставлял общий лейбл · пробелы в значении брифа трактовались двояко · писатель книги вооружался маркерами и
|
||||
для `.txt`-источника, которого ингест не размечал · пустой курсивный спан (`**слово**`) съедался без следа.
|
||||
|
||||
**ТРИ ПОПРАВКИ К МОИМ СОБСТВЕННЫМ УТВЕРЖДЕНИЯМ.**
|
||||
1. Условие у ключа `batch_runes` («ни один пак в дереве не несёт `terminology.txt`») **опровергнуто тем же
|
||||
коммитом**, который этот файл и добавляет. Вывод «бампать не надо» верен, но по ДРУГОМУ правилу; следующая
|
||||
сессия, честно проверив названное условие, нашла бы его ложным и могла бампнуть тег — а он сидит в версии
|
||||
КАЖДОГО пака.
|
||||
2. Утверждение в `inline-markup.txt` «маркер переживает сплиттер предложений как обычная пунктуация» **ложно**:
|
||||
замерено 17 190 → 17 159 предложений и 385 → 386 чанков на боевой книге.
|
||||
3. Посылка выбора глифа снята на ОДНОЙ книге: вторая английская книга дерева несёт **12 авторских звёздочек**
|
||||
(SMS в тексте). Движок теперь ПЕЧАТАЕТ `source_marker_glyphs` рядом с `italic_carriers`.
|
||||
|
||||
**ОТДЕЛЬНОЙ ОСЬЮ — ратифицированная правка данных, о которой просил оркестратор.**
|
||||
`internal/lang/data/injection.txt:12` предписывал «при неизбежности — мужские родовые формы». Решение владельца
|
||||
(«Просить редактора перестроить, если литературно художественно не получается, то пусть пишет как лучше
|
||||
читается») ратифицировано, и нота journalа объявила его ИСПОЛНЕННЫМ — а в данных оно исполнено не было.
|
||||
⇒ строка приведена к решению; доккомментарий `membank/memory.go` (`genderConstraintNote`), описывавший
|
||||
несуществующий мужской дефолт со ссылкой на `D19.3`, исправлен тем же движением; пин `TestDC3GenderInjection`
|
||||
усилен — он проверял только первые слова строки и пропустил бы дефолт.
|
||||
⚠ **ЦЕНА НАЗВАНА:** файл фолдится БЕЗУСЛОВНО через `lang.EmbeddedVersion()` ⇒ сдвигается снапшот КАЖДОЙ книги,
|
||||
включая китайскую. Ключ манифеста китайской пробы ушёл `ac9c075a…` → `ec8788ea…`, и **это заявленная ось, а не
|
||||
регресс**: для холодного прогона (свежие проекты) $0, для книги с оплаченными чекпойнтами следующий резюм
|
||||
потребует `--resnapshot`. Ре-капчур голденов предъявлен ПО ОДНОЙ ОСИ: маскированный структурный дифф
|
||||
(хеши/версии → плейсхолдер) **пуст**, сдвинулся один файл `capture.golden`, 86/86 строк — только хеши.
|
||||
⚠ И честно: ни один голден не рендерит саму `gender_hidden` — прибор это назвал (`пол СКРЫТ` в голденах 0 при
|
||||
контроле `муж. —` 16), поэтому новую строку стережёт `TestDC3GenderInjection`, а не голден.
|
||||
|
||||
**ЧИСЛА, СНЯТЫЕ ПОСЛЕ ПОСЛЕДНЕЙ ПРАВКИ.** `make battery` → **MAKE_EXIT=0, строк FAIL ноль**; полнота списком:
|
||||
24 пакета против 24 вердиктов, `comm` пуст в обе стороны; скипов 6, все корпусные, поимённо те же.
|
||||
**Мутации: 10 новых записей, все введены в гейт** (каталог 547 → 557, в гейте 336 → 346), исход **10 RED,
|
||||
0 выживших, 0 неизмеренных** — но это ПОСЛЕ починки прибора: первый прогон дал 7 RED, одну ВЫЖИВШУЮ (пустой
|
||||
пин, см. выше) и одну НЕИЗМЕРЕННУЮ (посадка не собралась), и обе разобраны, а не списаны. Статический обход
|
||||
якорей 557/557 чист; одна прежняя запись (`SP-epub-italics-not-carried-to-the-chunk`) сгнила от моей же правки
|
||||
кода и пере-нацелена. Английская книга по-прежнему доезжает: `EXIT=4`, `TOTAL $0.000000`, 386 чанков,
|
||||
`italic_carriers=4842`.
|
||||
|
||||
**ФЛЕЙК, КОТОРЫЙ НЕ МОЙ — и доказано это правильным контролем, а не удобным.** Прогон гейта один раз упал в
|
||||
ПРОХОДЕ СБОРА СКИПОВ (`Makefile:132`, второй полный `go test` без `-race`) на
|
||||
`TestARefusalIsNotAPurchaseEvenWhenTheReplyOutrunsTheWrite` в `internal/llm`. ⚠ Сперва я написала «пакет не
|
||||
трогала» — **неверно**: заландённый коммит добавил в `httpllm.go` 19 строк (`CreditsExhausted`), поймал это
|
||||
оркестратор. Пере-снято против правильного контроля — дерева `9defda4^`, где моей правки НЕТ: под равной
|
||||
нагрузкой **2 падения из 30 в контрольном дереве и 0 из 30 в моём**. Причина понята, а не угадана: тест гонит
|
||||
11 МБ тела, которое сервер не читает, отдаёт обрывок статус-строки и спит фиксированные 200 мс перед RST —
|
||||
под нагрузкой планировщик не успевает. Мой предикат при этом внутри пакета не зовётся ни разу (0 вызовов).
|
||||
⇒ ряд на флейк — предмет оркестратора, не мой.
|
||||
|
||||
**ЧЕГО НЕ ЧИНИЛА И ПОЧЕМУ.** Сам фолд комментариев (снятие двинуло бы китайский пак) · ключ `prompt_versions`,
|
||||
который именует существующий файл, но не взят ни одной стадией (законно: плоский `translator` живёт для c2) ·
|
||||
асимметрия `prompt_override`, который пар-лейбла не получает (сегодня им не пользуется ни один боевой конфиг) ·
|
||||
платформенная половина ряда 272 · детектор выделения для японского (`text-emphasis`, 傍点) и вторая пара
|
||||
маркеров (жирный) — это Go и отдельный предмет, ряд.
|
||||
|
||||
⛔⛔ **КРУГ СХОДИМОСТИ НЕ СОШЁЛСЯ С ПЕРВОГО РАЗА, И БЛОКЕР ВНЕСЛА САМА ПОЧИНКА.** Третий круг (атака на
|
||||
ПОЧИНКИ второго, а не на исходную работу) дал семь наблюдений, одно из них — блокер читательского пути,
|
||||
созданный моим же фланкирующим правилом.
|
||||
|
||||
**Посылка правила была ложной, и выведена она ЧТЕНИЕМ КОДА, а не замером его выхода.** Я написала в
|
||||
комментарии: «открывающий маркер никогда не стоит после буквы или цифры, потому что такова форма, какую
|
||||
производит `wrap`». Замер на выходе ингеста боевой книги: **68 прогонов из 4842 открываются сразу после
|
||||
буквы или знака** — курсив падает на точку (`HIM*.*`), на запятую (`heat*,*`), внутрь слова
|
||||
(`Fucks*sakes*`). Такие маркеры правило отвергало как открывающие и ПРОПУСКАЛО, после чего их закрывающий
|
||||
становился открывающим. Замер порчи на боевой книге: **68 выделений потеряно, 136 звёздочек вышло наружу
|
||||
как пунктуация, 67 абзацев отрендерено иначе** — в EPUB, который откроет читатель.
|
||||
|
||||
⚠ **Три свойства сделали это невидимым, и все три были у меня налицо:** батарея зелёная (порча живёт в
|
||||
СОДЕРЖАНИИ отгружаемого файла, а не в его валидности) · **мой собственный новый пин держал постоянной ровно
|
||||
ту форму, которая ломается** — во всех пяти кейсах открывающий стоял после пробела или в начале строки ·
|
||||
**мутация под починку фиксировала сломанное поведение как норму**, то есть гейт защищал дефект. Третье
|
||||
коварнее всего: посадка выглядит доказательством, а доказывает обратное.
|
||||
|
||||
⇒ **Лечение по роду:** правило опирается теперь ТОЛЬКО на то, что `wrap` гарантирует ПО ПОСТРОЕНИЮ —
|
||||
внутренняя сторона маркера не пробел (открывающий, за которым следует не-пробел; закрывающий, перед которым
|
||||
не-пробел). Внешняя сторона не спрашивается вовсе. **Предъявлено дифференциальным замером на боевой книге
|
||||
против состояния ДО правки: 4842 выделения из 4842, ноль звёздочек снаружи, НОЛЬ расходящихся абзацев** —
|
||||
то есть на книге, чьи маркеры наши и сбалансированы, правило байт-в-байт прозрачно, а от потерянного
|
||||
маркера защищает. Пин пере-написан так, что ВЕДУТ его те самые формы, на которых правило ломалось.
|
||||
⚠ Названный предел: когда обе стороны авторского глифа — текст (`5*5=25`), отличить его нельзя ничем; ответ
|
||||
на это — замер `source_marker_glyphs` (0 на боевой книге, 12 на второй английской), а не более хитрый
|
||||
предикат. Именно «более хитрый предикат» и стоил 68 прогонов.
|
||||
|
||||
**Ещё шесть находок того же круга, все закрыты:** починка `dc:description` была **ИНЕРТНОЙ** — глифы
|
||||
ставились на книгу ПОСЛЕ ассемблера, который её и рендерит (теперь рендер идёт после) · гейт «пара учит свой
|
||||
глиф промтам» был **ПУСТЫМ**: его удовлетворял markdown-буллет, и ревьюер доказал это, вырезав из промтов
|
||||
всё объяснение глифа и получив зелёный (теперь строки-буллеты не считаются свидетельством) · гейт файлов
|
||||
пака не ловил «верное имя не в том каталоге» (теперь имена ключуются РОДОМ каталога) · CSS-сканер бросал
|
||||
весь остаток стилей на скобке внутри строкового литерала и на незакрытом правиле — регресс против прежнего
|
||||
кода (теперь строковые литералы пропускаются, а незакрытое правило дочитывается) · названо условие, при
|
||||
котором блочное курсивное исключение перестаёт держаться (незакрытый блок красит остаток документа — это
|
||||
верное чтение сломанной разметки, но чтение, которого никто не выбирал) · наблюдение о стоимости `inItalic()`
|
||||
на патологической вложенности записано как наблюдение, не как дефект.
|
||||
|
||||
⛔ **СОСТОЯНИЕ ЭТОГО ДЕРЕВА МЕНЯЛОСЬ ДВАЖДЫ ПОСЛЕ СЛОВА О ЗАВЕРШЕНИИ, и акт обязан назвать, на каком из них
|
||||
сняты его числа.** Я сказала «работа завершена» по ПАМЯТИ о сделанном, а затем пошла сверяться со списком
|
||||
§13 промта — и нашла два буллета первого ревью, которые считала исполненными и которые исполнены не были:
|
||||
обещание «оба формата отвечают за маркеры» (при равных глифах txt-отображение есть байтовый no-op, то есть
|
||||
непарность видна ТОЛЬКО в EPUB, а комментарий утверждал симметрию) и `dc:description`, собиравшееся из строк
|
||||
с движковыми глифами в метаданные, где разметка не допускается вовсе. Правка пришла ПОСЛЕ слова и стоила
|
||||
оркестратору полной мутационной кампании: его 346 из 346 описывают замороженную копию, а не это дерево.
|
||||
⇒ класс ошибки — «самоотчёт „проверено“ без исполнения»; лечение — сверяться со списком ДО слова, а не после.
|
||||
|
||||
**Работа завершена, править не планирую.**
|
||||
|
||||
#### ОТЧЁТ пака «ДОСТИЖИМОСТЬ ПАР-ДАННЫХ ДО ХОЛОДНОГО ПРОГОНА» (18.09, сессия `textmachine-main-c8`). НЕ КОММИЧУ — дерево передаю оркестратору №23
|
||||
|
||||
**Деньги пака: $0.** Платных вызовов моделей — ноль. Живые пробы движка гонялись на боевом
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue