From d61469fddf1cc4fbf37883e6a990f389ddb413a0 Mon Sep 17 00:00:00 2001 From: heaven Date: Fri, 11 Sep 2026 00:26:34 +0300 Subject: [PATCH] Close both sessions of the cancelled packs: the engine tree is back at the line it started from and the platform keeps one flag with the pin that earns it. --- docs/PROGRESS.md | 3 ++- docs/architecture/05-decisions-index.md | 3 ++- docs/architecture/05-decisions-log.md | 18 +++++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 70c9eba4..6301d33d 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,6 +1,6 @@ # Журнал прогресса -> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-09-10, голова D39.240 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №23** (единственный носитель — здесь; роль передана 06.09, №22 закрыт нотой передачи D39.217; ⚠ испр. 06.09: коммит передачи `c992ee5` бампнул голову и НЕ тронул номер — гейта на номер очереди нет вовсе, `counts.py` сверяет только голову, поэтому носитель разошёлся молча). ⚠ **ЗАКАЗ ВЛАДЕЛЬЦА 01.09 — ИСПОЛНЕН, испр. 08.09 (висел как «первым» неделю после исполнения):** (0а) ревизия документации на протухшее ОТРАБОТАНА 01.09 воркфлоу `docs-staleness-revision-A` (15 срезов), провенанс находок — `D39.185`; (0б) планы доработок в бэкенд и платформу — исполняются ПАКАМИ, за 07–08.09 закрыты два движковых (`D39.225`, `D39.226`); (0в) вынос неактуального в архив идёт батчами `DOC_CLEANUP_PLAN.md` (Б14/Б15/Б17 живы). ⇒ строка ниже — не заказ, а история: (0а) ревизия документации на ПРОТУХШЕЕ — по всем зонам; (0б) планы доработок в БЭКЕНД и ПЛАТФОРМУ; (0в) вынос неактуального в АРХИВ (`docs/archive/`, `platform/docs/archive/`) — за сутки 31.08 закрыто много, и часть носителей стала историей. ⚠ Трезвость по масштабу (пере-считано 02.09): **94** живых дока в `docs/` (пере-счёт 04.09: `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`), 8 в `platform/docs`, 9 в `backend/docs` — ⚠ из 94 ВРЕМЕННЫЙ остался ОДИН (`DOC_CLEANUP_PLAN`, живой до закрытия батчей Б14/Б15/Б17); два прежних временных уехали в `archive/reports/` 02.09; счёт бэклога — бюллетенем ниже, открытых рядов регистра платформы — 109 (major 1), всего рядов 465 (пере-счёт `python3 docs/scripts/counts.py`; с 04.09 оба числа под гардом `--check`, прежние 95/3 разошлись молча) ⚠ (ревизией 02.09 ряды **154** и **157** переведены из «скоро» в «когда-нибудь»: их гейтом стоял первый холодный прогон, он ОТРАБОТАЛ 31.08 и оба предусловия оказались другими — разбор в самих ячейках, ни одна НЕ закрыта). ⚠ Числа доков `counts.py` НЕ сторожит — при переносе файлов пере-считывать руками командой `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`. ⚠ И предупреждение о МЕТОДЕ, купленное сменой №21: «выглядит протухшим» ≠ «протухло». Три факта оркестратора опровергнуты ЗАМЕРОМ сессий, а якоря `15-money-path.md` в девяти случаях из двенадцати РОДИЛИСЬ верными и сгнили дрейфом — то есть ревизия обязана быть исполнением, а не чтением. ⚠ **ОЧЕРЕДЬ, унаследованная от №21** (три лендинга 31.08 — секция «СОСТОЯНИЕ ПАКОВ» ниже): **(1) ~~РАЗРЫВ ЦИКЛА~~ ЗАМКНУТ ЖИВЬЁМ 04.09** — пользователь получил EPUB настоящего ПЛАТНОГО перевода ЧЕРЕЗ API, `epubcheck` 5.3.0 на СКАЧАННОМ файле 0/0/0/0 (книга `bk_SS5VES2JELESJSTR`, потрачено $0.278319 из гранта $0.60 при потолке пака $1.5, санкция D39.189). Дверь выдачи построена и проверена исполнением: `202`+`Location`, поллинг с `Retry-After`, Range 206 · второй клиент 200 · аноним 401 · чужая книга 404, TTL с GC, идемпотентность третьего создающего вызова. Все ТРИ сценария строки 216 предъявлены живьём (подпись банка · halt на потолке с exit 4 · `409 run_not_resumable/ceiling_reached` и лечение новым прогоном). +> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-09-10, голова D39.241 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №23** (единственный носитель — здесь; роль передана 06.09, №22 закрыт нотой передачи D39.217; ⚠ испр. 06.09: коммит передачи `c992ee5` бампнул голову и НЕ тронул номер — гейта на номер очереди нет вовсе, `counts.py` сверяет только голову, поэтому носитель разошёлся молча). ⚠ **ЗАКАЗ ВЛАДЕЛЬЦА 01.09 — ИСПОЛНЕН, испр. 08.09 (висел как «первым» неделю после исполнения):** (0а) ревизия документации на протухшее ОТРАБОТАНА 01.09 воркфлоу `docs-staleness-revision-A` (15 срезов), провенанс находок — `D39.185`; (0б) планы доработок в бэкенд и платформу — исполняются ПАКАМИ, за 07–08.09 закрыты два движковых (`D39.225`, `D39.226`); (0в) вынос неактуального в архив идёт батчами `DOC_CLEANUP_PLAN.md` (Б14/Б15/Б17 живы). ⇒ строка ниже — не заказ, а история: (0а) ревизия документации на ПРОТУХШЕЕ — по всем зонам; (0б) планы доработок в БЭКЕНД и ПЛАТФОРМУ; (0в) вынос неактуального в АРХИВ (`docs/archive/`, `platform/docs/archive/`) — за сутки 31.08 закрыто много, и часть носителей стала историей. ⚠ Трезвость по масштабу (пере-считано 02.09): **94** живых дока в `docs/` (пере-счёт 04.09: `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`), 8 в `platform/docs`, 9 в `backend/docs` — ⚠ из 94 ВРЕМЕННЫЙ остался ОДИН (`DOC_CLEANUP_PLAN`, живой до закрытия батчей Б14/Б15/Б17); два прежних временных уехали в `archive/reports/` 02.09; счёт бэклога — бюллетенем ниже, открытых рядов регистра платформы — 109 (major 1), всего рядов 465 (пере-счёт `python3 docs/scripts/counts.py`; с 04.09 оба числа под гардом `--check`, прежние 95/3 разошлись молча) ⚠ (ревизией 02.09 ряды **154** и **157** переведены из «скоро» в «когда-нибудь»: их гейтом стоял первый холодный прогон, он ОТРАБОТАЛ 31.08 и оба предусловия оказались другими — разбор в самих ячейках, ни одна НЕ закрыта). ⚠ Числа доков `counts.py` НЕ сторожит — при переносе файлов пере-считывать руками командой `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`. ⚠ И предупреждение о МЕТОДЕ, купленное сменой №21: «выглядит протухшим» ≠ «протухло». Три факта оркестратора опровергнуты ЗАМЕРОМ сессий, а якоря `15-money-path.md` в девяти случаях из двенадцати РОДИЛИСЬ верными и сгнили дрейфом — то есть ревизия обязана быть исполнением, а не чтением. ⚠ **ОЧЕРЕДЬ, унаследованная от №21** (три лендинга 31.08 — секция «СОСТОЯНИЕ ПАКОВ» ниже): **(1) ~~РАЗРЫВ ЦИКЛА~~ ЗАМКНУТ ЖИВЬЁМ 04.09** — пользователь получил EPUB настоящего ПЛАТНОГО перевода ЧЕРЕЗ API, `epubcheck` 5.3.0 на СКАЧАННОМ файле 0/0/0/0 (книга `bk_SS5VES2JELESJSTR`, потрачено $0.278319 из гранта $0.60 при потолке пака $1.5, санкция D39.189). Дверь выдачи построена и проверена исполнением: `202`+`Location`, поллинг с `Retry-After`, Range 206 · второй клиент 200 · аноним 401 · чужая книга 404, TTL с GC, идемпотентность третьего создающего вызова. Все ТРИ сценария строки 216 предъявлены живьём (подпись банка · halt на потолке с exit 4 · `409 run_not_resumable/ceiling_reached` и лечение новым прогоном). > ⛔ **ПЯТЬ ПОТОКОВ РАБОТЫ — состояние на 07.09 (пере-снято лендингами смены №23).** > **(1) ПОЛИГОН — «ремонт прибора»** (`docs/POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md`, строки 319 · 300 · 265 · 143): > ⚠ **ЕДИНСТВЕННЫЙ ПОТОК, НЕ СДВИНУВШИЙСЯ ЗА СМЕНУ — сессия по промту так и не стартовала.** Блокирующая линза @@ -13,6 +13,7 @@ > `3d90943`). Строки 285 · 305 · 325 закрыты. ⚠ **Синхронный разрез приёма принят ПОСТРОЕННЫМ, НО НЕ ГОТОВЫМ** — > сработало правило остановки (9 major из 11 в одном механизме), десять пунктов несёт строка **332**; ложный > инвариант бюджета заландён осознанно (окно лжи 8 секунд при дефолте в 16 минутах, ломается идемпотентность). +> **(17) ✅ ОБЕ СЕССИИ ЗАКРЫТЫ, акт `D39.241`.** Движок откачен полностью — батарея вернулась к входной строке смены (19 `ok` · 0 FAIL · 4 скипа), пере-снято моим прибором. Платформа сдала `--no-block` С ПИНОМ — единственное, что владелец взял из отменённого пака; куплен пин на ЧУЖОЕ поведение (systemd), на котором молча держалось утверждение в коде свипа. ⛔ Откат не смогла выполнить ни одна сессия, включая мою: запрет сработал одинаково, обходить не стала ни одна, дерево снял владелец. Живой журнал похудел на 19 % — закрытая хроника вынесена срезом (`7af35da`), три её одиноких утверждения получили дом строкой **402**. > **(16) ⛔ ПАК «ДВЕ ОСТАНОВКИ» ОТМЕНЁН ВЛАДЕЛЬЦЕМ до лендинга — акт `D39.240`.** Причина — размах (18 файлов движка), не риск: работа была почти целиком добавочной (+633/−84, 61 удалённая не-тестовая строка, сборка чистая). **Предмет заменён и сужен: остановка остаётся ЖЁСТКОЙ, деньги терять ДОПУСТИМО, но она обязана быть КОРРЕКТНОЙ** — без гонок, без половинчатых состояний, с верным возобновлением. Обе сессии откатывают свои зоны; знание снято с них ДО отката. ⭐ Пак оставил после себя пять нот (`D39.236`–`D39.240`) и две строки (**384**, **385**). > **(15) ⛔ ДВА SIGTERM ПОДРЯД GO-ПРОЦЕСС ВИДИТ КАК ОДИН — акт `D39.238`, замерено дважды независимо** (`gap 0` → 0 из 20, `gap 1 мс` → 20 из 20, контроль 5 из 5). Ратифицированная форма двух остановок стояла на посылке «послать два = получить два», которой нет: «останови сейчас» первым нажатием давало бы МЯГКУЮ остановку молча, а пере-выпуск жёсткого сигнала свипом — третий SIGTERM, то есть смерть без кадра и сеттла. Форма остаётся, добавлен контракт: сигналы упорядочены НАБЛЮДЕНИЕМ, факт доставки долговечен. ⭐ Первая серия замера была неверна ПРИБОРОМ и дала противоположный ответ — сессия починила прибор и назвала это сама. > **(14) ОБЕ СЕССИИ ПАКА «ДВЕ ОСТАНОВКИ» ПРИНЯЛИ РАБОТУ И ОТВЕТИЛИ ЭХО-ПРОТОКОЛОМ; шесть возражений, шесть приняты — акт `D39.236`.** Три из них — ошибки В МОИХ ПАКАХ (счётчик оценки копился бы с нуля и пин равенства был бы вакуумен · «опора готова» для строки оператору · неверный механизм следствия у блокирующего `stop`), одно — правило версий, которое я нарушил бы молча. ⭐ Все шесть пришли ПОСЛЕ двух кругов ревью: эхо-протокол оказался третьим рубежом, а не формальностью входа. diff --git a/docs/architecture/05-decisions-index.md b/docs/architecture/05-decisions-index.md index b3a3b4cd..28d214b4 100644 --- a/docs/architecture/05-decisions-index.md +++ b/docs/architecture/05-decisions-index.md @@ -1,4 +1,4 @@ -# Реестр D-нот — карта актуальности v2 (D1–D39.240; титул — носитель головы, бампать при каждом аппенде) +# Реестр D-нот — карта актуальности v2 (D1–D39.241; титул — носитель головы, бампать при каждом аппенде) > ⚠ **Колонку «тело» `counts.py --check` НЕ сторожит по устройству:** он сверяет полноту НОМЕРОВ, а не > место тела, поэтому колонка держится дисциплиной лендинга. Не нашёл тело по колонке — иди в слайсы, @@ -299,3 +299,4 @@ | D39.238 | 10.09 | ⛔ **ДВА SIGTERM ПОДРЯД GO-ПРОЦЕСС ВИДИТ КАК ОДИН** — замерено дважды независимо: `gap 0` → **0 из 20**, `gap 1 мс` → 20 из 20, контроль `gap 100 мс` → 5 из 5; коалесценция ниже канала (`runtime/sigqueue` держит БИТ, не счётчик), буфер не чинит. ⇒ ратифицированная форма «первый мягкий, второй жёсткий, третий дефолт» (`D39.234` п.1а) стояла на посылке «послать два = получить два», которой НЕТ: `mode: hard` первым нажатием давал бы МЯГКУЮ остановку молча, а пере-выпуск жёсткого сигнала свипом — ТРЕТИЙ SIGTERM, то есть смерть без кадра и сеттла. Контракт: сигналы упорядочены НАБЛЮДЕНИЕМ входа в фазу остановки, факт доставки долговечен. ⭐ Первый замер был неверен из-за прибора и дал противоположное число — сессия починила прибор и назвала это сама | стоп · шов · метод | | D39.239 | 10.09 | **СЛОВО ВЛАДЕЛЬЦА: у продукта ДВЕ поверхности — ЛЕНДИНГ и IDE** («модель как у любого ИИ-продукта»); лендинга нет ни кодом, ни строкой, а `frontend/` — это IDE, строка **384**. **Замер, где живут учётки:** логин настоящий (OIDC + dev), **учётка создаётся САМА при первом входе**, пригласительного гейта НЕТ вовсе, дверь закрыта только конфигурацией (пустой issuer ⇒ поверхность не монтируется), оплаты нет намеренно. ⚠ Исправление моего же ответа владельцу: **`sqlc` УЖЕ используется** (1232 строки из 5688 в `pgstore`), моё «генератор срезал бы» было ложью из формы файлов. **Мандат владельца: протухшую прозу можно СНОСИТЬ**, диффы окаются у старшего коллеги; границы сноса — п.4 | продукт · учётки · доки | | D39.240 | 10.09 | **ПАК «ДВЕ ОСТАНОВКИ» ОТМЕНЁН ВЛАДЕЛЬЦЕМ до лендинга** — по РАЗМАХУ, не по риску: замер показал +633/−84 в движке при 61 удалённой не-тестовой строке и чистой сборке. **Предмет ЗАМЕНЁН и сужен:** остановка остаётся ЖЁСТКОЙ, **деньги терять ДОПУСТИМО**, но обязана быть КОРРЕКТНОЙ — без гонок, без половинчатых состояний, с верным возобновлением. Снимаются сеттл на остановке, лестница эскалации, режим `/stop`, минор потока. ⭐ Диагноз размаха: причин «перестать тратить» ТРИ, решение принимается в ЧЕТЫРЁХ точках ⇒ недо-абстракция, строка **385**. Знание снято с сессий ДО отката. Константа версии контракта НЕ откатывается — чужой долг | продукт · стоп · архитектура | +| D39.241 | 11.09 | **АКТ ЗАКРЫТИЯ обеих сессий пака «две остановки».** Движок ОТКАЧЕН полностью (18 путей + 6 файлов; батарея вернулась к входной строке: 19 `ok` · 0 FAIL · 4 скипа). ⛔ Откат не смогла сделать НИ ОДНА сессия, включая оркестраторскую — запрет сработал одинаково, обходить его не стала ни одна, дерево снял владелец одной командой. Платформа сдала `--no-block` **с пином**: три мутации засчитаны по ТЕКСТУ, живой пин ×5 зелёный, argv-пин отдельно — чтобы флаг не остался непроверенным на хосте без systemd. ⭐ Куплен пин на ЧУЖОЕ поведение: «повторный стоп бесплатен и идемпотентен» держалось на недокументированном systemd. От отменённого пака осталось 7 нот и 23 строки трекера; одна МОЯ строка (399) была ложной и пере-написана до заказа | приёмка · стоп · метод | diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index 7d68e6c8..2d6d8681 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1,4 +1,4 @@ -# Журнал решений оркестратора — контракт D1–D39.240 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) +# Журнал решений оркестратора — контракт D1–D39.241 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) > **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто: > ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 — в слайсе `../archive/architecture/05-decisions-D39-106-123.md` (испр. 05.09: прежнее «живёт ниже в этом файле» протухло подрезкой D39.139) (голова D39.106+). @@ -3407,3 +3407,19 @@ bought NOTHING». ⇒ **`tmctl manifest` есть НИЖНЯЯ граница, **7. Что пак успел купить НАВСЕГДА.** `D39.236` — четыре ошибки в моих же паках, найденные сессиями на эхо-протоколе, ПОСЛЕ двух кругов ревью. `D39.237` — блокирующий `systemctl stop` без `--no-block` и инертность повторного стопа на `deactivating`. `D39.238` — коалесценция двух SIGTERM в один (0 из 20 при нулевом зазоре), с уроком о приборе, который сначала дал противоположный ответ. `D39.239` — модель «лендинг + IDE» и замер, где живут учётки. Строка **385** — диагноз архитектуры. ⇒ отменённый пак оставил после себя пять нот и две строки; это цена, которую стоит помнить, когда в следующий раз будет казаться, что отменённая работа пропала зря. **8. Границы.** Числа п.3 сняты мной. Диагноз п.4 — мой, послан на проверку старшему коллеге и может быть опровергнут. Новый предмет п.2 сформулирован ЕГО словами; правильность моего прочтения границы («что именно теперь обязано соблюдаться») отдана на ревью до написания любого пака — я не пишу пак, пока не получу ок на границу. + +## D39.241 — АКТ ЗАКРЫТИЯ ОБЕИХ СЕССИЙ ПАКА «ДВЕ ОСТАНОВКИ»: движок откачен до строки, платформа сдала `--no-block` с пином (11.09, оркестратор №23) ✅ + +**1. Движковая зона ОТКАЧЕНА ПОЛНОСТЬЮ, пере-снято моим прибором.** 18 путей к HEAD, 6 новых файлов удалены; `git status --porcelain backend/` и `git ls-files --others backend/` — **оба пусты**; сборка чистая; батарея вернулась к ВХОДНОЙ строке смены: **19 `ok` · 0 FAIL · 4 «no test files» · 4 скипа** (`TestMinerFullBookParity` · `TestCorpusBankKeyConflicts` · `TestHelperEventsRun` · `TestHelperKillLoop`). ⚠ Единственное расхождение с ожиданием сессии — каталог сообщений оператора: она ждала 118 строк, в файле 126. Проверил: 126 было и на `3f05fab`, и на `121c3c7`, и на HEAD, а её двух сообщений там **0 хитов** ⇒ ошибка была в её памяти о числе, откат точен. + +**2. ⛔ ОТКАТ НЕ СМОГЛА СДЕЛАТЬ НИ ОДНА СЕССИЯ, ВКЛЮЧАЯ ОРКЕСТРАТОРСКУЮ, и это правильно сработавший рубеж, а не помеха.** Движковой команду отклонили её разрешения; она отказалась обходить и — отдельно ценное — отказалась просить меня сделать это ЗА неё, назвав это «тем же routing вокруг решения, только зеркально». Я попробовал своей рукой: **отклонено и у меня тем же запретом**. ⇒ ни одна из нас не пыталась найти щель, и дерево снял ВЛАДЕЛЕЦ одной командой в своём окне. Норма, которую это подтверждает: запрет, обойдённый «через соседа», перестаёт быть запретом — и цена соблюдения здесь оказалась одна реплика. + +**3. Платформенная зона сдала `--no-block` С ПИНОМ — единственное, что владелец взял из отменённого пака.** `platform/internal/runner/runner.go` +36/−1, пин `stop_systemd_test.go` 185 строк, argv-пин в `runner_test.go` +28, комментарий свипа +9. **Числа зоны:** `make check` MAKE-EXIT=0 · 20 `ok` · 0 FAIL · линтер «0 issues» · 5 скипов с одним названным условием · `PD-count` не сдвинут; живой пин ×5 — 5 зелёных, один сигнал во всех пяти, смерть юнита 6,04–6,12 с при пороге 8. **Мутации — три посадки на копии, засчитаны ПО ТЕКСТУ:** снятый флаг → «the stop waits for the unit to be gone»; доставляющая пере-выдача → «received 3 signals … want exactly 1»; часы от позднего стопа → «died at t+10,09s against a 6s grace». ⭐ И она сама назвала, чего пин НЕ ловит: без флага первый стоп блокируется на весь грейс, остальные приходят на мёртвый юнит и числа сходятся прежние — поэтому argv-пин написан ОТДЕЛЬНО, чтобы флаг не остался непроверенным на хосте без пользовательского systemd. + +**4. ⭐ ГЛАВНОЕ, ЧТО КУПИЛ ЭТОТ ЗАХОД, — не флаг, а ПИН НА ЧУЖОЕ ПОВЕДЕНИЕ.** В коде свипа стояло утверждение «asking again is free and idempotent», и оно держалось на недокументированном поведении systemd, которого никто не проверял. Теперь обе половины замерены и записаны в коде: повторный стоп на останавливающемся юните НЕ шлёт второго сигнала И НЕ перезапускает срок убийства. Цена ошибки в каждой половине названа там же: без первой — свип сигналил бы прогону каждым проходом; без второй — подстраховка убийством отодвигалась бы на проход каждый раз, и заклинивший движок держал бы лок книги вечно. + +**5. Дисциплина замера обеих сессий — то, ради чего эту смену стоит помнить.** Платформенная: первая серия про коалесценцию сигналов дала ПРОТИВОПОЛОЖНЫЙ ответ, она нашла ошибку в СВОЁМ приборе и назвала её сама (`D39.238` п.5). Движковая: отказалась подтверждать три находки, приписанные ей через третьи руки, и назвала, что по одной из них у неё **нет данных вовсе** — мутационный прогон не запускался ни разу (норма записана в ролевой промт). Обе написали непустое «что не удалось» тогда, когда работа уже откатывалась и отчёт никто не принял бы. + +**6. Что осталось в репозитории от отменённого пака.** Семь нот (`D39.235`–`D39.241`), **двадцать три строки трекера** (**372** дополнена замером двух источников отмены · **375** — ⛔-половиной про затирание вердикта · **381** превращена в надгробие · **383**–**402** заведены), инвентарь носителей отмены и секция «что проверено чем» в журнале движковой зоны (`ab7b3c4`), и одна заландженная правка с пином. ⚠ **Одна из моих строк была ЛОЖНОЙ и пере-написана до заказа:** **399** утверждала, что у состояния «запаркована» нет носителя — их четыре, и пере-снял это не я. Уйди она в пак как написана — пак пошёл бы строить построенное. + +**7. Границы.** Пункт 1 пере-снят мной целиком. Пункт 3 — числа ЗОНЫ: четыре гейта стенда у меня не подняты, живой пин и мутации я не воспроизводил и говорю это прямо. Пункт 5 — факты о поведении сессий, а не оценка их работы.