Act on the cold read of the contract prompt: put the two ratified norms into the reading map, give the error model its starting points, and mark the refuter as the order it always was
This commit is contained in:
parent
7df642cad1
commit
125f93e7d6
1 changed files with 47 additions and 15 deletions
|
|
@ -34,7 +34,7 @@ $0-глагол со своим словарём, кодами отказа и
|
|||
## §1. Зона записи и git
|
||||
|
||||
**Твоя зона — РОВНО два файла:** `docs/architecture/14-api-contract/openapi.yaml` (канон) и
|
||||
`docs/architecture/14-api-contract/README.md` (компаньон). Плюс отчёт — см. §9.
|
||||
`docs/architecture/14-api-contract/README.md` (компаньон). Плюс отчёт — `docs/CONTRACT_MINOR_REPORT.md`, его состав в §11.
|
||||
|
||||
- **Ты НЕ коммитишь.** Дерево готовишь и сдаёшь; лендит оркестратор. Канон — `CLAUDE.md`.
|
||||
- **`platform/` и `frontend/` не трогать ничем**, даже одной строкой. Почему это названо отдельно —
|
||||
|
|
@ -57,7 +57,16 @@ $0-глагол со своим словарём, кодами отказа и
|
|||
короткий лозунг «входной словарь = выходной» про него НЕВЕРЕН. Это твой источник тела двери.
|
||||
4. **`backend/internal/pipeline/bankdecisions.go`** — форма отчёта (`BankDecisionsReport`) и шесть
|
||||
исходов; `backend/cmd/tmctl/main.go:69-75` — полоса отказов 10–19.
|
||||
5. **Ратифицированное, что бьёт всё остальное, вложено сюда** (§3.0) — грепать D-лог не требуется.
|
||||
5. **Две ратифицированные НОРМЫ — читать обе, они короткие и обе про твой предмет:**
|
||||
`docs/architecture/18-bank-ontology.md` (69 строк, ратифицирована **D39.158**) — три роли носителей,
|
||||
единственные писатели и **дисциплина проекции**; `docs/README.md` называет её обязательным
|
||||
пре-чтением перед всем, что трогает банк или его артефакты, и твоя дверь — ровно это. Из неё же
|
||||
растут §3.2 (машиночитаемый признак «не построено») и §6 ось 3.
|
||||
`docs/architecture/17-seam-inbound-law.md` (ратифицирован **D39.156**) — закон входной двери шва,
|
||||
семь пунктов дисциплины; на его **п.4** ссылается §3.2, когда говорит про громкий отказ на
|
||||
неизвестное поле, и на **п.6** — §3.0.
|
||||
|
||||
⚠ Прочее ратифицированное вложено в §3.0 — грепать журнал решений не требуется.
|
||||
|
||||
## §3. Состав пака
|
||||
|
||||
|
|
@ -116,8 +125,8 @@ $0-глагол со своим словарём, кодами отказа и
|
|||
- **Конверт документа — тоже словарь, и его нельзя изобретать заново:** `decisions_version` со
|
||||
значением `tm-bank-decisions-v1` (`decisions.go:47`) · `book_id` **обязателен и сверяется с книгой**
|
||||
(`:142`), потому что решения — единственный вход, несущий слова пользователя в чужую книгу незаметно
|
||||
для даунстрима · **неизвестное поле — громкий отказ** (`DisallowUnknownFields`, `:133`), зеркало
|
||||
п.4 закона шва.
|
||||
для даунстрима · **неизвестное поле — громкий отказ** (`DisallowUnknownFields`, `:133`) — зеркало
|
||||
**п.4 закона входной двери шва** (`docs/architecture/17-seam-inbound-law.md`, позиция 5 карты).
|
||||
- **Два потолка, оба объявляются:** **1 МиБ** на чтение документа и **5000 решений на один акт**
|
||||
(`bankdecisions.go:647`, `maxDecisions`; за ним — отказ КЛАССОМ 14 с текстом «split it», потому что
|
||||
дальше вызов перестаёт влезать в таймаут вызывающего и умирает на каждом ретрае). Опубликованная
|
||||
|
|
@ -137,6 +146,12 @@ $0-глагол со своим словарём, кодами отказа и
|
|||
пер-термная модель, вернувшаяся через чёрный ход тем же минором, который её сносит. **Публикуешь
|
||||
поле — публикуешь и запрет; не готов опубликовать запрет — не публикуй поле.**
|
||||
|
||||
**Отправные точки модели ошибки — держи их под рукой прежде, чем раскладывать коды:** конверт отказа
|
||||
— схема `Problem` (`openapi.yaml:2395`, RFC 9457 плюс расширения); **машинный идентификатор — `code`**
|
||||
(`:2432`), его словарь — `ErrorCode` (`:2462`); `errors[]` (`:2444`) несёт, ЧТО именно в запросе не так,
|
||||
и его несёт `invalid_request`. Согласовывать дверь надо с ЭТИМ конвертом — §6 ось 1 будет судить
|
||||
именно по нему.
|
||||
|
||||
**Твоя свобода и твой аргумент:** форма HTTP-поверхности (один `POST` с документом целиком против
|
||||
чего-либо иного), имена схем, как ложатся коды 10–19 на статусы HTTP, как выражается `--dry-run`.
|
||||
**Решай сам и обоснуй в отчёте.** Совет, опровергаемый аргументом: код **14** — это НЕ ошибка сервера,
|
||||
|
|
@ -144,8 +159,9 @@ $0-глагол со своим словарём, кодами отказа и
|
|||
документ», и оба заслуживают различимости на проводе, а не общего `400`.
|
||||
|
||||
⚠ **Дверь объявляется, но платформой ещё НЕ обслуживается** — её смонтирует пак (2в). Прецедент того,
|
||||
как контракт честно объявляет непостроенное, в каноне уже есть: `Capabilities.ExportFormats`, пустой
|
||||
список = «здесь не построено», и это названо честным ответом. **Машиночитаемый признак «здесь не построено» ОБЯЗАТЕЛЕН — свободна только его ФОРМА.** Без него
|
||||
как контракт честно объявляет непостроенное, в каноне уже есть: **`export_formats`** в `Capabilities`
|
||||
(`openapi.yaml:1222` и `:1250` — ⚠ в каноне поле именно в snake_case; греп по Go-имени `ExportFormats`
|
||||
даёт там ноль), пустой список = «здесь не построено», и это названо честным ответом. **Машиночитаемый признак «здесь не построено» ОБЯЗАТЕЛЕН — свободна только его ФОРМА.** Без него
|
||||
пак объявит голую необслуживаемую дверь и воспроизведёт `PD-370` тем же коммитом, которым его
|
||||
закрывает: «канон объявляет — деплой не обслуживает» и есть содержание той строки. Разберись, годится
|
||||
ли `Capabilities` для двери; если нет — назови почему и предложи замену, но не отсутствие.
|
||||
|
|
@ -199,7 +215,7 @@ surface». Допиши предупреждение: отказ от повер
|
|||
до пака (2в). Написать новую семантику в канон и поднять константу значит объявить `0.5.0` у
|
||||
деплоя, который обслуживает прогресс по-старому, — ровно та ложь, против которой гейт и стоит.
|
||||
|
||||
**Мой разбор, который владелец может отменить:** прежнее «одним куском» покупалось тем, что иначе
|
||||
**Разбор, ратифицированный владельцем 27.08 (D39.160):** прежнее «одним куском» покупалось тем, что иначе
|
||||
фронт перегенерируется дважды. **Фронт ЗАМОРОЖЕН**, и его зеркало отстаёт ратифицированно — при
|
||||
разморозке он перегенерируется ОДИН раз независимо от того, сколько миноров прошло. Значит цена
|
||||
разделения сегодня равна нулю, а цена объединения — деплой, врущий о своей версии. Поэтому прогресс
|
||||
|
|
@ -230,10 +246,12 @@ surface». Допиши предупреждение: отказ от повер
|
|||
platform` даёт постоянный красный того же теста по другой причине, и вердикт будет ложным — норма
|
||||
зоны платформы, `ENGINEERING_STANDARDS` §3 п.3.
|
||||
|
||||
**Субагенты РАЗРЕШЕНЫ явно** (харнесс по умолчанию их не берёт, и без этого разрешения запрет тихо
|
||||
побеждает): бери отдельного агента-опровергателя на §3.2 — он получает твоё предложение двери и
|
||||
словарь из кода, мандат «найди, где предложенное тело расходится со словарём глагола». Его находки —
|
||||
в отчёт, включая те, что ты отверг, и с причиной.
|
||||
**Опровергатель на §3.2 — ЗАКАЗ, а не право** (разметка исправлена 27.08: прежняя редакция писала
|
||||
«разрешены», а §11 требует его находок в отчёте — без него отчёт некомплектен, и это был заказ,
|
||||
размеченный как разрешение). **Субагенты тебе РАЗРЕШЕНЫ явно** — харнесс по умолчанию их не берёт,
|
||||
и без явного разрешения запрет тихо побеждает. Опровергатель получает твоё предложение двери и
|
||||
словарь из кода, мандат — «найди, где предложенное тело расходится со словарём глагола». Его
|
||||
находки — в отчёт, включая те, что ты отверг, и с причиной.
|
||||
|
||||
⚠ **Соразмеряй веер заранее:** 2–4 агента, не больше. Панель на полтора десятка агентов на этой
|
||||
машине убивает сама себя, и это уже стоило проекту находок.
|
||||
|
|
@ -251,7 +269,9 @@ surface». Допиши предупреждение: отказ от повер
|
|||
|
||||
## §7. Записка-план и комплектность
|
||||
|
||||
**До правок** выложи записку-план: что меняешь, где, чем проверишь. **В конце** — механическая сверка
|
||||
**До правок** СОЗДАЙ файл отчёта `docs/CONTRACT_MINOR_REPORT.md` и первой же секцией положи в него
|
||||
записку-план: что меняешь, где, чем проверишь. Файл ведёшь по ходу работы, а не собираешь в конце —
|
||||
так оркестратор видит план ДО правок, и так секции §9/§10 не пишутся задним числом по памяти. **В конце** — механическая сверка
|
||||
комплектности против §3 таблицей: пункт заказа → что сделано → каким исполнением подтверждено. Пункт,
|
||||
по которому в колонке «исполнение» стоит слово, а не команда, считается НЕ сделанным.
|
||||
|
||||
|
|
@ -274,9 +294,21 @@ surface». Допиши предупреждение: отказ от повер
|
|||
## §11. Канал вопросов
|
||||
|
||||
Конфликт промта с кодом или доками — **пинг оркестратору через владельца, НЕ интерпретация в свою
|
||||
пользу и НЕ обход**. Отчёт и вопросы пиши в `docs/PROGRESS.md`? — **нет**: у контрактной сессии зонного
|
||||
журнала нет, поэтому отчёт кладёшь **отдельным файлом `docs/CONTRACT_MINOR_REPORT.md`**, а оркестратор
|
||||
переносит существенное в журнал и в ноту при лендинге.
|
||||
пользу и НЕ обход**. **Где твой отчёт.** У контрактной сессии зонного журнала НЕТ, и в `docs/PROGRESS.md` ты не пишешь —
|
||||
это зона оркестратора. Отчёт кладёшь ОТДЕЛЬНЫМ новым файлом **`docs/CONTRACT_MINOR_REPORT.md`**;
|
||||
существенное из него в журнал и в ноту переносит оркестратор при лендинге.
|
||||
|
||||
**Что ты сдаёшь — состав дерева на лендинг:**
|
||||
1. `docs/architecture/14-api-contract/openapi.yaml` — правленый канон, версия `0.5.0`.
|
||||
2. `docs/architecture/14-api-contract/README.md` — правленый компаньон.
|
||||
3. `docs/CONTRACT_MINOR_REPORT.md` — новый: эхо-протокол (§9) · записка-план и таблица комплектности
|
||||
(§7) · обоснование формы двери и её схем (§3.2) · решение по счётчикам (§3.2-бис) · выводы всех
|
||||
трёх исполнений самопроверки С КОМАНДАМИ (§5) · находки опровергателя, включая отвергнутые с
|
||||
причиной · секция obstacle (§10).
|
||||
4. **Ничего больше.** Ни одного файла в `platform/`, `frontend/`, `backend/` или `eval/`.
|
||||
|
||||
Сдача = сказать оркестратору «готово» и назвать этот состав. Коммитит он; `git status` перед сдачей
|
||||
прогони и убедись, что в дереве нет твоих файлов вне списка.
|
||||
|
||||
⚠ **Тесты и гейты не подгонять под зелень.** Гейт платформы обязан покраснеть — это ожидаемое
|
||||
поведение, описанное в §4, а не повод его править. Несогласие с гейтом — вопрос, не правка.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue