Put the platform order into the tree with both amendments its reader earned: measure before ruling on log identity, and never free a hold while the process still runs
This commit is contained in:
parent
8a2b9153e6
commit
8c36fb5844
3 changed files with 285 additions and 2 deletions
|
|
@ -0,0 +1,281 @@
|
|||
# Платформенный пак: ОТВЕТ ДВЕРИ НЕ ЗАВИСИТ НИ ОТ ПОРЯДКА, НИ ОТ ВЕЗЕНИЯ
|
||||
|
||||
> Выдан оркестратором №23, 11.09. Зона записи — `platform/`. Пак КОДОВЫЙ, платных вызовов НЕ несёт.
|
||||
> Контрактный минор **0.15.0** едет ТЕМ ЖЕ лендингом (см. §4.1), не раньше.
|
||||
|
||||
## 1. Какая проблема и что решит твой результат
|
||||
|
||||
Платформа — это дверь, за которой читатель заказывает перевод книги и платит за него. У двери сегодня
|
||||
три разных способа ответить неправильно, и все три об одном: **ответ зависит не от фактов книги, а от
|
||||
того, кто успел первым, сколько раз подряд не повезло, и какую половину правды успели спросить.**
|
||||
|
||||
**(а) Человек, дважды нажавший «продолжить», видит ошибку — хотя прогон в этот момент СТАРТОВАЛ.**
|
||||
Два вызова читают состояние, оба видят «можно», гонятся за замок; победитель переводит прогон в
|
||||
`translating`, проигравший доходит до своей проверки и получает отказ «прогон уже переводится». Деньги
|
||||
целы (отказ приходит ДО холда), сломано обещание интерфейса.
|
||||
|
||||
**(б) Книга, чей каталог исчез, принимает прогон и заклинивает его НАВСЕГДА с открытым холдом.** Ни
|
||||
один путь не приходит к терминальному состоянию: прогон вечно `translating`, деньги вечно в холде,
|
||||
пользователю видно только «идёт». Это не редкий класс — тот же клин даёт прогон, запиненный к старой
|
||||
сборке движка.
|
||||
|
||||
**(в) Форма заказа говорит «покрываем всю книгу» над книгой, чей каталог пропал.** Правило допуска
|
||||
разрезано: факты КНИГИ из базы спрашивают обе площадки, а ДИСК спрашивает только дверь. Человек видит
|
||||
зелёный вердикт, жмёт — и получает отказ.
|
||||
|
||||
**Что решит твой результат.** Ответ двери станет **инвариантным к порядку** (а), **конечным** (б) и
|
||||
**опирающимся на факты, которые видит и форма тоже** (в). Мерило — деньги читателя и его доверие к
|
||||
экрану: в бете оплаты нет, но холд, висящий вечно, — это баланс, которым человек не может распорядиться.
|
||||
|
||||
⛔ **Чего этот пак НЕ делает:** не строит эскроу целиком (это `П-18`, отдельный предмет — см. §4.2) ·
|
||||
не трогает `backend/` и `docs/` (кроме канона контракта, §4.1) · не заводит новых ручек API сверх
|
||||
объявленного минора · не меняет модель денег.
|
||||
|
||||
## 2. Зона записи и git
|
||||
|
||||
Зона — **`platform/`**, плюс канон контракта `docs/architecture/14-api-contract/` **только в объёме
|
||||
минора 0.15.0** и только вместе с кодом (§4.1). Читать можно всё; писать — больше никуда.
|
||||
|
||||
⛔ **Ты НЕ коммитишь.** Коммитит оркестратор при лендинге. Готовое дерево оставляешь и сообщаешь. Не
|
||||
делай `git add`, `git commit`, `git stash`, `reset --hard`, `checkout` поверх грязного дерева: в дереве
|
||||
параллельно работают другие сессии, и их незакоммиченные правки стираются безвозвратно. Канон —
|
||||
`CLAUDE.md` §«Git-координация мультисессий», он сильнее этого абзаца.
|
||||
|
||||
Пинги, итоги и вопросы — **ЗОННЫЙ журнал `platform/docs/platform-PROGRESS.md`**. ⚠ В `docs/PROGRESS.md`
|
||||
платформа НЕ пишет (решение владельца). Дефекты — `platform/docs/DEFECT_REGISTER.md`, зонный бэклог —
|
||||
`platform/BACKLOG.md` (неймспейсы `PD-N` и `П-N`).
|
||||
|
||||
## 3. Карта чтения (ЗАКОН, пять позиций; дальше — только по её ссылкам)
|
||||
|
||||
1. `CLAUDE.md` — ты его уже получила.
|
||||
2. ⛔ **`platform/docs/ENGINEERING_STANDARDS.md`** — ратифицированный норматив зоны: §2 базовые стандарты
|
||||
(проверяются КАЖДОЙ приёмкой) и §3 критерии приёмки. **Отступление от него = пинг мне, а не решение
|
||||
на месте.** Это требование канона проекта к каждому платформенному промту, не вежливость.
|
||||
3. `platform/README.md` + `platform/docs/PLATFORM_DIRECTION.md` — механика зоны и ратифицированное
|
||||
направление.
|
||||
4. Ряды реестра **PD-448** · **PD-162** · **PD-466** · **PD-139** (`platform/docs/DEFECT_REGISTER.md`) —
|
||||
предмет целиком, с адресами и замерами.
|
||||
5. `docs/architecture/14-api-contract/` — канон провода. ⚠ **Версию бери ФАЙЛОМ**
|
||||
(`grep '^ version:' openapi.yaml`), не из прозы: на 11.09 там **0.14.0**.
|
||||
|
||||
**Код-факты добывай САМА.** Все `file:line` ниже — отправные точки, а не истина: истина — дерево. Уехавший
|
||||
адрес — находка, и она идёт в отчёт. ⚠ Цитируй адреса по `HEAD`, а не по своему рабочему дереву: отчёт
|
||||
живёт дольше правки, и после лендинга половина адресов, снятых с рабочей копии, укажет в никуда.
|
||||
|
||||
**Ратифицированное, что тебе понадобится (вложено сюда, грепать не надо):**
|
||||
|
||||
* ⭐ **`D39.246` п.6 — направление этого пака, принятое актом.** Дословно: «Окно дефекта — не гонка за
|
||||
уникальный индекс, а **интервал между чтением состояния и взятием замка**… её четвёртый путь — сделать
|
||||
резюм идемпотентным по существу. **Принято как направление, строит СЛЕДУЮЩИЙ пак.**» И критерий, по
|
||||
которому это лечение, а не обход: **ответ становится ИНВАРИАНТНЫМ К ПОРЯДКУ.**
|
||||
* ⭐ **Там же — почему это НЕ обход, и довод не мой:** «гарантию „202 = пере-открыто ЭТИМ вызовом“ проект
|
||||
УЖЕ не держит — дерево отдаёт 202 проигравшему гонку, и это ЗАПИНЕНО. Значит выбор не между починкой и
|
||||
обходом, а между двумя смыслами глагола». Мой исходный довод был опровергнут; наследуй опровержение, а
|
||||
не его.
|
||||
* **`D39.240`** — остановка ЖЁСТКАЯ, деньги терять допустимо, но остановка обязана быть КОРРЕКТНОЙ: без
|
||||
гонок, без половинчатых состояний, с верным возобновлением.
|
||||
* **`D39.176` п.1** — продуктовых КВОТ и фри-тир-лимитов НЕТ и они не проектируются; грант новичку 0 —
|
||||
решение владельца. Не строй ограничителей «на всякий случай».
|
||||
* **`D39.121`** — тесты и гейты не подгонять под зелень. Правка теста, вызванная ЗАКАЗАННОЙ этим паком
|
||||
сменой поведения, — обслуживание, и её надо ОБЪЯВИТЬ в отчёте (что изменилось, какой тест это описывал,
|
||||
куда уехала гарантия). Правка *чтобы прошло* — недопустима.
|
||||
|
||||
## 4. Заказ. У каждого пункта размечена свобода
|
||||
|
||||
### 4.1. Резюм становится идемпотентным по существу — ЯДРО ПАКА · «делай РОВНО так» в части критерия, «реши сама» в части формы
|
||||
|
||||
**Критерий приёмки задан актом и не обсуждается: ответ обязан стать ИНВАРИАНТНЫМ К ПОРЯДКУ.** Два
|
||||
одновременных «продолжить» дают ОДИН холд и ОБА получают прогон — кто бы ни выиграл гонку. Форму
|
||||
реализации выбираешь сама и аргументируешь.
|
||||
|
||||
**Три вещи, которые едут вместе, названы актом:**
|
||||
1. **вырез `stop_requested`;**
|
||||
2. ⛔ **ветка `translating` ВЫШЕ проверки re-pass** — иначе это полуфикс. Поправка принадлежит зоне, а не
|
||||
мне, и я её наследую как есть: если поставить ветку ниже, проигравший по-прежнему успеет получить
|
||||
отказ на части траекторий;
|
||||
3. **НАЗВАННЫЙ остаток окна, под который строить ничего не надо.** ⚠ Это ТРЕБОВАНИЕ, а не разрешение
|
||||
недоделать: в отчёте должен стоять абзац «вот интервал, который остаётся, вот почему под него не
|
||||
строим, вот чем он ограничен». Остаток без имени = дыра; остаток с именем = решение.
|
||||
|
||||
⛔ **КАНОН ПРАВИТСЯ ТЕМ ЖЕ ЛЕНДИНГОМ — минор `0.15.0`, не раньше.** Причина механическая, и она уже
|
||||
кусала зону: гейт версии сверяет объявленную версию с каноном, и если канон уехал вперёд кода, он
|
||||
красит СДАННОЕ дерево. ⇒ правка `openapi.yaml` + компаньона и правка Go лежат в ОДНОМ дереве, которое ты
|
||||
передаёшь мне. Если по ходу выяснится, что четвёртый путь минора не требует вовсе — **скажи это письмом,
|
||||
и мы не будем его двигать**: версия не растёт «за компанию».
|
||||
|
||||
⚠ Отправные точки (пере-снять командой): `platform/internal/runs/runs.go` около `ErrNotResumable` ·
|
||||
`platform/internal/runs/control_test.go` `TestTwoResumesOfOneRunTakeOneHoldAndBothAnswer` — пин
|
||||
действующей гарантии; он и есть носитель того, что сегодня обещано.
|
||||
|
||||
### 4.2. Прогон, заклинивший навсегда с открытым холдом — `PD-162` · «реши сама и аргументируй»
|
||||
|
||||
Сегодня у ЖИВОГО прогона над пропавшим каталогом нет терминального состояния: `bookMeter` вечно падает
|
||||
либо расчёт вечно откладывается, прогон вечно `translating`, холд вечно открыт.
|
||||
|
||||
⚠ **Половина класса уже закрыта паком P5 — не строй её заново:** у ИНТЕЙКА счётчик неудач есть
|
||||
(`books.parseAttempts` = 5 → `rejected` с причиной `parser_unavailable`), и прогон на книге, не прошедшей
|
||||
интейк, отвергается до денег. **Не закрыт ровно живой прогон**, и лечение того же вида: счётчик неудач на
|
||||
стороне реконсилятора, после N — терминальное состояние с внятной причиной и СНЯТЫМ холдом.
|
||||
|
||||
⛔ **Границу проведи и назови сама.** Полный эскроу — это `П-18`, отдельный предмет, и его СТРОИТЬ НЕ
|
||||
НАДО. Вопрос, на который я жду ответа с доводом: **достаточно ли терминального состояния после N неудач,
|
||||
или без эскроу деньги всё равно остаются в неопределённости?** Если достаточно — построй и объяви цену.
|
||||
Если нет — **это законный ответ «в этом паке не закрывается, вот почему»**, и он засчитывается как
|
||||
исполнение пункта.
|
||||
|
||||
⛔ **РЕЛЕЙ 11.09, находка сессии в эхо, и её в заказе НЕ БЫЛО: снятие холда без остановки ЖИВОГО процесса
|
||||
меняет один дефект на худший** — вечный холд превращается в потерянные деньги плюс работающий
|
||||
процесс-сирота. ⇒ **§4.2 исполняется только вместе с ответом «а что с процессом».** Нельзя корректно
|
||||
остановить его в границах пака — терминальное состояние НЕ строится, и это законный исход с доводом;
|
||||
цену любого выбора назови числом.
|
||||
|
||||
⚠ И второй носитель того же клина, названный ре-чеком: обязательность `reserved_usd` даёт тот же вечный
|
||||
отказ спавна БЕЗ всякого удаления каталога — на прогоне, запиненном к старой сборке движка. Проверь, лечит
|
||||
ли твоё терминальное состояние оба, и скажи прямо.
|
||||
|
||||
### 4.3. Форма говорит «да» над книгой, чьего каталога нет — `PD-466` · «реши сама», но лечение уже названо
|
||||
|
||||
Правило допуска разрезано на две половины: факты КНИГИ из базы спрашивают обе площадки (`startable`), а
|
||||
ДИСК спрашивает только дверь.
|
||||
|
||||
⛔ **Очевидное лечение ЗАПРЕЩЕНО, и запрет обоснован зоной:** опрашиваемый путь — не место для `os.Stat`,
|
||||
зависшее монтирование повесило бы каждый опрос каждого клиента. **Не делай стат на опросе.**
|
||||
|
||||
**Названное дешёвое лечение:** не стат, а **ФАКТ В БАЗЕ** — интейк уже знает, что каталог создан, а
|
||||
пропажу видит свип; тогда форма спрашивает его тем же предикатом, что и дверь, и разрез исчезает.
|
||||
|
||||
Твоя работа: решить, **надо ли это строить сейчас**. Аргумент против стоит в самом ряду: «удаление
|
||||
каталога под живой книгой — авария оператора, а не ординарный путь», денег человек не теряет, отказ
|
||||
приходит до холда. Аргумент за: обещание формы «вердикт ДО клика» сегодня ложно, а §4.1 и §4.2 всё равно
|
||||
трогают соседний код. ⇒ **законны оба исхода**; незаконен только исход без довода.
|
||||
|
||||
### 4.4. Что уходит в ERROR-строку — `PD-139` · «реши сама», нужна ОДНА диспозиция на класс
|
||||
|
||||
Ряд открыт не как баг, а как **нерешённый вопрос**: путь каталога книги попадает в ERROR-логи внутри
|
||||
обёрнутых ошибок. Норма зоны §2 запрещает идентификаторы книги и пользователя в логах; ERROR — не INFO, и
|
||||
оператор чинит именно этот путь.
|
||||
|
||||
⚠ **И пак «правда у двери» принял по своей новой ветке ПРОТИВОПОЛОЖНОЕ решение** (несёт операцию и errno,
|
||||
но НЕ путь), объявив цену: оператор видит «каталог книги пропал» и не видит, чьей именно. ⇒ **в дереве
|
||||
сейчас две диспозиции на один класс.** Нужна ОДНА, и её принимаешь ты, с доводом. Любой из двух исходов
|
||||
законен; незаконно оставить обе.
|
||||
|
||||
⚠ **РЕЛЕЙ 11.09, по возражению сессии в эхо — заказ пункта ИСПРАВЛЕН.** Моя формулировка «в дереве две
|
||||
диспозиции на один класс» предполагала то, что надо сначала ЗАМЕРИТЬ: путь каталога и идентификатор книги
|
||||
— не одно и то же. Выводится `book_id` из пути в наших логах — класс один и диспозиция обязана быть одна;
|
||||
не выводится (операторский корень тома) — классов ДВА, и обе диспозиции законны рядом. **Меряй первым,
|
||||
решай вторым; «классов два» — полноценный исход пункта.**
|
||||
|
||||
### 4.5. Чего НЕ брать
|
||||
|
||||
Эскроу `П-18` целиком · любые квоты и фри-тир-лимиты (`D39.176` п.1) · `backend/` · `docs/` вне канона
|
||||
контракта · рост версии «за компанию» без нужды кода.
|
||||
|
||||
## 5. Самопроверка ИСПОЛНЕНИЕМ — и где у ЭТОГО пака мягко
|
||||
|
||||
Мандат: после того как работа сделана, проведи **адверсариальный проход по СВОЕЙ готовой работе**. Глубину
|
||||
и веер выбираешь сама. Субагенты РАЗРЕШЕНЫ явно. Артефакт — таблица «посадка → выжила/поймана → ЧЕМ
|
||||
поймана», в отчёте, с выжившими поимённо.
|
||||
|
||||
⚠ **Длинная сессия: раз в несколько часов — интервальная самоверификация субагентом против ЯВНЫХ критериев
|
||||
этого промта** (`D39.121`), а не «перечитаю сама».
|
||||
|
||||
⛔ **Мутация засчитывается по ТЕКСТУ падения, а не по факту красноты.** Правый вердикт по неправой причине —
|
||||
дыра, а не поимка. ⛔ **Мутация, которая не СОБИРАЕТСЯ, — неизмеренная, а не выжившая** (урок этой зоны,
|
||||
11.09: три таких читались бы как три дыры). ⛔ **Копия под мутацию защищается ПОСТРОЕНИЕМ, а не `set -e`:**
|
||||
перед любой правкой в последовательности — `test -f go.mod` и сверка `pwd`; копия живёт ВНЕ общего
|
||||
скретчпада.
|
||||
|
||||
**Четыре места, где мягко ИМЕННО У ЭТОГО пака:**
|
||||
|
||||
1. ⛔ **ГОНКУ НЕЛЬЗЯ ПИНИТЬ ФИКСТУРОЙ, ГДЕ ОНА НЕ СЛУЧАЕТСЯ.** Ряд `PD-448` замерен при `load average
|
||||
42–48`: под нагрузкой вызовы СЕРИАЛИЗУЮТСЯ, и дефект виден, а на тихой машине оба проходят проверку
|
||||
вместе и тест зелен. ⇒ фикстура обязана делать оба порядка НЕИЗБЕЖНЫМИ (а не вероятными) — например,
|
||||
удерживая победителя между чтением состояния и замком, — и гоняться НЕ ОДИН раз. Пин, флейковый на
|
||||
мутанте, измеряет пустой сценарий.
|
||||
2. ⛔ **«Ровно один холд» пинится СЧЁТОМ, а не отсутствием второго.** Утверждение «второй холд не взят»
|
||||
удовлетворяется фикстурой, где второй холд невозможен по любой причине. Нужна фикстура, где второй
|
||||
холд ОБЯЗАН прозвучать при старом поведении и ДОЛЖЕН молчать при новом, и обе половины исполняются.
|
||||
3. ⛔ **Ассерт, сравнивающий провод с ТОЙ ЖЕ Go-константой, вакуумен** (урок этой зоны, 11.09:
|
||||
переименование обоих новых значений пережило всю батарею). Лечится литералом плюс гейтом, читающим
|
||||
enum из КАНОНА. Это прямо про твой минор `0.15.0`.
|
||||
4. ⛔ **Терминальное состояние после N неудач — это ДЕНЬГИ.** Денежный пин строится так, чтобы холд был
|
||||
НЕИЗБЕЖЕН, а не вероятен, и гоняется не один раз: измеренный случай 10.09 давал 2 красных из 8, потому
|
||||
что обрыв выходил на $0 и строка сходилась «ноль к нулю», то есть тест ПРОХОДИЛ, не дойдя до предмета.
|
||||
|
||||
## 6. Предметные оси ревью
|
||||
|
||||
Три, замена любой с аргументом:
|
||||
|
||||
1. **Деньги** — каждая новая ветвь отвечает числом: берётся ли холд, снимается ли он, и что видит баланс.
|
||||
2. **Инвариантность к порядку** — для §4.1 это и есть критерий приёмки: покажи ОБА порядка исполнением.
|
||||
3. **Провод и канон** — что из правки видно снаружи; если видно, версия растёт ТЕМ ЖЕ лендингом, а гейт
|
||||
версии читает enum из канона, а не из Go-константы.
|
||||
|
||||
## 7. Записка-план
|
||||
|
||||
До первой правки кода положи в `platform/docs/platform-PROGRESS.md` записку-план: что берёшь, в каком
|
||||
порядке, что считаешь опасным. Перед сдачей — механическая сверка комплектности против §4, по пунктам,
|
||||
таблицей, а не перечтением.
|
||||
|
||||
## 8. Заявление = команда
|
||||
|
||||
Каждое число и каждая категорика в отчёте — **с командой, которой получены**. Приёмка пере-ранит и сверит.
|
||||
Число без команды считается неснятым.
|
||||
|
||||
⛔ **Отрицательный замер обязан доказать, что спросил существующее.** Рядом с любым нулём ПЕЧАТАЕТСЯ
|
||||
контрольная величина («строк лога прибор прочёл: N»), и — научено этой же приёмкой — **результат заведомо
|
||||
ПРОХОДЯЩЕГО фильтра**: ноль, полученный форматом ключа или несуществующей колонкой, выглядит как замер.
|
||||
|
||||
⚠ **Дифф `^func Test` — ИСПОЛНЕНИЕМ, а не по памяти:** список добавленных и изменённых тестов сними
|
||||
командой и приложи.
|
||||
|
||||
⚠ **Скипы печатаются рядом с числом `ok`,** с ПРИЧИНОЙ каждого: у этой зоны честные приборы дважды
|
||||
считали разные популяции скипов, и это записывалось как расхождение, хотя оба были правы.
|
||||
|
||||
## 9. Эхо-протокол старта
|
||||
|
||||
**Первым действием, ДО работы**, вернись ко мне эхом ≤10 строк: **скоуп / инварианты / чего не делаю** —
|
||||
⚠ **СВОИМИ СЛОВАМИ.** Дословный пересказ подтверждает канал, но не понимание, и повторяет ошибку промта
|
||||
вместе с ним. Прямо скажи: **что поняла, что считаешь опасным, что считаешь неверным.**
|
||||
|
||||
## 10. Что НЕ удалось
|
||||
|
||||
Обязательная секция отчёта. ⛔ И вторая её половина, без которой она вырождена: **«ГДЕ ПРИБОР СЛЕП И Я ЭТО
|
||||
ЗНАЮ»** — что невидимо · почему не чинила · чем закрывается. Вопрос не «что не получилось», а **«что ты
|
||||
знаешь и не сказала»**: в коде названо, а в отчёте нет — значит для следующей смены НЕ названо.
|
||||
|
||||
## 11. Канал вопросов и право сказать «не надо»
|
||||
|
||||
Конфликт промта с кодом или доками → **пинг мне, НЕ интерпретация**. Ты вправе сказать «этого делать не
|
||||
надо» с аргументом — это исполнение пункта, а не отказ; §4.2, §4.3 и §4.4 прямо это допускают.
|
||||
|
||||
⚠ **Правка промта на ходу доезжает ТОЛЬКО релеем:** я передаю её отдельным сообщением, ты подтверждаешь
|
||||
эхом и называешь ОТДЕЛЬНЫМ пунктом отчёта.
|
||||
|
||||
## 12. Прямой канал
|
||||
|
||||
Механизм — `CLAUDE.md` §«Связь между сессиями»; здесь не повторяется. Впиши свой блок в
|
||||
`/tmp/textmachine-channel` первым делом, там же ищи адреса. Эхо (§9) шли по адресу оркестратора из этого
|
||||
файла — оно же проверка канала. ⚠ **Нужной роли в файле нет, файла нет или имя не отвечает ⇒ КАНАЛА НЕТ, и
|
||||
это НОРМАЛЬНЫЙ случай: НЕ опрашивай сессии подряд** — вопрос секцией в отчёт, работа продолжается.
|
||||
|
||||
## 13. Критерий завершённости
|
||||
|
||||
Работу доводишь до конца САМА. Приёмка идёт последней и вторым кругом твоей сессии не служит.
|
||||
|
||||
- [ ] У каждого пункта §4 — исход: сделано · **не делаю с доводом** · пинг.
|
||||
- [ ] Критерий §4.1 предъявлен ИСПОЛНЕНИЕМ в обоих порядках гонки.
|
||||
- [ ] Остаток окна §4.1 НАЗВАН абзацем.
|
||||
- [ ] Круги СОШЛИСЬ: последний проход не дал НОВЫХ находок; прежние закрыты таблицей
|
||||
«находка → что сделано → **ЧЕМ ПРЕДЪЯВЛЕНО**».
|
||||
- [ ] Таблица мутаций полная, **выжившие названы поимённо**; не-собравшиеся помечены как НЕИЗМЕРЕННЫЕ.
|
||||
- [ ] Дифф `^func Test` снят командой и приложен.
|
||||
- [ ] Канон и код — в ОДНОМ дереве; версия в `openapi.yaml` и гейт согласованы.
|
||||
- [ ] Числа сняты ПОСЛЕ последней правки; скипы с причинами.
|
||||
- [ ] Всё живое — в ДЕРЕВЕ, а не в письме.
|
||||
- [ ] Явное «работа завершена, править не планирую». Без этой строки пак считается идущим.
|
||||
|
||||
⚠ Перед отчётом сверь КАЖДЫЙ клейм с результатом инструмента ЭТОЙ сессии · если последний абзац отчёта —
|
||||
план или обещание, сделай его сейчас · правка теста ради зелени недопустима, правка по заказанной смене
|
||||
поведения — объявляется.
|
||||
|
|
@ -37,6 +37,7 @@
|
|||
| **Бэкенд · ЗА ОДНУ ЕДИНИЦУ ПЛАТИМ ДВАЖДЫ** | [BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md](BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md) | ⏳ **НАПИСАН 11.09, редакция 2; выдаётся СВЕЖЕЙ сессии по закрытии пака консистентности актом.** Предмет — двойная оплата единицы: на платном прогоне $0.106472 = 25.4 % цены книги ушло в выброшенные первые попытки. ⛔ **Редакция 1 стояла на ПЕРЕВЁРНУТОЙ посылке** («движок лечит болезнь возбудителем») и заказала бы отключить восстановление, которое работает 4 раза из 4; опровергатель это снял — сессия, исполнившая её буквально, отключила бы восстановление трёх чанков из четырёх, отменила `D2` п.2 и сломала `TestRetryableSubset`. ⭐ Настоящая находка редакции 2: **причин ДВЕ, лекарство одно.** Черновик — потолок мал (контроль: 6 успешных вызовов, все ≤8496 прошли сразу, все >8496 упали и прошли на удвоенном; исключений 0), редактор — размышление съело достаточный потолок (2-я попытка 11717 против упавших 16000, $0.071009 = две трети потери в одном вызове). Плюс `reasoning_tokens` не несла числа ни разу за историю проекта (0 строк при 405 базах и 58 886 строках) и молчащая подстановка цены. Ряды **414** · **415** · **422**, пин flash **413** из пака ВЫНУТ |
|
||||
| Бэкенд · отозванный | активного НЕТ | пак КАЧЕСТВО написан и ОТОЗВАН до выдачи 05.09 (`archive/prompts/…_WITHDRAWN.md`): предмет дешевле пака — точность чекера уже измерена, пере-снять её стоит одной команды. Следующий пак — СТРУКТУРА ГЛАВ (решение владельца 05.09 «любая книга любого формата»), пишется |
|
||||
| Бэкенд · прежний | активного НЕТ | пак «денежный стоп» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 05.09 — акт **D39.206** (`81a89e9` + `616a8e4`), промт в `archive/prompts/` с баннером исхода. Следующая работа зоны — строки **291** (флаг вместо клина, `D39.204`) · **294** (форма «сколько добавить», `D39.203`) · **296** (точечная перегенерация по промаху глоссария, после 295) |
|
||||
| **Платформа · ОТВЕТ, НЕ ЗАВИСЯЩИЙ ОТ ВЕЗЕНИЯ** | [PLATFORM_ANSWER_THAT_DOES_NOT_DEPEND_ON_LUCK_SESSION_PROMPT.md](PLATFORM_ANSWER_THAT_DOES_NOT_DEPEND_ON_LUCK_SESSION_PROMPT.md) | ✅ **ВЫДАН 11.09** сессии `textmachine-37`, эхо принято. Ядро — критерий акта `D39.246` п.6: **ответ двери обязан стать ИНВАРИАНТНЫМ К ПОРЯДКУ** (`PD-448`: дважды нажавший «продолжить» видит ошибку, хотя прогон стартовал); плюс `PD-162` (живой прогон над пропавшим каталогом заклинивает НАВСЕГДА с открытым холдом) · `PD-466` · `PD-139`. Контрактный минор **0.15.0** едет ТЕМ ЖЕ лендингом, не раньше — иначе гейт версии красит сданное дерево. ⭐ **Два релея по эхо сессии:** §4.4 пере-заказан (сначала замерить, выводится ли `book_id` из пути, и «классов два» — законный исход), и в §4.2 врезана её находка — **снятие холда без остановки живого процесса меняет вечный холд на потерянные деньги и процесс-сироту** |
|
||||
| Платформа · ПРАВДА У ДВЕРИ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 11.09** — акт **D39.246** (`49f74d9`, 15 путей, $0). `PD-455` закрыт, `PD-162` наполовину у обеих денежных дверей, `PD-448` разобран и НЕ построен (четвёртый путь принят направлением, строит следующий пак вместе с минором **0.15.0**). ⛔ Приёмка нашла два дефекта ВНЕ карты автора: выживший мутант на единственной проводке `BooksDir` и тихо-зелёное в самом новом гейте. Живое — `PD-162` (эскроу), `PD-466`, `PD-139`. Промт был — [PLATFORM_TRUTH_AT_THE_DOOR_SESSION_PROMPT.md](PLATFORM_TRUTH_AT_THE_DOOR_SESSION_PROMPT.md), выдан 11.09: `PD-455` (форма обещает то, в чём дверь откажет — точка роста `Blocked.code`, не закрытый enum вердикта) · `PD-448` (двойной клик по «продолжить» — **исследуй и предложи, НЕ строй**: все три законных пути требуют контрактного минора или миграции) · `PD-162` (прогон книги с исчезнувшим каталогом висит с холдом — валидация каталога ПРИ ДОПУСКЕ). ⛔ Свип сирот и потолок аплоадов СНЯТЫ подписанным пропуском: их гейт — открытая регистрация, которой в закрытой бете нет (`PD-175` + `D39.176` п.1) |
|
||||
| Платформа · РАЗРЕЗ ПРИЁМА И ПРАВДА О СЕБЕ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 08.09** — акт **D39.229** (`ddcbf0c`, 26 путей, $0); промт в `archive/prompts/` с баннером-исходом. Синхронный вход разреза под потолком, граница хвоста выведена из кода, зонный журнал и регистр приведены к правде (открытых 112 → 109, major 3 → 1). Живое из не взятого — строка **364** (потолок разрезов не есть потолок процессов движка) |
|
||||
| Платформа · ДЕНЬГИ И ПРАВДА | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 07.09** — акт **D39.221**, контрактный минор **0.13.0**; промт в `archive/prompts/` с баннером исхода. ⚠ **Синхронный разрез приёма остановлен правилом остановки и заландён построенным, но НЕ готовым** — десять пунктов несёт строка бэклога **332**, и она же заказ следующему паку зоны; ложный инвариант бюджета заландён осознанно (окно 8 с при дефолте в 16 минутах) |
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@
|
|||
| Зона | Промт | Сессия | Состояние |
|
||||
|---|---|---|---|
|
||||
| бэкенд | `BACKEND_CONSISTENCY_YOU_CAN_SHOW_SESSION_PROMPT.md` | **textmachine-c9** | ⏳ приёмка, круг 2: шесть посадок выжили → дофикс сдан, жду финальную батарею. ⛔ F6 мною ОТМЕНЁН после пере-замера |
|
||||
| платформа | — | — | 🟢 **СЛОТ СВОБОДЕН** (пак «правда у двери» закрыт актом `D39.246`) |
|
||||
| платформа | `PLATFORM_ANSWER_THAT_DOES_NOT_DEPEND_ON_LUCK_SESSION_PROMPT.md` | **textmachine-37** | ✅ выдан 11.09 · эхо своими словами с тремя опасностями и верным возражением · два релея внесены |
|
||||
| полигон | — | — | ⛔ **ЗАКАЗ СНЯТ ВЛАДЕЛЬЦЕМ 11.09** («полигон не надо выдавать»); промт готов и лежит, пере-выдача — только его словом |
|
||||
| фронт | заморожен | — | разморозка по критерию `NEAR_TERM_PLAN.md` |
|
||||
|
||||
|
|
@ -83,7 +83,8 @@
|
|||
| 3 | полигон | холодный прогон A (платный) | textmachine-23 | ✅ | ✅ закрыт актом `D39.247`; строка 16 закрыта замером |
|
||||
| 4 | — | ревью МОИХ записей (не пак зоны) | textmachine-9a | — | ✅ отчёт сдан; часть находок заландена 11.09 |
|
||||
| 5 | бэкенд | консистентность, которую можно предъявить | textmachine-c9 | ✅ | ⏳ дофикс после шести выживших посадок |
|
||||
| 6 | полигон | ремонт прибора | — | — | ⛔ **готов, выдать некому**; предлагался `ed` и `5c`, обе отказались ПО НОРМЕ и обе правы |
|
||||
| 6 | ~~полигон~~ | ремонт прибора | — | — | ⛔ **СНЯТ: зона вне скоупа словом владельца**, промт в архиве |
|
||||
| 7 | платформа | ответ, не зависящий от везения (`PD-448` · `162` · `466` · `139`) | textmachine-37 | ✅ своими словами, 3 опасности + возражение | идёт |
|
||||
|
||||
⛔ **ПОЛИГОН СНЯТ ВЛАДЕЛЬЦЕМ 11.09.** Я предлагал пак трижды — `ed`, `5c` (обе отработавшие, отказались ПО НОРМЕ и были правы) и свежей `37`, — после чего владелец сказал «полигон не надо выдавать». Выдача `37` ОТОЗВАНА тем же часом. ⚠ Урок не про полигон: **я трижды искал адресата для заказа, приоритет которого не подтверждал у владельца.** Слот зоны свободен ≠ работу зоны надо заказывать.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue