Put the erratum's mark on the three lines it corrects, and take the rename out of the header a session reads first
This commit is contained in:
parent
8f69794444
commit
89b1313df1
1 changed files with 3 additions and 3 deletions
|
|
@ -18,7 +18,7 @@
|
|||
> ⚠ **Эррата 27.08-е (D39.159 п.8, финал): `PD-398` ЗАКРЫТА — у построенного гейта появился пин.** `selftest_tail_vocab()` гоняется на каждом `--check`, четыре утверждения, проверен ПОСАДКОЙ трёх мутаций самого гейта (все три пойманы, базовая линия молчит). ⚠ Первая редакция пина молчала на одной из трёх: утверждение про вес проверяло `cells()`, а мутация меняет то, чем пользуется `register()`. Пин, проверенный одним прогоном вместо посадки, — ровно тот класс, который эта строка описывает; поймано только потому, что посадку сделал. Регистр 96 → 95 открытых.
|
||||
> ⚠ **Эррата 27.08-ж (D39.160 п.2) — ошибка ОРКЕСТРАТОРА, найденная исполнителем пака.** Нота утверждала, что после сноса отменённой двери «канон и деплой СОВПАДУТ точно», а промт минора (§3.2-бис) — что счётчики `pending_decisions`/`complete` «навсегда нули». **Верно по ПУТЯМ, неверно по ПОЛЯМ:** проекция `GET /bank` продолжает их слать, и это не нули — `bankCountsTx` (`platform/internal/pgstore/readmodel.go:330`) считает `proposed`-строки, о чём говорит её собственный комментарий. Клиент 0.5.0 лишние поля игнорирует, но аллоулист-норма нарушена до монтажа (2в). Носитель — `PD-399`. ⚠ Контрактная сессия принесла это ПИНГОМ по §11 промта, вместо того чтобы тихо подогнать работу под неверную посылку; это и есть поведение, которого норма требует.
|
||||
> ⚠ **Эррата 27.08-з (D39.156, состав пункта 2в): «воркер решений → глагол перед возобновлением» СНЯТ — посылка изменилась.** Пункт писался, когда двери в контракте не было и подразумевалось НАКОПЛЕНИЕ: платформа копит решения у себя и скармливает их движку перед `resume`. С дверью канона 0.5.0 накопления не существует — правка ПРИМЕНЯЕТСЯ в момент подачи, и гарантия «до возобновления» у синхронной формы СИЛЬНЕЕ воркерной: применено прежде, чем клиент получил `200`. Проверено исполнением с обеих сторон: движок на стопе ВЫХОДИТ (`cmd/tmctl/main.go:95`, код 3), флок не-блокирующий и отпускается ядром на выходе процесса (`store/store.go:187`), между стопом и возобновлением живого процесса на проекте нет — запинено `pipeline/bankchain_test.go:62-64`; кап 5000 решений выведен ИМЕННО из синхронности («the call stops fitting the caller's timeout»). Остаётся не воркер, а пер-книжная сериализация в обработчике. `Resume` «с решениями как они есть» не тронут.
|
||||
> ⚠ **Эррата 28.08-и (D39.165 §3, размер мины) — ошибка ОРКЕСТРАТОРА, найденная опровергателем промта P10.** Нота утверждает: «первый же ПРОДОЛЖАЮЩИЙ прогон после первой же правки банка УПАДЁТ». **Переоценено.** Гард снапшота стреляет по СУЩЕСТВУЮЩЕМУ джобу (`backend/internal/pipeline/stagerun.go:47`=`r.Store.EnsureJob` — `EnsureJob` создаёт джоб стадии в момент, когда стадия впервые исполняется), а правка в ГЛАВНОМ окне — стоп подписи `awaiting_bank` — двигает edit-снапшот, когда edit-джобов ЕЩЁ НЕТ: возобновление создаёт их свежими, и гард молчит. Драфт-волна mined-строк не видит вовсе (`backend/internal/pipeline/bankmaterialize.go:317`=`if row.Source == "mined"` (⚠ адрес испр. 06.09: код ПЕРЕЕХАЛ вместе с переименованием файла, поэтому линт угадать его не мог — нашёл `git log -S` по тексту якоря)). **Дефект СТОИТ, но его триггер уже: правка, сделанная ПОСЛЕ появления edit-джобов** — пауза потолком посреди редактуры и ДОЧИТАННАЯ книга. ⚠ Срочность при этом НЕ падает: флагманский случай продукта («поправил имя героя в дочитанной книге») — ровно тот, где edit-джобы существуют, то есть мина бьёт именно по нему. **Цена ошибки была бы прямой:** репро на потоке `awaiting_bank` показало бы ЗЕЛЕНЬ без фикса, и пак мог быть отозван как мнимый. Промт P10 §4.2 исправлен: репро обязано фиксировать состояние «edit-джоб существует ДО правки».
|
||||
> ⚠ **Эррата 28.08-и (D39.165 §3, размер мины) — ошибка ОРКЕСТРАТОРА, найденная опровергателем промта P10.** Нота утверждает: «первый же ПРОДОЛЖАЮЩИЙ прогон после первой же правки банка УПАДЁТ». **Переоценено.** Гард снапшота стреляет по СУЩЕСТВУЮЩЕМУ джобу (`backend/internal/pipeline/stagerun.go:47`=`r.Store.EnsureJob` — `EnsureJob` создаёт джоб стадии в момент, когда стадия впервые исполняется), а правка в ГЛАВНОМ окне — стоп подписи `awaiting_bank` — двигает edit-снапшот, когда edit-джобов ЕЩЁ НЕТ: возобновление создаёт их свежими, и гард молчит. Драфт-волна mined-строк не видит вовсе (`backend/internal/pipeline/bankmaterialize.go:317`=`if row.Source == "mined"` (⚠ адрес испр. 06.09; ФОРМУЛИРОВКА испр. по эррате 06.09-ж: переименования НЕ было — `seeding.go` жив, а код ВЫДЕЛЕН в `bankmaterialize.go` (`6ec9f8a` 29.08). Линт не мог угадать адрес по другой и более простой причине: прежний якорь был написан ГОЛЫМ именем, а такое имя отсеивается на `docs/scripts/counts.py:585`=`"/" not in rel` ДО всякой проверки файла — нашёл `git log -S` по тексту якоря)). **Дефект СТОИТ, но его триггер уже: правка, сделанная ПОСЛЕ появления edit-джобов** — пауза потолком посреди редактуры и ДОЧИТАННАЯ книга. ⚠ Срочность при этом НЕ падает: флагманский случай продукта («поправил имя героя в дочитанной книге») — ровно тот, где edit-джобы существуют, то есть мина бьёт именно по нему. **Цена ошибки была бы прямой:** репро на потоке `awaiting_bank` показало бы ЗЕЛЕНЬ без фикса, и пак мог быть отозван как мнимый. Промт P10 §4.2 исправлен: репро обязано фиксировать состояние «edit-джоб существует ДО правки».
|
||||
> ⚠ **Эррата 28.08-к (D39.165 §3 + решение оркестратора о глава-полосе) — ДВЕ ошибки, обе найдены широким самопроходом платформенной сессии, обе доказаны исполнением.** **(1) Посылка «смета УЖЕ публикуется в `status --json`» верна только ПОСЛЕ свёртки.** `bank-apply` пишет только ФАЙЛЫ решений, а `status` считает ре-билл от СОХРАНЁННОГО глоссария (`backend/internal/pipeline/status.go:962`=`seed-FILE edit` ⚠ (адрес испр. 06.09: цитата УЕХАЛА, не исчезла; в теле `D39.165` она осталась по прежнему адресу — тело ноты не переписывается, D23.3)``, `projectStoredMemory` — его собственный комментарий: «A seed-FILE edit not yet re-run is NOT reflected here… that drift surfaces on the next translate's re-seed»). Свёртка происходит внутри СЛЕДУЮЩЕГО `translate`, поэтому сразу после правки движок отвечает `units=0`/`drift=false`. Следствие: продажа «затронуто N юнитов» и холд от сметы В ТЕКУЩЕМ ШВЕ НЕДОСТИЖИМЫ — для них нужен движковый глагол «свернуть банк и оценить ВНЕ translate», которого нет. **(2) Решение оркестратора «полоса пере-прохода — в ГЛАВАХ» ОТМЕНЯЕТСЯ: его посылка опровергнута.** Я рассудил, что $0-репин двигает полосу, потому что идёт через тот же `resumeFromChunkStatus`, — и не проверил анонс. Движок анонсирует юнит ОДИН РАЗ на жизнь книги (announce-once, `backend/internal/pipeline/events.go:49,143-162`=`announce-once keys`), пере-проход не ре-анонсирует ни репины, ни пере-переводы ⇒ `done` остался бы НУЛЁМ навсегда. Это ровно тот класс, от которого предостерегает памятка «не выводить из соседнего механизма, не проверив свой». ⚠ **Что при этом НЕ отменяется:** запрет класть ЮНИТЫ в поле, объявленное в главах, стоит — но объявленная в каноне «одна единица работы» запретом не является, потому что она НЕ молчаливая.
|
||||
> ⚠ **Эррата 29.08-а (D39.172, две строки, объявленные заведёнными) — ошибка ОРКЕСТРАТОРА №19.** Тело ноты дважды утверждает «Заведено строкой» / «строка заведена» — про `Touch`, выбрасывающий `RowsAffected`, и про пересборку `tmctl` в рецепте стенда. **На момент ратификации ни одной из этих строк не существовало:** последняя строка регистра платформы была `PD-430`, и проверка грепом по `Touch|RowsAffected|пересбор` давала только совпадения слов в чужих строках. Утверждение о будущем записано как о свершившемся — ровно тот класс, который эта же смена ловила у сессий трижды. **СНЯТА 29.08: строки заведены зоной — `PD-431` (`Touch`) и `PD-432` (пересборка `tmctl`), `PD-423` получил вторую точку. Проверено грепом по регистру.** Тело ноты не переписывается (D23.3). ⚠ Сюда же третий пункт того же абзаца: `PD-423` предписано ПЕРЕ-ПРОВЕРИТЬ (у сессии `sqlc` тест зелёный в трёх прогонах), и пометки в строке регистра тоже нет.
|
||||
> ⚠ **Эррата 30.08-б (D39.165 §2 и §3, две находки платформенной сессии P12).** (а) **Якорь протух:** §2 цитирует фразу канона о `chapters_done` по `openapi.yaml:1542-1545` — текст уехал на **`1554-1559`**, по прежним строкам сейчас `RejectReason`. Сама цитата верна дословно; нота не битая, битым стал только номер (класс строки бэклога 219). (б) **§3 назвал живое САМОПРОТИВОРЕЧИЕ канона и не дал ему носителя:** правка банка «takes effect on the NEXT run» (`openapi.yaml:504`) против «finished work is not bought twice» плюс подъём потолка только у ПРИОСТАНОВЛЕННОЙ книги (`:590`) — у дочитанной книги следующего прогона купить нечем, поэтому принятая правка умирает молча. Ни в едином бэклоге, ни в регистре платформы строки не было (проверено грепом по обеим фразам) — **заведена строка бэклога 241** 30.08. ⚠ Класс — «названо в теле ноты и не получило карриера»; норма приёмки требует строку ТЕМ ЖЕ лендингом, здесь она не легла два дня.
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
> ⚠⚠ **Эррата 06.09-ж (эррата 06.09-г · `D39.212` п.6 · эррата 28.08-и) — ТРИ НЕПРАВДЫ, ВЪЕХАВШИЕ В КАНОН ТЕМ ЖЕ ДВИЖЕНИЕМ, КОТОРЫМ Я ИСПРАВЛЯЛ ПРЕДЫДУЩИЕ. Все три — в текстах ПРО СОБСТВЕННЫЕ ОШИБКИ; нашёл Fable 5 сверкой с деревом.** **(а) «Расщепление стояло ЧЕТВЕРО СУТОК» (эррата 06.09-г) — неверно: четыре с половиной ЧАСА.** `3e40c36` — 06.09 **03:00**, `1cae0ac` — 06.09 **07:30**. Полная история границы (`git log -L`, замер Fable, пере-проверен мной по датам коммитов): `f0d8fed` 08.08 02:26 ввёл `minimum: 1` ещё БЕЗ прозы о нуле · `278ffd8` 06.09 01:40 поставил `0` · `3e40c36` 03:00 вернул `1` · `1cae0ac` 07:30 вернул `0`. **Ни один отрезок не равен четырём суткам.** ⚠ Суть эрраты 06.09-г от этого не меняется — расщепление было, и написано оно одним заходом, — но ДЛИТЕЛЬНОСТЬ я не мерил, а написал по ощущению, и ощущение соврало в двадцать раз. **(б) `D39.212` п.6: «семь флагов, ШЕСТЬ ложных, настоящих два» — 6+2≠7; ложных ПЯТЬ.** Зонный журнал называет их поимённо (`target` · `RunRequest.chapters` · `.characters` · `character_count_exact` · `kind`), и пять плюс два дают семь. Число «шесть» я взял из ПИСЬМА зоны, не пересчитав, — при том что её собственный журнал держит верное. **Ровно класс эрраты 06.09-д: величина, перенесённая из чужого текста без пере-счёта, — и во второй раз за смену подряд.** ⚠ И арифметика была видна на месте: сумма не сходилась с итогом в той же фразе. **(в) «Код переехал вместе с ПЕРЕИМЕНОВАНИЕМ файла» (аннотация «испр. 06.09» внутри эрраты 28.08-и) — переименования не было.** `backend/internal/pipeline/seeding.go` ЖИВ и сегодня (128 строк); `bankmaterialize.go` **ДОБАВЛЕН** `6ec9f8a` 29.08, и в него код ВЫДЕЛЕН, а не переименован вместе с файлом. Верная причина, по которой линт не мог угадать адрес, — другая и проще: якорь был написан ГОЛЫМ именем, а голое имя отсеивается на `docs/scripts/counts.py:585`=`"/" not in rel` ДО всякой проверки файла. Та же ложь стояла в строке 306 бэклога и там исправлена. ⚠ **Урок общий для всех трёх: текст про собственную ошибку пишется в тот момент, когда автор уверен, что уж ЭТО он знает, — и потому проверяется хуже обычного.** Ни одну из трёх не поймал бы ни один гейт: все три проза, и все три проверяемы одной командой, которую я не набрал.
|
||||
> ⚠ **Эррата 06.09-е (D39.211 п.1) — ТОТ ЖЕ НЕДОСЧЁТ ПАКЕТОВ УНАСЛЕДОВАН РАТИФИЦИРОВАННЫМ АКТОМ, А ТОЧНЫЙ РАЗБОР УЖЕ НЕВОССТАНОВИМ.** Пункт 1 цитирует числа зоны v13: «`MAKE-EXIT=2`, **21 пакет**, 20 ok». Пакетов у платформы **ДВАДЦАТЬ** — пере-считано 06.09 чистым `go test ./... -race -count=1 -v`: 20 различных, ни одного без тестов; список зона предъявила поимённо. ⇒ «21» здесь — то же, что в эррате 06.09-д: число СТРОК вывода, а не пакетов. ⛔ **А вот раскладку «20 ok» при `FAIL 1` восстановить уже нечем: лог v13 удалён самим прибором** (`make check` пишет в фиксированный `platform/.check.log` и стирает его — строка 310). Наиболее вероятное чтение — 19 прошедших пакетов, один упавший (`gates`, ратифицированный гейт версии) и одна строка-дубль, — но это РЕКОНСТРУКЦИЯ, и я помечаю её как реконструкцию, а не как замер. ⭐ **Это и есть цена дефекта строки 310, предъявленная не рассуждением, а случаем: прибор стёр улику под ратифицированным актом, и число в каноне теперь неисправимо — его можно только пометить.** ⚠ Прочие числа пункта 1 под сомнение НЕ ставятся и подтверждены косвенно: «тестов 850» той же строки согласуется с сегодняшними **851** после ровно одного нового пина (`runs.TestABookWithNothingLeftIsRefusedRatherThanSoldAsAZeroChapterRun`). ⚠ И отдельно: «21 пакет из 21» в `D39.170` — НЕ ошибка и не трогается, там речь о батарее ДВИЖКА, у которого свой набор пакетов; проверено прежде, чем править.
|
||||
> ⚠⚠ **Эррата 06.09-д (D39.212 п.8) — ЧИСЛА ПРИЁМКИ, КОТОРЫЕ Я НАЗВАЛ СВОИМИ, СНЯТЫ ПРИБОРОМ С ДОКАЗАННЫМ ДЕФЕКТОМ, И ДВА ИЗ НИХ НЕВЕРНЫ.** **(а) Пакетов ДВАДЦАТЬ, а не 21.** 21 — это число строк `^ok`, среди которых `internal/money` напечатан ДВАЖДЫ; различных пакетов двадцать. ⭐ **Платформенная зона пришла к тому же числу ДРУГИМ путём** (у неё лишней была голая итоговая строка `FAIL` рядом со строкой упавшего ПАКЕТА) и поймала себя сама. То есть **одна и та же ошибка — величина, снятая с вывода прибора без разбора, что прибор печатает, — поймала обе стороны НЕЗАВИСИМО, в один час, на одном выводе**; это сильнее любого из двух наблюдений по отдельности. **(б) Скипов ДЕВЯТЬ, а не семь, и семь были не ошибкой счёта, а ложной уликой.** Число 7 снято из `make check`, чей лог живёт по фиксированному пути `platform/.check.log` и затирается параллельным прогоном (строка 310, дефект найден зоной в тот же час). ⛔ **Зона меня об этом предупредила, и я возразил «у меня обошлось — в моём логе нет ни одного `No such file`». Возражение было слабым: отсутствие СИМПТОМА не есть доказательство целости улики**, — и чистый пере-прогон это подтвердил. Строка 310 укусила ровно того, кто её завёл, в тот же час, что и завёл. **(в) Верные числа, снятые `go test ./... -race -count=1 -v` в файл ВНЕ каталога зоны, куда чужой прогон не дотянется:** `GO-EXIT=0` · **20 пакетов ok, ни одного без тестов** · верхнеуровневых тестов **851: PASS 842 · FAIL 0 · SKIP 9** · с подтестами PASS 1094 · `ALARM PD-count: 12 (baseline 12)`. ⭐ **Сошлось с зоной с двух сторон:** у неё на тех же **851** — PASS 846 · SKIP 5, и разница ровно ЧЕТЫРЕ теста — это четыре гейта стенда, которых я не поднял (из пяти у меня был только `TM_PLATFORM_TEST_DSN`). Общее число совпало, расхождение объяснено и названо. **(г) Якорь п.6 был наведён на НЕУНИКАЛЬНЫЙ токен** и пере-наведён (`2ed1c0b`): `Structure *string` встречается в `v0.go` ДВАЖДЫ — `:216` (`wireBook`) и `:308` (`wireOrderOptions`), — так что скрипт мог сесть на чужое поле, а линт бы позеленел. Теперь `v0.go:306-308`=`null when no manifest`, токен по файлу единственный. ⇒ **уточнение к п.7 той же ноты: токен надёжнее номера строки только когда он УНИКАЛЕН. Неуникальный токен ХУЖЕ номера — номер врёт громко и ловится линтом, а он врёт молча и линт зеленит.**
|
||||
> ⚠⚠ **Эррата 06.09-г (эррата 06.09-в, клаузула (а)) — `minimum: 1` НАПИСАН НЕ ПО НЕЗНАНИЮ: ТЕМ ЖЕ ДВИЖЕНИЕМ Я СНЁС УЖЕ СТОЯВШИЙ ВЕРНЫЙ ОТВЕТ.** Эррата 06.09-в числит его ложью «второго захода» — это мягче факта. Дифф `3e40c36` (канон `0.12.0`, мой): в поле стояло `type: integer` + **`minimum: 0`** и абзац «`0` is legal and is not «nothing was ordered»: a re-pass buys no chapters and reports `0` here … A client that treats this as at-least-one will reject valid answers». **Коммит заменил `minimum: 0` на `minimum: 1` и в ТОМ ЖЕ заходе пере-написал абзац в сегодняшний «⚠ `0` is legal and means a re-pass … A client that treats this field as at-least-one will reject valid answers».** ⇒ знание не потеряно, а **РАСЩЕПЛЕНО: половина документа, которую читает человек, сохранила правду; половина, которую читает генератор клиента, получила ложь** — и они стояли в шести строках друг от друга четверо суток. ⛔ Класс не «утверждение без прогона», а **регрессия против собственного канона**: неверное утверждение спорит с кодом и рано или поздно ловится, а снос верной гарантии уничтожает уже оплаченное знание — ровно то, о чём предупреждает шапка `CLAUDE.md`. ⚠ И это ЕЩЁ ОДНО свидетельство строки 309: гейт версии сверял числа, а документ противоречил сам себе внутри одного поля. ⭐ **Следствие для дофикса, снимающее с зоны половину работы:** сочинять нечего, верный ответ лежит в `git show 3e40c36^:docs/architecture/14-api-contract/openapi.yaml`; дело зоны — сверить его со своим пином и вернуть границу. ⚠ Соседний `minimum: 1` у `ordered_units` ВЕРЕН и не трогается: заказа на ноль юнитов не существует, а «заказан не юнитами» уже несёт `null`.
|
||||
> ⚠⚠ **Эррата 06.09-г (эррата 06.09-в, клаузула (а)) — `minimum: 1` НАПИСАН НЕ ПО НЕЗНАНИЮ: ТЕМ ЖЕ ДВИЖЕНИЕМ Я СНЁС УЖЕ СТОЯВШИЙ ВЕРНЫЙ ОТВЕТ.** Эррата 06.09-в числит его ложью «второго захода» — это мягче факта. Дифф `3e40c36` (канон `0.12.0`, мой): в поле стояло `type: integer` + **`minimum: 0`** и абзац «`0` is legal and is not «nothing was ordered»: a re-pass buys no chapters and reports `0` here … A client that treats this as at-least-one will reject valid answers». **Коммит заменил `minimum: 0` на `minimum: 1` и в ТОМ ЖЕ заходе пере-написал абзац в сегодняшний «⚠ `0` is legal and means a re-pass … A client that treats this field as at-least-one will reject valid answers».** ⇒ знание не потеряно, а **РАСЩЕПЛЕНО: половина документа, которую читает человек, сохранила правду; половина, которую читает генератор клиента, получила ложь** — и они стояли в шести строках друг от друга **четыре с половиной часа** (⚠ испр. эрратой 06.09-ж: прежняя редакция писала «четверо суток» — длительность не измерялась вовсе). ⛔ Класс не «утверждение без прогона», а **регрессия против собственного канона**: неверное утверждение спорит с кодом и рано или поздно ловится, а снос верной гарантии уничтожает уже оплаченное знание — ровно то, о чём предупреждает шапка `CLAUDE.md`. ⚠ И это ЕЩЁ ОДНО свидетельство строки 309: гейт версии сверял числа, а документ противоречил сам себе внутри одного поля. ⭐ **Следствие для дофикса, снимающее с зоны половину работы:** сочинять нечего, верный ответ лежит в `git show 3e40c36^:docs/architecture/14-api-contract/openapi.yaml`; дело зоны — сверить его со своим пином и вернуть границу. ⚠ Соседний `minimum: 1` у `ordered_units` ВЕРЕН и не трогается: заказа на ноль юнитов не существует, а «заказан не юнитами» уже несёт `null`.
|
||||
> ⚠⚠ **Эррата 06.09-в (D39.211 п.2 и п.6) — АКТ НЕДОСЧИТАЛ СОБСТВЕННЫЕ ОШИБКИ АВТОРА, И НЕДОСЧЁТ ТОГО ЖЕ КЛАССА, ЧТО САМИ ОШИБКИ.** **(а) «ТРИ ЛЖИ В КАНОНЕ» — не три, а НЕ МЕНЬШЕ ШЕСТИ за день, и все мои.** Пункт 2 честен по СОСТАВУ и неверен по ЧИСЛУ: он посчитал то, что нашёл ВТОРОЙ КРУГ, и поставил это под подпись «сколько было». Не названы: `run_limit_reached` описан как «доставлено всё» · `minimum: 1` первого захода · члены ВХОДА `RunRequest` — все три мои, все поправлены, перечень предъявлен Fable 5. ⚠ И шесть — нижняя граница: финальным чтением 06.09 он нашёл в каноне ещё две мои лжи, стоявшие в ту минуту ЖИВЫМИ — `minimum: 1` ВТОРЫМ заходом под собственным описанием поля «`0` законен и означает ре-проход», и абзац `Progress`, объявивший «ровно один дискриминатор — `delivered_chapters`», тогда как ре-проход отдаёт `0`, то есть ЧИСЛО, и по моему же правилу читался бы как заказ в главах. ⛔ **Обе написаны ТЕМ ЖЕ актом, который в п.3(а) ратифицирует «утверждение канона о ЗНАЧЕНИИ пишет ЗОНА из своих пинов»** — норма нарушена документом, который её вводит; лечение по ней же: обе правит платформенная зона из пинов, я ратифицирую текст. ⚠ Урок — ровно строка 306: **число, отвечающее на вопрос «сколько НАЙДЕНО», под подписью «сколько ЕСТЬ», есть прибор, отвечающий на свой вопрос** (`D39.202`). **(б) «МОИ ДВЕ ОШИБКИ КРУГА» — их ТРИ.** Третья не записана нигде: **промт отработавшего пака оставлен ЖИВЫМ ЗАДАНИЕМ.** Замер: форма заказа принята `6ace7e1` (00:47), её промт ретирован `c05a353` (01:43) — **56 минут отработанный пак стоял активным заданием** для холодной сессии; движковый пак принят `9d4c59f` (01:43), промт ретирован `898c840` (01:51). Второй раз — ПОВТОР, и он состоялся потому, что первый чинился как ЭКЗЕМПЛЯР: нигде не сказано, что **приёмка пака и ретирование его промта — ОДИН акт**, а холодная сессия по `CLAUDE.md` идёт в таблицу активных промтов ПЕРВЫМ делом и берёт оттуда своё задание. ⇒ норма записана здесь и в ролевой промт. Тот же класс, что эррата 06.09-б: правило, написанное про экземпляр, не защищает от класса. **(в) ⛔ ОТСТУПЛЕНИЕ, А НЕ НОРМА: `f1e9226` — мой коммит в ЧУЖУЮ ЗОНУ.** Три файла `backend/` (`bookfile/model.go`, `chunk/ingest_test.go`, `chunk/ingestnotes_test.go`; правка комментариев) заландены мной 06.09 в 07:03 на том основании, что бэкенд-сессия объявила в канале, что больше ничего не пишет. **Основание негодное:** `CLAUDE.md` говорит «сессия считается ЖИВОЙ, пока ВЛАДЕЛЕЦ не сказал обратное», и собственное заявление сессии этим словом не является; зону правит зона. Записываю ОТСТУПЛЕНИЕМ и НЕ ратифицирую: «гигиена комментариев в зоне без живой сессии — оркестратору» расширяет мой собственный мандат, а это решение владельца. Содержимое верно и цело, историю не переписываю; вопрос владельцу вынесен в отчёт. ⚠ Молчание было бы ровно тем, в чём эррата 06.09-б уличает мой же гард: **отступление, не названное отступлением, назавтра читается нормой.**
|
||||
> ⚠ **Эррата 06.09-б (эррата 05.09-к) — ГАРД, НАПИСАННЫЙ ПРОТИВ ЛОВУШКИ, БЫЛ СУЖЕН ДО ЭКЗЕМПЛЯРА И ЛОВУШКА СРАБОТАЛА ТРЕТИЙ РАЗ.** Эррата 05.09-к назвала верный корень (pathspec берёт файл ЦЕЛИКОМ и от чужого ВНУТРИ файла не защищает) и внесла исполнимый шаг — но шаг назвал **один файл**, `docs/PROGRESS.md`. 06.09 тот же класс сработал на **`platform/docs/platform-PROGRESS.md`**: мой коммит правки одного якоря унёс ЧЕТВЁРТЫЙ ЗАХОД платформенной зоны — её проверку собственных утверждений, сделанную по прямому вопросу владельца. Содержимое цело, потеряна атрибуция; историю не переписывал. ⇒ **Шаг расширен на КЛАСС** (любой зонный журнал: `docs/PROGRESS.md` · `platform-PROGRESS.md` · `frontend-PROGRESS.md` · `DEFECT_REGISTER.md`). ⚠ Урок на уровень выше прежнего: **правило, написанное про ЭКЗЕМПЛЯР, не защищает от КЛАССА** — и это ровно то, в чём смена уличала зоны весь день, только теперь в норме, которую писал я сам.
|
||||
> ⚠ **Эррата 06.09-а (D39.208 п.7) — НОТА УТВЕРЖДАЛА ТО, ЧЕГО ФАЙЛ НЕ ДЕРЖАЛ.** Пункт 7 писал, что «`getRunOptions` приобрёл 409, **внесён в состав минора**». В каноне у операции стояли только `200/401/404`: я бампнул `info.version` до 0.11.0 и правку ответа НЕ внёс, то есть версия объявляла поведение, которого канон не описывал. **Класс строки 299 ВНУТРИ D-ноты** — нашёл коллега-Fable сверкой ноты с файлом. Исправлено 06.09: `'409'` с описанием причины `not_priced` и прямой оговоркой, что операция ВПЕРВЫЕ научилась отказывать, а клиент по 0.10.0 встретит код, которого нет в его заглушках. Тем же заходом сняты зеркала эры шкалы в `15-money-path.md` (`CeilingBounds` ретирован, шкалы в главах больше нет — абзацы оставлены историей под баннером). ⚠ Урок в свою сторону: **акт приёмки — тоже носитель, и он врёт ровно так же, как код**; «внесено в состав минора» я написал о собственном намерении, а не о состоянии файла.
|
||||
|
|
@ -2642,7 +2642,7 @@ $2.00» не мерил никто), **а утверждение о ПРОШЛО
|
|||
|
||||
**5. Нижняя граница НЕ снята, и довод зоны сильнее моего.** Я предлагал рассмотреть снятие («раз `null` уже отдельный случай»). Зона отказалась: **ноль — это ПОЛ, а не сегодняшнее наименьшее**; отрицательное отвергает сам допуск стора, и схема теперь говорит вслух то, что сервис и так гарантирует. Снять границу значило бы разрешить в контракте то, чего сервис не примет.
|
||||
|
||||
**6. То же расщепление в соседних полях — искано МЕХАНИЧЕСКИ, а не глазами.** Сканер зоны по **193** свойствам схем канона, три правила (граница `> 0` при прозе о нуле · проза обещает `null`, тип не допускает · тип допускает `null`, проза молчит): семь флагов, шесть — ложные срабатывания эвристики, настоящих два. **(а)** `OrderOptions.structure` — **зеркало моего случая**: тип допускает `null`, а проза не говорила, когда он бывает и что значит, — генератор знал, человек нет. Смысл дописан из пина (`httpapi.TestABookWhoseCutCannotBeSoldAgainstOffersCharactersAndSaysSo`, `platform/internal/httpapi/v0.go:306-308`=`null when no manifest`): **`null` — не четвёртый вид разреза**; `none` — книга, на которую движок посмотрел и нашёл одну главу, `null` — книга, которую ещё не спрашивали. **(б)** `Chapter.number` — уже объявлено эрратой 05.09 в самом поле; зона сверила, что довод эрраты ЖИВ (`ingest.Whole()` по-прежнему отвергает `c.Number < 1`), и не трогала.
|
||||
**6. То же расщепление в соседних полях — искано МЕХАНИЧЕСКИ, а не глазами.** Сканер зоны по **193** свойствам схем канона, три правила (граница `> 0` при прозе о нуле · проза обещает `null`, тип не допускает · тип допускает `null`, проза молчит): семь флагов, шесть — ложные срабатывания эвристики (⚠ **испр. эрратой 06.09-ж: ложных ПЯТЬ**, они названы поимённо в зонном журнале, и 5+2=7; тело ноты по `D23.3` не переписывается — это маркер), настоящих два. **(а)** `OrderOptions.structure` — **зеркало моего случая**: тип допускает `null`, а проза не говорила, когда он бывает и что значит, — генератор знал, человек нет. Смысл дописан из пина (`httpapi.TestABookWhoseCutCannotBeSoldAgainstOffersCharactersAndSaysSo`, `platform/internal/httpapi/v0.go:306-308`=`null when no manifest`): **`null` — не четвёртый вид разреза**; `none` — книга, на которую движок посмотрел и нашёл одну главу, `null` — книга, которую ещё не спрашивали. **(б)** `Chapter.number` — уже объявлено эрратой 05.09 в самом поле; зона сверила, что довод эрраты ЖИВ (`ingest.Whole()` по-прежнему отвергает `c.Number < 1`), и не трогала.
|
||||
|
||||
**7. ⚠ НАХОДКА О СПОСОБЕ ПЕРЕДАЧИ, отданная зоной мне и записываемая здесь: НОМЕР СТРОКИ, ПОСЛАННЫЙ СООБЩЕНИЕМ, ПРОТУХАЕТ ОТ СЛЕДУЮЩЕЙ ПРАВКИ ТОГО ЖЕ ФАЙЛА И НИЧЕМ НЕ СТОРОЖИТСЯ.** Замерено на себе: зона прислала три номера для чужих якорей, потом дописала в канон два блока — и все три уехали ровно на четыре строки. **Я поймал это только потому, что пере-считал сам**, а не взял из письма; зона поймала одновременно и прислала поправку. ⇒ **правило: номер строки из чужого письма НЕ переносится в док — переносится ТОКЕН, а номер пере-считывается линтом в момент правки.** Это тот же класс, что «замер, снятый до правки» (`D39.209`): цифра верна на момент отправки и лжёт на момент применения, и ничто в форме сообщения об этом не сигналит.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue