Issue two packs: the platform reads the bank proposals it already receives, and the engine stops discarding its own verdict on a failed bank-role answer
This commit is contained in:
parent
9b511ac185
commit
180c41e837
3 changed files with 240 additions and 0 deletions
116
docs/BACKEND_BANK_RETRY_LADDER_SESSION_PROMPT.md
Normal file
116
docs/BACKEND_BANK_RETRY_LADDER_SESSION_PROMPT.md
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
# Бэкенд-пак: ДВИЖОК УЖЕ ЗНАЕТ, ЧТО ОТВЕТ БАНК-РОЛИ НЕГОДЕН — И ВЫБРАСЫВАЕТ ЭТОТ ВЕРДИКТ
|
||||||
|
|
||||||
|
## 1. Какая проблема и что решит твой результат
|
||||||
|
|
||||||
|
Книга переводится дёшево, но **термины** — имена героев, гор, сект, техник — решает отдельная дорогая роль: терминолог предлагает передачу, классификатор ставит тип. Тип не косметика: он **форсирует способ передачи**, и ошибка в нём означает, что название места транслитерировано вместо перевода — и так **в каждом вхождении по всей книге**. Это прямой удар по цели №1: издательское художественное качество и связные термины на всю книгу.
|
||||||
|
|
||||||
|
**Замер прогона B:** на попытке 1 классификатор ответил по 4 строкам из 22 и по 0 из 24 — **42 терма из 66 остались без машинного типа**, оба батча оплачены (≈$0.0126 и ≈$0.0121), регенерации не было. У черновой стадии та же беда лечится и вылечена.
|
||||||
|
|
||||||
|
⛔⛔ **И вот предупреждение, без которого ты объявишь «дефекта нет».** Число 42 из 66 снято на ПОПЫТКЕ 1 и **в артефактах невидимо**: у неотвеченного кандидата остаётся ЭВРИСТИЧЕСКИЙ тип, поэтому в проекции банка все 66 строк выглядят типизированными, а сводка консолидации показывает «полно, выброшено 0, без ответа 0». Носитель числа — `docs/experiments/25-door-to-file-b.md` (попытка 1), а не проекция. ⇒ **мерить эффект пака по проекции нельзя**; мерило — журнал запросов прогона (`asked`/`answered` по батчам). Побочно это вскрывает дефект наблюдаемости, которого пак НЕ заказывает: человек на подписи не отличает машинный тип от эвристического.
|
||||||
|
|
||||||
|
⛔ **Главное, ради чего пак заказан.** Движок **уже вычисляет вердикт** о негодности такого ответа: попытка классифицирует выход банк-роли — именно так в журнале запросов появились пометки «упёрся в потолок» и «пустой». Но код, зовущий банк-роль, читает из попытки **только текст** и вердикт роняет на пол. ⇒ **это не новый механизм, а подключение существующего вердикта к существующей лестнице.**
|
||||||
|
|
||||||
|
**Ряды трекера, которые пак закрывает:** **451** (умный участок в точке банка — слово владельца, `D39.254` п.2), **438** (банк-роли мимо обеих ветвей лечения; там же готовая формулировка денежной мины с адресами), **435** (эскалация выключена данными), **478** (ординал батча в ключе покупки). ⚠ Ряд 451 записан как «дизайн-пак, затем стройка» — **оркестратор сознательно берёт строительную часть сразу**, потому что разбор уже сделан консилиумом и этим промтом; если по ходу увидишь, что без отдельного дизайна не выходит, это законный пинг.
|
||||||
|
|
||||||
|
## 2. Зона записи и git
|
||||||
|
|
||||||
|
**Твоя зона — `backend/`** плюс секция «Бэкенд» в `docs/PROGRESS.md`. Больше в `docs/` ничего не трогай. **Ты не коммитишь** — готовишь дерево и передаёшь оркестратору. Git-дисциплина целиком — `CLAUDE.md` §«Git-координация мультисессий», он в карте чтения ниже.
|
||||||
|
|
||||||
|
## 3. Карта чтения — ЗАКОН, пять позиций
|
||||||
|
|
||||||
|
1. `CLAUDE.md` в корне — канон проекта целиком.
|
||||||
|
2. `backend/internal/pipeline/stagerun.go` — **цикл попытки: счётчики, ветви «меньше думать» и «больше потолок», эхо-регенерация.** Читать целиком, включая комментарии: там объявлено различение, на котором стоит §4.1.
|
||||||
|
3. `backend/internal/pipeline/terminologist.go` — банк-роли: сборка батча, вызов попытки, что делается с ответом.
|
||||||
|
4. `backend/internal/config/internal_call.go` — почему у внутренних вызовов хоп эскалации нулевой. Комментарий несущий.
|
||||||
|
5. `docs/architecture/18-bank-ontology.md` — что такое банк и чьё слово в нём живёт.
|
||||||
|
|
||||||
|
⚠ **Числа и адреса этого промта сняты оркестратором и советчиками; те, на которых ты строишь решение, пере-снимай сама** — заимствованное число улики не заменяет.
|
||||||
|
|
||||||
|
## 4. Что построить
|
||||||
|
|
||||||
|
### 4.1. Вынести лестницу попытки в общий контур — НАПРАВЛЕНИЕ задано, форма твоя
|
||||||
|
|
||||||
|
⛔ **Чего делать НЕЛЬЗЯ: звать `runStage` из терминолога.** Это единица «одна стадия одного ЧАНКА до терминальной диспозиции»: работа по главе, пин снапшота, рендер из шаблона, резюм через статус чанка, запись статуса в конце. У банк-батча нет ни чанка, ни статуса чанка, ни шаблона. Проложить это флагами — заплатка, запрещённая словом владельца.
|
||||||
|
|
||||||
|
**Чистый разрез:** цикл попытки — отдельная функция с двумя вызывающими. `runStage` = резюм + лестница + эскалация + диспозиция; банк-роль = лестница + разбор ответа. Второй копии цикла не появляется.
|
||||||
|
|
||||||
|
⛔⛔ **ЕДИНСТВЕННОЕ, ЧТО ЗДЕСЬ ЗАДАНО ЖЁСТКО, И ЭТО ДЕНЬГИ: ступень ключуется ЧИСЛОМ УДВОЕНИЙ, а НЕ номером попытки.** В дереве потолок — функция числа удвоений бюджета, а номер попытки считает КЛЮЧИ, и файл из позиции 2 карты чтения объявляет это различение несущим: «escalations counts BUDGET DOUBLINGS; attempt counts KEYS. They come apart on TWO paths». Номер попытки вдобавок не растёт линейно — попытка перешагивает сожжённые ключи. ⇒ **отображение «номер попытки → потолок» есть смена ключа покупки и пере-оплата уже купленных чекпойнтов.** Перечислитель ступеней делай один на всех, но параметром берёт число удвоений.
|
||||||
|
|
||||||
|
**Что ещё обязано стать параметром:**
|
||||||
|
- **допуск ступени** — «можно ли купить следующую»: у стадии книжный потолок, у банк-роли её собственный ролевой суб-бюджет;
|
||||||
|
- **судья ступени** — у стадии вердикт даёт классификатор выхода, у банк-роли он приходит **после разбора таблицы** (ответ на чужом языке, доля отвеченных ниже порога). Без этого хоп на другую модель по «упёрся в потолок» бессмыслен: другая модель потолка не лечит.
|
||||||
|
|
||||||
|
⛔ **И честно про регресс-сеть, потому что первая редакция этого промта врала.** Пинов, фиксирующих ЗНАЧЕНИЕ хеша запроса, у нас **нет**: существующие проверяют только, что хеш МЕНЯЕТСЯ при смене поля, а сквозной пин детерминизма банк-проход не гоняет вовсе. ⇒ **зелёный гейт НЕ докажет, что ты не сдвинула ключ покупки.** Первым делом построй то, что покраснеет от сдвига: голден значения хеша банк-батча. Полезный существующий якорь — тест шва, который пишет чекпойнт под хешем, выведенным продакшн-путём: он ловит расхождение пробы с попыткой, но не сдвиг обеих разом.
|
||||||
|
|
||||||
|
### 4.2. Ступень мимо бюджета — ДЕЛАЙ РОВНО ТАК
|
||||||
|
|
||||||
|
Проба «этот вызов уже оплачен» спрашивает только про **нулевую** попытку. Как только лестница начнёт покупать ступень номер один, эта ступень уйдёт мимо пробы и мимо ролевого суб-бюджета. Допуск и проба обязаны говорить об одних и тех же ступенях — это условие, а не совет.
|
||||||
|
|
||||||
|
### 4.3. Эскалация банк-ролей — РЕШИ САМА, прочитав, что защищает нулевой хоп
|
||||||
|
|
||||||
|
Банк-роли не доходят до эскалации **намеренно**. Прежде чем менять, прочти комментарий в `internal_call.go` и назови в отчёте, **что именно** он защищает: причин там несколько, и как минимум одна про чужие деньги — общий пул эскалации принадлежит черновой стадии.
|
||||||
|
|
||||||
|
⇒ Фоллбек банк-роли на другую модель обязан: не тратить чужой пул, считаться против ролевого суб-бюджета, оцениваться по цене **той модели, на которую идёт**. Ключ конфигурации — аддитивный, по образцу стадий. ⚠ Возьми у образца не форму, а **гарантию**: посмотри, чем соседний механизм себя стережёт, и перенеси это тоже.
|
||||||
|
|
||||||
|
### 4.4. Тождество банк-батча — этим же паком, но развилку выбираешь ты
|
||||||
|
|
||||||
|
Ключ покупки включает порядковый номер куска, а банк-батчи нумеруются по порядку ⇒ стоит фильтру снять одну решённую строку, номера всех последующих сдвигаются, и они покупаются заново при неизменном тексте (ряд **478**).
|
||||||
|
|
||||||
|
**Почему в одном паке с лестницей:** любая правка ключа один раз пере-покупает уже оплаченные банк-чекпойнты; два пака — две пере-чеканки и дважды переписанные пины.
|
||||||
|
|
||||||
|
⚠ **Развилка, и цена у неё разная.** Номер куска сегодня — целое число, оно же колонка в хранилище, ось лога и носитель инварианта «два батча не столкнутся на одном чекпойнте». Свернуть отпечаток состава в это целое — коллизии и потеря смысла колонки; завести отдельную ось в запросе — смена ФОРМАТА ключа, а она пере-чеканит **не только банк, но все стадии**. Обещание «пере-покупает один раз» верно только для первой ветви. Выбери ветвь, назови цену обеих числом и предъяви, что пере-чеканка произойдёт однажды, а не на каждом прогоне.
|
||||||
|
|
||||||
|
### 4.5. Счёт ответов — вторая половина той же дыры
|
||||||
|
|
||||||
|
Доля ответов **считается** и пишется построчным предупреждением по каждому батчу; чего нет — так это её в итоговой строке и в проекции, а итоговая строка печатает число батчей, выброшенных **бюджетом**, что читается как «сколько термов без ответа». ⚠ Не заводи третий счётчик рядом: подними существующий до итога и разведи два смысла честно.
|
||||||
|
|
||||||
|
### 4.6. Стандарт работы — слово владельца 17.09, ратифицировано `D39.258` п.3
|
||||||
|
|
||||||
|
Писать **«согласно нашим проектным высоким стандартам по решению проблемы художественного перевода»**: чистый код, рефакторинг там, где он нужен, никаких заплаток поверх неработающих решений, техдолг не копить. ⚠ Это **проверяемый** пункт, а не лозунг: отчёт называет, **что было отрефакторено и почему** (см. §13).
|
||||||
|
|
||||||
|
**Чего НЕ делать:** ансамбль моделей, кросс-модельные веса и селекцию из вариантов — закрыто ратификацией и замером, в этом паке не пере-открывается · платформу и контракт не трогать · эхо-эскалацию черновика не чинить (она выключена данными по причине ряда **435**, и это отдельный предмет).
|
||||||
|
|
||||||
|
## 5. Самопроверка ИСПОЛНЕНИЕМ
|
||||||
|
|
||||||
|
Гейт зоны (`make battery`) обязателен и самопроверкой **не является**. Сверх него — адверсариальный проход по своей готовой работе; **субагентов поднимать разрешаю явно**. Глубину выбираешь сама, направление даю я — четыре места, где этот пак мягок:
|
||||||
|
|
||||||
|
1. **Сдвиг ключа покупки** (§4.1) — у тебя нет пина, который это ловит, пока ты его не построишь. Проверь посадкой, а не цветом гейта.
|
||||||
|
2. **Ложная регенерация на банке.** Прозовые правила вердикта гасит **предикат роли** (не флаг конфигурации), и он гасит именно эхо-проверку и экран целевого языка, а классификатор потолка и пустоты работает всегда. ⚠ Не снимай предикат мутацией — это правка ПРАВИЛА, и она пометит здоровые таблицы дефектными, то есть покраснеет про другой предмет. Утверди ПОСЫЛКУ: здоровая таблица терминов не должна вызывать регенерацию, иначе это ложная регенерация за деньги.
|
||||||
|
3. **Ступень мимо суб-бюджета** (§4.2) — фикстура, где ступень номер один обязана быть отвергнута бюджетом роли.
|
||||||
|
4. **Пере-чеканка ключа** (§4.4) — доказать исполнением, что она происходит один раз.
|
||||||
|
|
||||||
|
⚠ **Мутации:** записей каталога, трогающих два твоих главных файла, — 39 из 478, и 35 из них уже в гейте (в гейте всего 267 из 478). ⇒ полный прогон каталога после рефактора обязателен и по времени оценим. Новые посадки вводи в гейт, иначе «поймана» — разовый прогон смены, а не рубеж проекта.
|
||||||
|
|
||||||
|
## 6. Оси ревью
|
||||||
|
|
||||||
|
Две-три, можешь заменить с аргументом: **денежная** (ни один путь не покупает дважды и мимо бюджета) · **качество перевода** (стало ли термов с машинным типом больше — мерило журнал запросов, не проекция) · **рефакторинг без регресса** (что переехало и чем доказано, что поведение прежнего вызывающего не изменилось).
|
||||||
|
|
||||||
|
## 7. Записка-план
|
||||||
|
|
||||||
|
До первой правки кода — короткая записка в свою секцию журнала: какой разрез выбрала, какие параметры вынесла, что решила по эскалации и по развилке §4.4.
|
||||||
|
|
||||||
|
## 8. Эхо-протокол старта
|
||||||
|
|
||||||
|
**Первым действием** — десять строк **своими словами**: скоуп, инварианты, чего не делаешь. Дословный пересказ промта подтверждает канал, но не понимание.
|
||||||
|
|
||||||
|
## 9. Что не удалось — и где прибор слеп
|
||||||
|
|
||||||
|
Секция «не удалось / не проверено» обязательна. ⚠ И вторая половина: **«где мой прибор слеп и я это знаю»** — что невидимо, почему не чинила, чем закрывается. Норма зоны: **в коде названо, в отчёте нет — значит для следующей смены не названо.**
|
||||||
|
|
||||||
|
## 10. Канал вопросов, право отказа, советчик
|
||||||
|
|
||||||
|
Конфликт промта с кодом — **пинг**, не интерпретация; право сказать «этого делать не надо» с аргументом у тебя есть. Прямой канал — механизм в `CLAUDE.md` §«Связь между сессиями»: впиши свой блок первым делом, эхо отправь по адресу оркестратора оттуда же. Тебе разрешён **один** старший советчик (`model: "fable"` явно) для развилки, которую не закрывает своё суждение; досылай вопросы ему, а не поднимай новых — его контекст и есть ценность. Он советчик, не источник истины.
|
||||||
|
|
||||||
|
## 11. Критерий завершённости — проверяемый
|
||||||
|
|
||||||
|
- у **каждого** пункта заказа исход: сделано · не делаю с доводом · пинг;
|
||||||
|
- круги **сошлись**: последний не дал новых находок, прежние закрыты таблицей «находка → что сделано → **чем предъявлено**»;
|
||||||
|
- таблица мутаций полная, выжившие названы поимённо, полный прогон каталога пройден;
|
||||||
|
- **список «что отрефакторено и почему»** — либо явное «рефакторинга не потребовалось» с доводом (§4.6);
|
||||||
|
- числа сняты **после последней правки**, у каждого команда повторения; всё живое — **в дереве**;
|
||||||
|
- гейт зоны зелёный **целиком** (сверка списком целей, а не отсутствием слова FAIL);
|
||||||
|
- сказано явно: **«работа завершена, править не планирую»**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
⭐ Мы не «чиним ретраи». Мы делаем так, чтобы книга не получила героев с неверно переданными именами из-за того, что движок знал о негодном ответе и промолчал.
|
||||||
122
docs/PLATFORM_BANK_READOUT_SESSION_PROMPT.md
Normal file
122
docs/PLATFORM_BANK_READOUT_SESSION_PROMPT.md
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
# Платформенный пак: ЧЕЛОВЕКУ ПОКАЗЫВАЮТ ПУСТОЙ ЭКРАН, КОГДА ЕМУ ЕСТЬ ЧТО ПОДПИСАТЬ
|
||||||
|
|
||||||
|
## 1. Какая проблема и что решит твой результат
|
||||||
|
|
||||||
|
Движок переводит книгу и один раз за прогон **останавливается**, чтобы человек подписал термины: как зовут героя, гору, секту. Это единственный момент во всём продукте, когда у человека спрашивают решение, и от него зависит связность всей книги — подписанный термин дальше едет законом.
|
||||||
|
|
||||||
|
В этот момент движок кладёт рядом с базой книги файл-проекцию банка. Замерено на двух купленных боевых прогонах:
|
||||||
|
|
||||||
|
| прогон | `terms` | `proposed` | `consolidation` |
|
||||||
|
|---|---|---|---|
|
||||||
|
| A (платная стоп-граница) | **0** | **69** | объект из 7 полей |
|
||||||
|
| B (платная стоп-граница) | **0** | **66** | объект из 7 полей |
|
||||||
|
|
||||||
|
Платформа читает из этого файла **только секцию `terms`** — и отдаёт человеку ноль. Десятки предложений лежат в том же файле непрочитанными, и первый слой ратифицированного `D39.256` («в продолжение едет подписанное») у любого пользователя пуст фактически: подписывать нечего, потому что предложения до него не доехали.
|
||||||
|
|
||||||
|
**Ряды трекера, которые пак закрывает:** **224** (движковая половина закрыта 07.09, остаётся платформенная — у секции предложений ноль читателей) и **253** (поля на странице банка нет, у секции консолидации ноль читателей). Оба — заказ этого пака слово в слово.
|
||||||
|
|
||||||
|
## 2. Зона записи и git
|
||||||
|
|
||||||
|
**Твоя зона — `platform/`** плюс зонный журнал `platform/docs/platform-PROGRESS.md` и, если понадобится, `platform/BACKLOG.md`. **Контракт `docs/architecture/14-api-contract/` — исключение: туда писать можно и нужно** (прецеденты: миноры 0.13.0, 0.14.0, 0.15.0 сданы платформенными паками), но только туда; остальной `docs/` не трогай. **Ты не коммитишь** — готовишь дерево и передаёшь оркестратору. Git-дисциплина целиком — `CLAUDE.md` §«Git-координация мультисессий».
|
||||||
|
|
||||||
|
⛔ **`frontend/docs/api-contract/` НЕ ТРОГАТЬ.** Зеркало фронта отстало на тринадцать миноров (`0.2.3` против `0.15.0`), и это **ратифицированное** отставание на время заморозки зоны (`D39.142` п.5). Типы фронта генерятся из зеркала — правка разбудит замороженную зону.
|
||||||
|
|
||||||
|
## 3. Карта чтения — ЗАКОН
|
||||||
|
|
||||||
|
1. `CLAUDE.md` в корне — канон проекта целиком.
|
||||||
|
2. **`platform/docs/ENGINEERING_STANDARDS.md`** — ратифицированный стандарт зоны; карта доков требует, чтобы каждый платформенный промт на него ссылался, отступление — пинг. Рядом `platform/docs/PLATFORM_DIRECTION.md` — ратифицированное направление зоны.
|
||||||
|
3. `platform/internal/ingest/bank.go` (153 строки) — существующий ридер проекции. **Читать целиком, включая комментарии: в них дисциплина, которую ты наследуешь** (§4.2).
|
||||||
|
4. **Путь артефакта целиком:** `platform/internal/runner/artifacts.go` → `platform/internal/pgstore/readmodel.go` (функция сохранения банка) → миграции `platform/internal/pgstore/migrations/`. Там решается, ломает ли новая секция дельта-чтение.
|
||||||
|
5. Контракт: `docs/architecture/14-api-contract/openapi.yaml` (адресно: страница банка, схемы термина и статуса) **и его компаньон `README.md` рядом** — компаньон ратифицирован и ведёт провенанс каждой строки; минор без него разойдётся с конструкцией.
|
||||||
|
|
||||||
|
Код первичен: адреса — отправные точки. ⚠ **Числа этого промта сняты оркестратором; те, на которых строишь решение, пере-снимай сама.**
|
||||||
|
|
||||||
|
## 4. Что построить
|
||||||
|
|
||||||
|
### 4.1. Прочитать секции — поля снимаешь ЗАМЕРОМ, не по этому списку
|
||||||
|
|
||||||
|
Научить ридер разбирать две секции, которые он сегодня игнорирует: **`proposed`** (предложения движка) и **`consolidation`** (итог прохода терминолога).
|
||||||
|
|
||||||
|
⛔ **Список полей НЕ переписывай из промта — сними с обоих купленных файлов сама.** Контроль, с которым сверишься: у предложения **восемь обязательных** полей (`src`, `dst`, `kind`, `channel`, `freq`, `spread`, `conf`, `variants`) и **четыре опциональных**, которые есть не везде: `conventions` (в B у всех 66, в A нет ни у одной), `invented` (11 из 69 в A, 17 из 66 в B), `contradicts`, `bank_holds`.
|
||||||
|
|
||||||
|
⛔⛔ **`invented` — то самое поле, ради которого экран и существует:** движок объявляет его классом, который читают ПЕРВЫМ («консолидированная передача — НЕ та, что дали черновики»). Ридер без него покажет человеку список, в котором не видно, что движок выдумал имя. Не потеряй его так, как потерял первый черновик этого промта.
|
||||||
|
|
||||||
|
⛔ **САМОЕ ОПАСНОЕ МЕСТО ПАКА — слово `proposed` значит здесь ДВЕ разные вещи.** В контракте это значение статуса строки (движковый `auto` переводится в него); в проекции — имя секции с предложениями, и это другой объект с другими полями. Не заводи третий смысл и не переименовывай существующий. Как назвать новое во внешнем контракте — решай сама и аргументируй; мой приор, опровергаемый: во внешнем имени слова `proposed` избегать вовсе.
|
||||||
|
|
||||||
|
### 4.2. Взять у образца не форму, а ГАРАНТИЮ — ДЕЛАЙ РОВНО ТАК
|
||||||
|
|
||||||
|
Существующий ридер несёт три решения, каждое с ценой ошибки в комментарии: документ **без версии банка отвергается** («пустой банк и документ, который эта сборка не умеет читать, декодируются одинаково, и один из них заменил бы весь банк книги ничем»); **неизвестный статус** читается как «просит решения»; **неизвестное происхождение** — как то, что заявляет о себе меньше всего.
|
||||||
|
|
||||||
|
Твои секции наследуют **этот класс гарантий**. Конкретно спроси себя:
|
||||||
|
- чем у тебя отличается «секции в файле нет» от «секция есть и пуста»? Если ничем — ты воспроизвёл ложный ноль, ради устранения которого пак заказан;
|
||||||
|
- **то же про ПОЛЯ**: четыре из двенадцати опциональны, и «поля нет» не равно «значение ложно»;
|
||||||
|
- **граница.** Проекция пишется на ПЯТИ границах прогона и сама это объявляет, несёт отметку границы и идентификатор прогона, а её экспорт трижды предупреждает, что файл может быть несвежим. Ридер сегодня эти поля не читает вовсе. ⇒ секция предложений читается только вместе с отметкой границы, и **«граница не та» обязано отличаться от «предложений нет»**.
|
||||||
|
|
||||||
|
### 4.3. Отдать наружу — контрактный минор, РЕШАЕШЬ САМА
|
||||||
|
|
||||||
|
Канон `0.15.0`, полоса мажора `0`, добавление — минор. Форму решаешь ты: расширить ответ существующей ручки, добавить секцию рядом или отдельный ресурс. Аргумент обязан отвечать на вопрос «что увидит человек, которому надо подписать».
|
||||||
|
|
||||||
|
⚠ **Развилка, которую надо знать заранее: у предложения НЕТ идентичности.** У термина есть `id` и он несёт объяснение зачем; у предложения `id` нет ни в одном из 135 замеренных объектов. Вся платформенная сторона построена поверх этого `id`: сохранение банка ключует по нему, бампает ревизию книги, а исчезновение строки переводит книгу в сброс ревизии, «потому что исчезнувшую строку нельзя выразить дельтой». Контракт при этом отдаёт страницы с курсором и версией, а порядок предложений — **ранжирование**, которое между прогонами меняется. ⇒ «чем адресуется предложение в дельта-чтении» — настоящий вопрос, движок тебе править нельзя, и **пинг с обоснованием здесь полноценный исход пункта**, а не срыв. Выдумывать `id` на стороне платформы — пере-реализация закона движка, это запрещено.
|
||||||
|
|
||||||
|
⚠ **Проза контракта едет в исходник генерируемого клиента** — ратифицированная конструкция. Описания пишутся как код.
|
||||||
|
|
||||||
|
### 4.4. Хранилище — назови решение явно
|
||||||
|
|
||||||
|
Секции сегодня хранить негде: таблица банка одна, миграций 35, и ни одна не знает ни предложений, ни консолидации. Решаешь сама, с аргументом: **хранить в базе** (тогда миграция — часть пака, и надо показать, что она не ломает дельта-чтение и ревизию) или **читать на лету** из артефакта (тогда назови, что происходит, когда артефакта нет или он с другой границы).
|
||||||
|
|
||||||
|
### 4.5. Чего НЕ делать
|
||||||
|
|
||||||
|
- Не строить UI и не размораживать фронт; читатель сегодня — API.
|
||||||
|
- Не трогать движок: проекцию пишет он, её формат — его зона. Расхождение формата — **пинг**, а не правка у себя.
|
||||||
|
- ⛔ **Не подпирать заплаткой то, что просит перестройки.** Слово владельца 17.09 (`D39.258` п.3): чистый код, рефакторинг где нужен, техдолг не копить. Отрефакторила — **назови в отчёте, что и почему**.
|
||||||
|
|
||||||
|
## 5. Самопроверка ИСПОЛНЕНИЕМ
|
||||||
|
|
||||||
|
Гейт зоны (`make check`) обязателен и самопроверкой не является. Сверх него — адверсариальный проход по своей готовой работе; **субагентов поднимать разрешаю явно**. Тебе разрешён **один** старший советчик (`model: "fable"` явно) для развилки, которую не закрывает своё суждение: досылай вопросы ему, а не поднимай новых. Он советчик, не источник истины — его посылки проверяются деревом.
|
||||||
|
|
||||||
|
Четыре места, где этот пак мягок:
|
||||||
|
1. **Коллизия имени `proposed`** — проверь исполнением, что в одном ответе два смысла не смешались.
|
||||||
|
2. **Различение «нет» и «пусто»** — для секций И для опциональных полей; пин обязан краснеть, если их склеить.
|
||||||
|
3. **Полнота минора** — сверь, что каждое объявленное поле уходит на провод, а не только имеет тег.
|
||||||
|
4. **Ложный ноль на живом файле** — предъяви числа ДО и ПОСЛЕ на купленных проекциях: «было 0, стало 66» и есть доказательство.
|
||||||
|
|
||||||
|
## 6. Оси ревью
|
||||||
|
|
||||||
|
Две-три, можешь заменить: **контрактная** (минор законен, полон, описания говорят правду о поведении) · **дисциплина ридера** (гарантии §4.2 перенесены, а не процитированы) · **человеческий узел** (достаточно ли отданного, чтобы человек принял решение; чего не хватает — назови, даже если не строишь).
|
||||||
|
|
||||||
|
## 7. Чем мерить — купленное сырьё, ТОЛЬКО на чтение
|
||||||
|
|
||||||
|
- `/home/ubuntu/tm-coldrun-a/evidence/bankstop-paid/project.db.bank.json`
|
||||||
|
- `/home/ubuntu/tm-coldrun-b/evidence/paid-bankstop/project.db.bank.json`
|
||||||
|
|
||||||
|
⛔ Это купленные улики: открывать только на чтение, ничего в этих каталогах не создавать. ⚠ Рядом с проекцией B лежит база прогона — **её не открывать вовсе**: движковый стор молча мигрирует старую схему и уничтожает улику (ряд **475**), а рядом с ней уже появился временный файл от чьего-то чтения без флага неизменности (ряд **472**).
|
||||||
|
|
||||||
|
## 8. Записка-план
|
||||||
|
|
||||||
|
До первой правки кода — короткая записка в зонный журнал: что строишь, какой формой отдаёшь, что решила по коллизии имени, по идентичности предложения и по хранилищу.
|
||||||
|
|
||||||
|
## 9. Эхо-протокол старта
|
||||||
|
|
||||||
|
**Первым действием** — десять строк **своими словами**: скоуп, инварианты, чего не делаешь.
|
||||||
|
|
||||||
|
## 10. Что не удалось — и где прибор слеп
|
||||||
|
|
||||||
|
Секция обязательна, и вторая её половина тоже: **«где мой прибор слеп и я это знаю»** — что невидимо, почему не чинила, чем закрывается. В коде названо, в отчёте нет — значит для следующей смены не названо.
|
||||||
|
|
||||||
|
## 11. Канал вопросов и право отказа
|
||||||
|
|
||||||
|
Конфликт промта с кодом — **пинг**, не интерпретация. Право сказать «этого делать не надо» с аргументом у тебя есть. Прямой канал — механизм в `CLAUDE.md` §«Связь между сессиями»: впиши свой блок первым делом, эхо отправь по адресу оркестратора оттуда же.
|
||||||
|
|
||||||
|
## 12. Критерий завершённости — проверяемый
|
||||||
|
|
||||||
|
- у **каждого** пункта заказа исход: сделано · не делаю с доводом · пинг;
|
||||||
|
- круги **сошлись**, прежние находки закрыты таблицей «находка → что сделано → **чем предъявлено**»;
|
||||||
|
- **числа ДО и ПОСЛЕ на обоих купленных файлах** предъявлены командой;
|
||||||
|
- ряды **224** и **253** закрыты либо названо, что именно от них осталось;
|
||||||
|
- список «что отрефакторено и почему» либо явное «не потребовалось» с доводом;
|
||||||
|
- гейт зоны зелёный **целиком**; всё живое — **в дереве**;
|
||||||
|
- сказано явно: **«работа завершена, править не планирую»**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
⭐ Приоритет №1 проекта — издательское качество перевода длинной книги: связные термины и голоса на всю книгу. Экран подписи — место, где человек этим управляет напрямую. Всё здесь меряется одним: **стало ли человеку видно, о чём его спрашивают.**
|
||||||
|
|
@ -24,6 +24,8 @@
|
||||||
- **Активные хендофф-промты — какой файл ТВОЙ** (состав обновляется при каждом лендинге, D39.80; хроника, причины и статусы РАБОТ — CURRENT-STATE и D-лог):
|
- **Активные хендофф-промты — какой файл ТВОЙ** (состав обновляется при каждом лендинге, D39.80; хроника, причины и статусы РАБОТ — CURRENT-STATE и D-лог):
|
||||||
| Роль | Активный промт | Статус |
|
| Роль | Активный промт | Статус |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| **Платформа · ЧИТАТЕЛЬ ПРЕДЛОЖЕНИЙ БАНКА** | [PLATFORM_BANK_READOUT_SESSION_PROMPT.md](PLATFORM_BANK_READOUT_SESSION_PROMPT.md) | ВЫДАН 17.09 сессии `textmachine-main-94`. Ряды **224** и **253**: на стоп-границе проекция несёт 0 терминов при 69 и 66 предложениях, а ридер платформы парсит только секцию терминов. Два рубежа пройдены: сверка 13 блоков и субагент-опровергатель (9 находок, все внесены — в т.ч. пропущенное поле «выдумано движком»). $0 |
|
||||||
|
| **Бэкенд · ЛЕСТНИЦА ПОПЫТКИ ДЛЯ БАНК-РОЛЕЙ** | [BACKEND_BANK_RETRY_LADDER_SESSION_PROMPT.md](BACKEND_BANK_RETRY_LADDER_SESSION_PROMPT.md) | ВЫДАН 17.09 сессии `textmachine-main-12`. Ряды **451** · **438** · **435** · **478**: движок вычисляет вердикт о негодном ответе банк-роли и выбрасывает его; заказан вынос лестницы в общий контур, а не заплатка. Два рубежа пройдены: сверка 13 блоков и опровергатель (9 находок, включая денежную — ключ ступени по числу удвоений, а не попыток). $0 |
|
||||||
| **Бэкенд · БАНК ЗА $0** | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С НАЗВАННЫМ ОСТАТКОМ** — акт **`D39.257`**; промт в [archive/prompts/](archive/prompts/BACKEND_BANK_ZERO_LAYER_SESSION_PROMPT.md) с баннером-исходом. 29 путей, $0. ⭐ Посылка `D39.256` перестала быть посылкой: 25 из 26 смен при идентичном входе. ⛔ Мажоры — сдвинутые якоря (ряд 467) и арм по чужому знаменателю (ряд 462). ⚠ Остаток: полный прогон каталога мутаций (267) на момент акта не закончен. **Слот бэкенда СВОБОДЕН** |
|
| **Бэкенд · БАНК ЗА $0** | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С НАЗВАННЫМ ОСТАТКОМ** — акт **`D39.257`**; промт в [archive/prompts/](archive/prompts/BACKEND_BANK_ZERO_LAYER_SESSION_PROMPT.md) с баннером-исходом. 29 путей, $0. ⭐ Посылка `D39.256` перестала быть посылкой: 25 из 26 смен при идентичном входе. ⛔ Мажоры — сдвинутые якоря (ряд 467) и арм по чужому знаменателю (ряд 462). ⚠ Остаток: полный прогон каталога мутаций (267) на момент акта не закончен. **Слот бэкенда СВОБОДЕН** |
|
||||||
| **Бэкенд · КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО** | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С НАЗВАННЫМ ОСТАТКОМ** — акт **`D39.255`**; промт в [archive/prompts/](archive/prompts/BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md) с баннером-исходом. Лендинг `af88680`, 29 путей, $0. Закрыты строки **291** и **379** (вторая — ЗАМЕРОМ: мутант 8/8 против 7/8 в ряду). ⛔ Пак пережил ПОТЕРЮ сессии: `textmachine-b1` построила почти всё и исчезла при переезде окружения, доводила `textmachine-main-b1` разделом ПЕРЕДАЧИ ред. 5. ⚠ Остаток — строки **375** · **232** · **453**–**456**; три опубликованных ключа качества сменили смысл (п.5 акта). **Слот бэкенда СВОБОДЕН** |
|
| **Бэкенд · КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО** | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С НАЗВАННЫМ ОСТАТКОМ** — акт **`D39.255`**; промт в [archive/prompts/](archive/prompts/BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md) с баннером-исходом. Лендинг `af88680`, 29 путей, $0. Закрыты строки **291** и **379** (вторая — ЗАМЕРОМ: мутант 8/8 против 7/8 в ряду). ⛔ Пак пережил ПОТЕРЮ сессии: `textmachine-b1` построила почти всё и исчезла при переезде окружения, доводила `textmachine-main-b1` разделом ПЕРЕДАЧИ ред. 5. ⚠ Остаток — строки **375** · **232** · **453**–**456**; три опубликованных ключа качества сменили смысл (п.5 акта). **Слот бэкенда СВОБОДЕН** |
|
||||||
| Сквозной · ХОЛОДНЫЙ ПРОГОН B | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 11.09** — акт **D39.252**; промт в [archive/prompts/](archive/prompts/COLD_RUN_B_SESSION_PROMPT.md) с баннером-исходом. Книга второй раз от двери до ФАЙЛА, факт **$0.396657**. ⭐ Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных; **85.7 % оплаченного выхода — размышление, а не текст**. ⛔ Прибор приоритета №1 солгал вердиктом по подписанному имени героя. Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок, 1 крит |
|
| Сквозной · ХОЛОДНЫЙ ПРОГОН B | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 11.09** — акт **D39.252**; промт в [archive/prompts/](archive/prompts/COLD_RUN_B_SESSION_PROMPT.md) с баннером-исходом. Книга второй раз от двери до ФАЙЛА, факт **$0.396657**. ⭐ Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных; **85.7 % оплаченного выхода — размышление, а не текст**. ⛔ Прибор приоритета №1 солгал вердиктом по подписанному имени героя. Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок, 1 крит |
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue