Close the two-stop packs the owner called off before landing, and write down what replaces them: a stop that may lose money but must leave nothing half-written.
This commit is contained in:
parent
2cbf2e5119
commit
aa78047b50
6 changed files with 47 additions and 5 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Журнал прогресса
|
||||
|
||||
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-09-10, голова D39.239 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и 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.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` и лечение новым прогоном).
|
||||
> ⛔ **ПЯТЬ ПОТОКОВ РАБОТЫ — состояние на 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 минутах, ломается идемпотентность).
|
||||
> **(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`), одно — правило версий, которое я нарушил бы молча. ⭐ Все шесть пришли ПОСЛЕ двух кругов ревью: эхо-протокол оказался третьим рубежом, а не формальностью входа.
|
||||
> **(13) ДВА ПАРНЫХ ПРОМТА «ДВЕ ОСТАНОВКИ» ВЫДАНЫ, акт `D39.235`** — движковый и платформенный, порознь не лендятся. Форма кадра остановки ЗАФИКСИРОВАНА нотой ДО старта работ (две зоны, один шов). ⛔ Эррата к `D39.234` п.1б: мой механизм «отказ на гейте» ратифицированных ~20 минут не даёт — резервация держит всю цепочку ретраев. ⛔ Замером исполнением найдено, что платформенный `Stop` без `--no-block` блокируется на весь грейс и сломал бы `202` контракта. **Сплошной инвентарь живых доков по слову владельца: 19 мест починено**, контракт исправлен минором `0.13.1` (схема требовала отставленный член ⇒ каждый ответ `Run` был невалиден).
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@
|
|||
| Роль | Активный промт | Статус |
|
||||
|---|---|---|
|
||||
| Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE |
|
||||
| **Бэкенд · ДВЕ ОСТАНОВКИ** | [BACKEND_SOFT_STOP_SESSION_PROMPT.md](BACKEND_SOFT_STOP_SESSION_PROMPT.md) | ⚠ **ВЫДАН 10.09, акт `D39.235`. ПАРНЫЙ — порознь с платформенным НЕ лендится.** Мягкая остановка (первое нажатие) и жёсткая (второе): новых единиц не раздаём, начатое доигрываем, ничего не рвём — деньги за начатые генерации перестают сгорать. Строки **381** · **382** · **377** · **372** · **375** · **379**а. ОДНА сессия, ДВА лендинга с объявленной линией. $0 |
|
||||
| **Платформа · ДВЕ ОСТАНОВКИ** | [PLATFORM_SOFT_STOP_SESSION_PROMPT.md](PLATFORM_SOFT_STOP_SESSION_PROMPT.md) | ⚠ **ВЫДАН 10.09, акт `D39.235`. ПАРНЫЙ.** Грейс выше законного ожидания движка (600 с против 1240 с), `mode: soft|hard` у `/stop` с мягким дефолтом, путь второго сигнала, чтение оценочных строк. ⛔ Первым делом — `--no-block` у `Stop`: без него мягкий стоп ломает `202` контракта (замерено). $0 |
|
||||
| Бэкенд · ДВЕ ОСТАНОВКИ | активного НЕТ | пак ОТМЕНЁН ВЛАДЕЛЬЦЕМ 10.09 до лендинга — акт **D39.240**; промт в `archive/prompts/` с баннером. Причина — размах правки, не качество. ⚠ Предмет ЗАМЕНЁН и сузился: остановка остаётся жёсткой, **деньги терять допустимо**, но она обязана быть КОРРЕКТНОЙ (без гонок, без половинчатых состояний, верное возобновление). ⭐ Пак успел купить `D39.236`–`D39.238` и строку **385** |
|
||||
| Платформа · ДВЕ ОСТАНОВКИ | активного НЕТ | пак ОТМЕНЁН ВЛАДЕЛЬЦЕМ 10.09 до лендинга — акт **D39.240**; промт в `archive/prompts/` с баннером. Причина — размах правки, не качество. ⚠ Предмет ЗАМЕНЁН и сузился: остановка остаётся жёсткой, **деньги терять допустимо**, но она обязана быть КОРРЕКТНОЙ (без гонок, без половинчатых состояний, верное возобновление). ⭐ Пак успел купить `D39.236`–`D39.238` и строку **385** |
|
||||
| Бэкенд · ВЫЗОВ, КОТОРЫЙ ОБОРВАЛИ МЫ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 10.09** — акт **D39.232** (`3f05fab`, 28 путей, $0); промт в `archive/prompts/` с баннером-исходом. Движок перестал платить дважды за одну генерацию; закрыты строки 360 · 369 · 78. Восемь кругов ревью; приёмка двумя рубежами нашла пять выживших мутаций на носителях ВИДИМОСТИ денег. Живое из остатков — **375** · **376** · **377** (⚠ форма испр. 10.09: здесь стоял ДИАПАЗОН «374–377», а 374 закрыта — диапазон о закрытии ряда внутри себя не узнаёт, поэтому в этой таблице только перечисления) |
|
||||
| Бэкенд · ДВИЖОК УЖЕ ЗНАЕТ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДВУМЯ ДОФИКСАМИ 08.09** — акт **D39.228** (`2b6f1f4`, 21 путь); промт в `archive/prompts/` с баннером-исходом. Закрыты строки 355 · 357 · 358; у **253** и **312** закрыта ДВИЖКОВАЯ половина, платформенная жива (испр. 08.09 по кросс-модельному ревью: акт объявил обе закрытыми целиком). Живое из не взятого — **362** (ремонт против ремонта, 77 % денег чанка) и **363** (текстовый сайдкар молчит о неполноте); **360** ждёт слова владельца по денежной половине |
|
||||
| Бэкенд · КОНСИСТЕНТНОСТЬ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 07.09** — акт **D39.222**; промт в `archive/prompts/` с баннером исхода. Строки 267 и 318 закрыты, у 320 исполнена половина (а). Живой остаток зоны ЗАКРЫТ актом **D39.226** (строки 333–338); живое — **353** · **354** · **356** · **359** (⚠ форма испр. 10.09: стоял диапазон «353–359», а 355 · 357 · 358 закрыты) |
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Реестр D-нот — карта актуальности v2 (D1–D39.239; титул — носитель головы, бампать при каждом аппенде)
|
||||
# Реестр D-нот — карта актуальности v2 (D1–D39.240; титул — носитель головы, бампать при каждом аппенде)
|
||||
|
||||
> ⚠ **Колонку «тело» `counts.py --check` НЕ сторожит по устройству:** он сверяет полноту НОМЕРОВ, а не
|
||||
> место тела, поэтому колонка держится дисциплиной лендинга. Не нашёл тело по колонке — иди в слайсы,
|
||||
|
|
@ -298,3 +298,4 @@
|
|||
| D39.237 | 10.09 | **ЗАПИСКА-ПЛАН ПЛАТФОРМЫ.** ⛔ Мой корректирующий минор контракта (`D39.235` п.6) положил гейт ЧУЖОЙ зоны — базовая линия была красной на входе сессии; носитель один (`platform/internal/httpapi/capabilities.go`), правку берёт сессия. **Норма: правка ратифицированного носителя сверяется с ГЕЙТАМИ на него тем же движением** (второй раз за две недели, ср. эрратy 08.09-б). ⭐ Сессия нашла сверх заказа: повторный `stop --no-block` по `deactivating` НЕ шлёт второй SIGTERM — иначе свип давал бы АВТОМАТИЧЕСКУЮ эскалацию в жёсткую остановку; свойство держалось на удаче, теперь пинится. Потолок ожидания — свойство каталога И бюджета: беcключевой `zai` перерастает 1240 с при `edit_ceiling_out` ≈ 9 900 против 8 000 сегодня. Нетухнущая форма — строка **383** | стоп · шов · метод |
|
||||
| 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**. Знание снято с сессий ДО отката. Константа версии контракта НЕ откатывается — чужой долг | продукт · стоп · архитектура |
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Журнал решений оркестратора — контракт D1–D39.239 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
|
||||
# Журнал решений оркестратора — контракт D1–D39.240 (живой файл: карта · эрраты · живые тела · голова 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+).
|
||||
|
|
@ -3388,3 +3388,21 @@ bought NOTHING». ⇒ **`tmctl manifest` есть НИЖНЯЯ граница,
|
|||
**4. МАНДАТ НА СНОС, выданный владельцем прямым словом.** «Надо доактуализировать документацию… разрешаю СПИЛИТЬ прозу и воду, которая уже неактуальна — только аккуратно, окай диффы у Fable». ⇒ до сих пор протухшее ПОМЕЧАЛОСЬ (⚠-испр., баннер, эррата); теперь его можно УДАЛЯТЬ. ⛔ Границы, которые ставлю себе сам, потому что владелец сказал «аккуратно»: **(а)** тела D-нот не переписываются и не сносятся (D23.3) — только шапка и эрраты; **(б)** отчёты `docs/research/**` — улика, им баннер, не нож; **(в)** чужие зоны (`docs/experiments/**`, `backend/docs/`, `frontend/docs/`, `platform/docs/`) не трогаю ни при каком мандате; **(г)** каждый снос предъявляется диффом на ревью старшего коллеги ДО коммита — это условие владельца, а не моя осторожность; **(д)** сносится ПРОЗА, объявленная протухшей ЗАМЕРОМ, а не то, что мне кажется лишним.
|
||||
|
||||
**5. Границы.** Пункты 2 и 3 пере-сняты мной на дереве, с адресами. Пункт 1 — прямая речь владельца, не вывод. Пункт 4 — его же мандат, границы (а)–(д) мои и объявлены здесь, чтобы их можно было оспорить.
|
||||
|
||||
## D39.240 — СЛОВО ВЛАДЕЛЬЦА: пак «две остановки» ОТМЕНЁН до лендинга; предмет заменён на КОРРЕКТНОСТЬ остановки, деньги терять допустимо (10.09, оркестратор №23) ✅
|
||||
|
||||
**1. Решение и его дословное основание.** «Я не хочу сильно рушить архитектуру ради этих двух изменений, фактически они не очень-то и нужны. Стопать прогон надо уметь… Давай ничего не делать, откатывай изменения». ⇒ обе половины пака отменены ДО лендинга, работа обеих сессий откачена, ничего не было закоммичено. ⚠ Отмена — не претензия к качеству: обе сессии отработали сильно и нашли то, чего не нашли два круга ревью до них.
|
||||
|
||||
**2. НОВЫЙ ПРЕДМЕТ, тоже дословно:** «у нас будет жёсткий стоп всех запросов, но при этом хотелось бы всё же иметь graceful shutdown, то есть без гонок в коде и прочем. Ну по RAII и прочему такому, чтоб бэкенд при стопе не оставил за собой неконсистентности (как и платформа) и чтоб можно было правильно возобновить. **Деньги потерять допустимо.**» ⇒ предмет переезжает с «не сжечь деньги» на «не оставить мусор и правильно продолжить». **Это сильное СУЖЕНИЕ:** снимаются сеттл на остановке, пометки оценки, вопрос перепокупки, вся лестница эскалации, режим у `/stop`, долговечная отметка доставки и минор словаря потока. Инвариант к соблюдению один: **после жёсткой остановки стор в состоянии, из которого следующий прогон продолжает ВЕРНО; ни одна запись не половинчата; ни одна горутина не пишет после того, как всё решено.**
|
||||
|
||||
**3. Замер, на котором принято решение — привожу, потому что решение принято ПО НЕМУ, а не по впечатлению.** Движок: 18 файлов, **+633 / −84**, в не-тестовом коде удалено ВСЕГО **61** строка, сборка чистая; каждое удаление — смена сигнатуры или замена ветви, прямо заказанная паком. Платформа: 27 файлов, +1042 / −119. То есть работа была почти целиком ДОБАВОЧНОЙ, и «похерили много» — не то, что происходило. Владелец отменил не по риску разрушения, а по РАЗМАХУ: цена не сходилась с ценностью.
|
||||
|
||||
**4. ⭐ ПОЧЕМУ РАЗМАХ БЫЛ ТАКИМ — диагноз, который пережил пак.** Причин «перестать тратить» у движка ТРИ, и каждая протянута руками через свой набор носителей: денежный потолок — 6 файлов, объёмный грант — 4, остановка человеком — 7; `waverun.go` и `cmd/tmctl/main.go` несут ВСЕ ТРИ. Решение «тратить или нет» принимается в ЧЕТЫРЁХ независимых точках, каждая в своём словаре: фидер волны, денежный гейт, петля ретраев, попартийный приём банка. ⇒ **недо-абстракция, а не оверхед**: не хватает распорядителя допуска к трате, и за его отсутствие платит каждая новая причина. Чинить сейчас НЕ надо — риск больше пользы. Строка **385**.
|
||||
|
||||
**5. Что откачено и что НАМЕРЕННО оставлено.** Откат делает каждая зона своей рукой в своей зоне; оркестратор сверяет. ⚠ **Одна правка НЕ откатывается: константа версии контракта в `platform/internal/httpapi/capabilities.go`** — это чужой долг, который платформенная сессия взяла попутно (гейт краснел из-за моего минора `0.13.1`, `D39.237` п.1), к отменённому паку отношения не имеющий; лендится отдельно.
|
||||
|
||||
**6. Знание снято ДО отката, и это часть решения, а не вежливость.** Обеим сессиям послан вопрос ПЕРЕД откатом: что в путях остановки не консистентно УЖЕ СЕГОДНЯ; какие гонки они видели кодом; что из построенного служит НОВОМУ инварианту; что из узнанного о дереве не должно пропасть. Довод: код восстанавливать неоткуда (ничего не закоммичено), а знание двух смен в самых горячих путях дороже кода, который его нёс.
|
||||
|
||||
**7. Что пак успел купить НАВСЕГДА.** `D39.236` — четыре ошибки в моих же паках, найденные сессиями на эхо-протоколе, ПОСЛЕ двух кругов ревью. `D39.237` — блокирующий `systemctl stop` без `--no-block` и инертность повторного стопа на `deactivating`. `D39.238` — коалесценция двух SIGTERM в один (0 из 20 при нулевом зазоре), с уроком о приборе, который сначала дал противоположный ответ. `D39.239` — модель «лендинг + IDE» и замер, где живут учётки. Строка **385** — диагноз архитектуры. ⇒ отменённый пак оставил после себя пять нот и две строки; это цена, которую стоит помнить, когда в следующий раз будет казаться, что отменённая работа пропала зря.
|
||||
|
||||
**8. Границы.** Числа п.3 сняты мной. Диагноз п.4 — мой, послан на проверку старшему коллеге и может быть опровергнут. Новый предмет п.2 сформулирован ЕГО словами; правильность моего прочтения границы («что именно теперь обязано соблюдаться») отдана на ревью до написания любого пака — я не пишу пак, пока не получу ок на границу.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
> ⛔⛔ **ОТМЕНЁН ВЛАДЕЛЬЦЕМ 10.09, ДО ЛЕНДИНГА. Инструкции ниже НЕ исполняются.**
|
||||
> Причина — не качество пака и не ошибка сессии, а РАЗМАХ: «не хочу сильно рушить архитектуру ради этих двух
|
||||
> изменений, фактически они не очень-то и нужны». Работа обеих сессий откачена, ничего не было закоммичено.
|
||||
> ⚠ **Предмет НЕ исчез, он ЗАМЕНЁН и сузился** (`D39.240`): остановка остаётся ЖЁСТКОЙ, **деньги терять
|
||||
> ДОПУСТИМО** — но она обязана быть корректной: без гонок, без половинчатых состояний, чтобы ни движок, ни
|
||||
> платформа не оставили неконсистентности и чтобы возобновление было правильным.
|
||||
> ⭐ **Что пак успел купить и что осталось навсегда:** коалесценция двух SIGTERM в один (`D39.238`),
|
||||
> блокирующий `systemctl stop` без `--no-block` (`D39.237` п.4), инертность повторного стопа на `deactivating`
|
||||
> (`D39.237` п.2), четыре ошибки в моих же паках, найденные сессиями (`D39.236`), и диагноз архитектуры:
|
||||
> у вопроса «можно ли ещё покупать» нет единственного хозяина — строка **385**.
|
||||
|
||||
> ⚠ **ЭТО ХЕНДОФФ-ПРОМТ ДВИЖКОВОЙ СЕССИИ. Он живой и исполняется.** Прочитай `CLAUDE.md`, потом этот
|
||||
> файл целиком, потом — его карту чтения (§3) и больше ничего, пока не появится вопрос.
|
||||
> ⛔ **ПАК ПАРНЫЙ.** Твоя половина не лендится в одиночку: у платформы есть своя, и они принимаются
|
||||
|
|
@ -1,3 +1,14 @@
|
|||
> ⛔⛔ **ОТМЕНЁН ВЛАДЕЛЬЦЕМ 10.09, ДО ЛЕНДИНГА. Инструкции ниже НЕ исполняются.**
|
||||
> Причина — не качество пака и не ошибка сессии, а РАЗМАХ: «не хочу сильно рушить архитектуру ради этих двух
|
||||
> изменений, фактически они не очень-то и нужны». Работа обеих сессий откачена, ничего не было закоммичено.
|
||||
> ⚠ **Предмет НЕ исчез, он ЗАМЕНЁН и сузился** (`D39.240`): остановка остаётся ЖЁСТКОЙ, **деньги терять
|
||||
> ДОПУСТИМО** — но она обязана быть корректной: без гонок, без половинчатых состояний, чтобы ни движок, ни
|
||||
> платформа не оставили неконсистентности и чтобы возобновление было правильным.
|
||||
> ⭐ **Что пак успел купить и что осталось навсегда:** коалесценция двух SIGTERM в один (`D39.238`),
|
||||
> блокирующий `systemctl stop` без `--no-block` (`D39.237` п.4), инертность повторного стопа на `deactivating`
|
||||
> (`D39.237` п.2), четыре ошибки в моих же паках, найденные сессиями (`D39.236`), и диагноз архитектуры:
|
||||
> у вопроса «можно ли ещё покупать» нет единственного хозяина — строка **385**.
|
||||
|
||||
> ⚠ **ЭТО ХЕНДОФФ-ПРОМТ ПЛАТФОРМЕННОЙ СЕССИИ. Он живой и исполняется.** Прочитай `CLAUDE.md`, потом
|
||||
> этот файл целиком, потом — его карту чтения (§3) и больше ничего, пока не появится вопрос.
|
||||
> ⛔ **ПАК ПАРНЫЙ.** Твоя половина не лендится в одиночку: движковая делается параллельно другой
|
||||
Loading…
Add table
Reference in a new issue