Take the review's verdict into both packs: the checker's instrument already exists and its precision is already measured, and the order pack is one session, not two
This commit is contained in:
parent
e89facd573
commit
42533bb166
3 changed files with 74 additions and 17 deletions
|
|
@ -15,6 +15,20 @@
|
|||
⚠ Голову журнала целиком НЕ читать. Номер грепается: тело — `^## D<номер>`; **подномер (`D39.196`, `D2.3`)
|
||||
собственного тела НЕ имеет** — это ПУНКТ внутри родителя, отбрось хвост.
|
||||
|
||||
## ⛔ ГЛАВНОЕ, ЧТО НАДО ЗНАТЬ ДО ВСЕГО ОСТАЛЬНОГО: ПРИБОР УЖЕ ЕСТЬ И УЖЕ ДАЛ ЦИФРУ
|
||||
Первая редакция этого промта заказывала «замерить точность чекера» как неизвестное. **Это был заказ на
|
||||
построенное, пойманный внешним ревью до выдачи.** Факты, каждый проверен командой:
|
||||
· харнесс — `backend/internal/membank/labelharness_test.go` и `backend/internal/checks/labelharness_test.go`,
|
||||
гейт окружения `TM_CHECKER_LABELS=1`; корпус лейблов **ВНЕ git** — `books/gu-zhenren/labels/`;
|
||||
· результат записан: `books/gu-zhenren/labels/metrics.json`, класс `k6` (пост-чек глоссария) —
|
||||
**`n=258, tp=1, fp=14, fn=0, precision=0.0667, recall=1.0`** (замер 26.07, ДО стеммера);
|
||||
· ⇒ **из пятнадцати срабатываний ЧЕТЫРНАДЦАТЬ ЛОЖНЫЕ**, а полнота 1.0 держится на ОДНОМ положительном
|
||||
примере — то есть порочна именно ПОЛНОТА, как и говорит строка 12, а точность измерена и она плохая;
|
||||
· ⚠ все `fp_ids` — из прогонов С ПОДКЛЮЧЁННЫМ сидом (`acceptance`, `minirun`, `rerun2-*`), значит для
|
||||
ЭТОГО прибора «сначала подключить канон» не предусловие: его корпус уже с каноном.
|
||||
**Твоя работа — не построить замер, а СНЯТЬ ЕГО ЗАНОВО ЧЕСТНО:** добрать положительные примеры (без них
|
||||
полнота — вырожденное утверждение) и пере-снять точность ПОСЛЕ стеммера.
|
||||
|
||||
## ЗАЧЕМ ЭТОТ ПАК — одной фразой
|
||||
**Приоритет №1 владельца — «100% консистентность, никаких разнопереведённых терминов» — сегодня не
|
||||
исполняется, и живая дыра НЕ там, где её искали.** Не порог 98% и не ранг флага: **подписанный канон из
|
||||
|
|
@ -23,13 +37,30 @@
|
|||
|
||||
## ЧТО ДЕЛАТЬ — ТРИ ШАГА, ПОРЯДОК ЖЁСТКИЙ
|
||||
|
||||
**ШАГ 1. ПОДАТЬ КАНОН В ПРОГОН (строка 295).** Ключ `glossary_seed` в книжном конфиге существует
|
||||
**ШАГ 1. ПОДАТЬ КАНОН В ПРОГОН (строка 295) — ЭТО ПРАВКА ДАННЫХ, А НЕ КОДА.** ⚠ Движковая половина
|
||||
ПОСТРОЕНА и запинена: `backend/internal/pipeline/runner_memory_test.go`, греп
|
||||
`TestRunnerMemoryInjectionAndPostcheck` — подписанные формы доезжают до system-сообщения ОБЕИХ ролей.
|
||||
Не подключён сид на ОДНОМ стенде (`books/gu-zhenren/probe-4axes/book.yaml`), и это **сознательное
|
||||
пре-регистрированное решение полигона**, а не забывчивость; на восьми других стендах сид подключён.
|
||||
⛔ **Стенд — ЧУЖАЯ зона (полигон), и подключение сида двигает `memory_version` ⇒ ОБА снапшота ⇒
|
||||
обесценивает $0-резюм всех рук.** Куплено там около **$8.7**. ⇒ **без явного слова полигона и
|
||||
оркестратора ничего на стенде не трогать.** ⚠ И `books` — симлинк в соседний worktree, который тебе
|
||||
трогать запрещено: значит физически правит стенд ПОЛИГОН, а не ты.
|
||||
⚠ **Что действительно движковое и $0:** данные канона (`allow_short: false` у одноруновых ключей —
|
||||
`books/gu-zhenren/guzhenren-seed-v2.yaml`, и отсев `minKeyLenHan = 2` в `backend/internal/membank/memory.go`)
|
||||
и, если решишь заказывать, поле в `status --json` «сид подключён / сколько подписанных форм» — сегодня
|
||||
там есть только счётчик НЕподписанных.
|
||||
**Прежняя редакция шага 1:** Ключ `glossary_seed` в книжном конфиге существует
|
||||
(`backend/internal/config/book.go`, греп `GlossarySeed`); канон лежит файлом. Задача: предъявить
|
||||
ИСПОЛНЕНИЕМ, что прогон идёт С каноном — что подписанные формы доезжают до провода обеих ролей и что
|
||||
`status --json` это показывает. ⚠ Если подключение двигает `RequestHash`/снапшот — **скажи ЦИФРУ цены
|
||||
пере-снапшота ДО того, как что-то менять**, и жди слова оркестратора: пере-снапшот есть пере-оплата.
|
||||
|
||||
**ШАГ 2. ЗАМЕРИТЬ ЧЕКЕР — ЭТО ГЛАВНОЕ (строка 12).** Прежний замер полноты ПОРОЧЕН и почему — сказано в
|
||||
**ШАГ 2. ПЕРЕ-СНЯТЬ ЗАМЕР ЧЕСТНО — ЭТО ГЛАВНОЕ (строка 12).** Прибор и корпус названы выше; гонится как
|
||||
`TM_CHECKER_LABELS=1 go test ./internal/membank -run <класс>`. ⚠ **Одно-Han класс структурно недостижим без
|
||||
правки ДАННЫХ:** ключ `蛊` несёт `allow_short: false`, а отсев стоит на `minKeyLenHan = 2` — «добрать
|
||||
одно-Han-позитивы» невозможно, пока это не сменится, а смена двигает `memory_version` ⇒ снапшот. **Назови
|
||||
цену прежде, чем менять.** Прежний замер полноты ПОРОЧЕН и почему — сказано в
|
||||
самой строке: класс одного иероглифа не имел НИ ОДНОГО положительного примера, то есть «ошибок нет»
|
||||
означало «мерить было нечем». Нужны **точность и полнота на выборке, где положительные примеры есть**,
|
||||
и отдельно — **доля ЛОЖНЫХ срабатываний**. ⛔ Слово владельца 05.09 дословно: «если он ложно
|
||||
|
|
@ -52,8 +83,10 @@
|
|||
2. **Адверсариальный проход по СВОЕЙ готовой работе.** Уязвимое место этого пака названо прямо: **замер,
|
||||
который меряет не то.** Атакуй свою выборку вопросом «а есть ли в ней положительные примеры того
|
||||
класса, про который я делаю вывод» — прежний замер пал ровно здесь.
|
||||
3. **NAMED-АРТЕФАКТ: посадка `QC-canon-not-loaded` — предъявить КРАСНОЙ.** Смысл: сломать подачу канона
|
||||
⇒ замер обязан это заметить. ⚠ Этот механизм окупился 05.09: он поймал не «забыли прогнать», а
|
||||
3. **NAMED-АРТЕФАКТ: посадка `QC-canon-not-loaded` в `backend/cmd/tmmutate/mutations.json` — предъявить
|
||||
КРАСНОЙ.** Пакет — `./internal/pipeline/`, ожидаемый красный тест — `TestRunnerMemoryInjectionAndPostcheck`.
|
||||
⚠ **НЕ целить посадку в харнесс лейблов:** без `TM_CHECKER_LABELS=1` он СКИПАЕТСЯ, и посадка выйдет
|
||||
зелёной по скипу — это форма ложной зелени, а не пин. ⚠ Этот механизм окупился 05.09: он поймал не «забыли прогнать», а
|
||||
ВЫРОЖДЕННЫЙ ТЕСТ — утверждение, зелёное потому, что его предмета в фикстуре не было.
|
||||
4. **Своё воркфлоу-ревью** готовой работы — обязательная часть сдачи, не «если останется время».
|
||||
5. **Fable 5 помощник — ОДИН, максимум ДВА**, модель задавать ЯВНО, вести долгим разговором, а не
|
||||
|
|
@ -63,7 +96,10 @@
|
|||
7. **Каталог мутаций гонится ЦЕЛИКОМ и обязан СОЙТИСЬ.** «Прогнан целиком» и «прогнан целиком И
|
||||
СОШЁЛСЯ» — разные утверждения; 05.09 первый полный прогон нашёл четыре дыры именно потому, что был
|
||||
честным. ⚠ Проверка «якорь посадки резолвится РОВНО ОДИН раз» гоняется ПОСЛЕ КАЖДОГО касания кода.
|
||||
8. **Нормы смены 05.09 — `^## D39.202`, прочти целиком.** Там девять форм ложной зелени, включая ту, что
|
||||
8. **`docs/scripts/counts.py --lint` — гнать ОБЯЗАТЕЛЬНО** (его корень включает `backend/docs`, куда ты пишешь
|
||||
полный отчёт): собственная проверка якорей тула НЕ заменяет этот гейт — вытеснение существующего гейта
|
||||
своей привычкой стоило смене шести битых якорей (`D39.202` п.3-бис).
|
||||
9. **Нормы смены 05.09 — `^## D39.202`, прочти целиком.** Там девять форм ложной зелени, включая ту, что
|
||||
стоила дороже всех: **гейт, ЗАЩИЩАЮЩИЙ дефект** (тест ПИНИТ неверное поведение).
|
||||
|
||||
## ЧЕГО ЖДЁТ ОТ ТЕБЯ ПРИЁМКА
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
# Промт пака: ФОРМА ЗАКАЗА ПЕРЕВОДА — деньги, объём и вердикт ДО клика
|
||||
|
||||
> **Пак на ДВЕ зоны.** Половины независимы по коду и делаются РАЗНЫМИ сессиями: **платформа** (`platform/`)
|
||||
> и **контракт** (канон `docs/architecture/14-api-contract/` правит ТОЛЬКО оркестратор — зона предъявляет
|
||||
> состав минора отчётом). **Никто не коммитит:** деревья готовятся и передаются оркестратору
|
||||
> **Пак делает ОДНА ПЛАТФОРМЕННАЯ СЕССИЯ.** Канон `docs/architecture/14-api-contract/` правит ТОЛЬКО
|
||||
> оркестратор — зона предъявляет **состав минора ОТЧЁТОМ**, своей рукой канон не трогает. **Никто не коммитит:** деревья готовятся и передаются оркестратору
|
||||
> `textmachine-main-27`. Соседний worktree `/home/ubuntu/projects/textmachine` не трогать.
|
||||
> **`.env` не читать никогда.**
|
||||
|
||||
|
|
@ -40,19 +39,18 @@
|
|||
не было): подтвердить замером — часть работы.
|
||||
|
||||
## СОСТАВ — ЧЕТЫРЕ ПОЗИЦИИ
|
||||
**(1) Контракт, минор (строка 279).** Заказ ОБЪЁМОМ: `ceiling_chapters` → `chapters` со смыслом объёма
|
||||
**(1) Контракт, минор (строка 279) — состав берётся ИЗ СТРОКИ ЦЕЛИКОМ, ниже только несущее.** ⚠ Первая редакция промта сузила его до четырёх позиций и тем противоречила собственной карте чтения; в строке есть ещё: `PausedReason` += причина исчерпания лимита, `Run` += заказано/доставлено глав, оценка `{expected, hold}`, границы денежного ползунка `{min: step_max, max: balance}`, ТРИ вида заказа, упрощение резюма, «фразы данными». Заказ ОБЪЁМОМ: `ceiling_chapters` → `chapters` со смыслом объёма
|
||||
(`null` = вся книга); `CeilingBounds` → `OrderOptions{chapters_left, affordable_chapters, verdict:
|
||||
covers_all|covers_part|covers_none, blocked}`; баланс и холд выходят ДЕНЬГАМИ.
|
||||
⛔ **Поле недостачи в событии `ceiling` НЕ зеркалить под нынешним именем:** владелец выбрал форму
|
||||
«сколько добавить», значит `shortfall_micro_usd` станет ЛОЖНЫМ именем — величина `max(shortfall,
|
||||
step_max − headroom)`, кандидат `top_up_micro_usd`, `StreamVersion` 1.3→1.4 (строка **294**, `D39.203`).
|
||||
Зеркалить приговорённое имя — значит покупать второй минор.
|
||||
**(2) Платформа (строка 280).** Заказ живёт на КНИГЕ (`ordered_through_chapter`, `null` = вся книга), холд
|
||||
**(2) Платформа (строка 280).** ⚠ **`PD-422` берётся В ТОТ ЖЕ ПАК — так велит сама строка 280** (это её предусловие, не соседняя работа). ⚠ И знай заранее: комментарий `platform/internal/ingest/resync.go` (греп `waits on a decision of its own`) описывает гейт оркестратора на проводку `--max-units` — **этой строкой гейт СНЯТ**, читая комментарий буквально, ты встанешь на пустом месте. Заказ живёт на КНИГЕ (`ordered_through_chapter`, `null` = вся книга), холд
|
||||
считается ОТ ПРОЕКЦИИ движка, `--max-units` наконец едет в argv.
|
||||
**(3) Честность числа знаков (строка 282).** Подпись «Знаков» сегодня лжёт для EPUB — считаются руны
|
||||
ZIP-архива. Источник построен: `source_chars` в манифесте. ⚠ Форму признака точности владелец
|
||||
ратифицировал: **признак РЯДОМ с числом, а НЕ смена семантики `null`** — `null` уже значит «ещё грузится».
|
||||
**(4) Замер (строка 281).** Сколько наших денег стоит тысяча ПЛОТНЫХ и тысяча РАЗРЕЖЁННЫХ знаков по
|
||||
ZIP-архива. Источник построен: `source_chars` в манифесте. ⚠ Форму признака точности ратифицировал **ОРКЕСТРАТОР актом приёмки `D39.201` п.5(б)** — зона подала две законные формы и выбор оставила ему; **слова владельца тут нет** (испр. по ревью до выдачи): **признак РЯДОМ с числом, а НЕ смена семантики `null`** — `null` уже значит «ещё грузится».
|
||||
**(4) Замер (строка 281) — ⚠ ЗОНА ПОЛИГОН, не твоя; он ГЕЙТ коэффициента холда для (2).** Пока его нет, коэффициент называет оркестратор явным числом. Не начинай его сам и не жди молча — скажи, что упёрся. Сколько наших денег стоит тысяча ПЛОТНЫХ и тысяча РАЗРЕЖЁННЫХ знаков по
|
||||
стадиям. ⚠ Цель — **НЕ константа** (это прямо запрещено), а **дисперсия проекции**: коэффициент для холда
|
||||
и честность вердикта «хватает / не хватает».
|
||||
|
||||
|
|
@ -62,12 +60,35 @@ ZIP-архива. Источник построен: `source_chars` в мани
|
|||
работа строки 294) · решение, ЧТО печатать на титуле (закрыто `D39.205`: копия без пометки = книга без
|
||||
единого пропуска, пропущенный КУСОК главы критичен).
|
||||
|
||||
## ⛔ ЧТО ПРИДЁТСЯ СЛОМАТЬ НАМЕРЕННО — НАЗЫВАЮ ЗАРАНЕЕ, ЧТОБЫ ТЫ НЕ ВСТАЛА НА ПИНГ
|
||||
**Тест платформы ПИНИТ отозванный запрет:** `platform/internal/httpapi/v0_test.go`, греп на денежные
|
||||
суффиксы в проводе книги — он краснеет на ЛЮБОЙ сумме. Владелец запрет отозвал (`D39.196`), значит правка
|
||||
теста ЗАКАЗАНА, а не самовольна: по `D39.183` это обслуживание, но **объявляется в отчёте** — что
|
||||
изменилось в поведении, какой тест это описывал, куда уехала гарантия.
|
||||
**Носители того же отозванного запрета, которые пак обязан закрыть** (их называет `D39.196` п.2):
|
||||
`platform/docs/ENGINEERING_STANDARDS.md` (зонный) · `frontend/docs/api-contract/openapi.yaml` и
|
||||
`frontend/docs/API_CONTRACT_INPUT.md` §4.8 (зеркало ЗАМОРОЖЕННОЙ зоны — правит оркестратор, скажи ему) ·
|
||||
комментарии на пути провода в `platform/internal` (греп `D39.84`).
|
||||
|
||||
## ⚠ ПРЕДУСЛОВИЯ ХОСТА — проверь ДО работы, иначе зелень будет ложной
|
||||
· батарея зоны требует Postgres: без `TM_PLATFORM_TEST_DSN` тесты хранилища и бэкапа **СКИПАЮТСЯ**, и
|
||||
скип читается как зелень (`D39.202` п.2);
|
||||
· бинарь движка — не старше `81a89e9`, иначе манифест не несёт цен;
|
||||
· фикстуры `manifest --json` снимать РЕАЛЬНЫМ бинарём, а не рукописные.
|
||||
|
||||
## ⚠ ЧТО ПЛАТФОРМА ОТДАЁТ ДО ПЕРЕИМЕНОВАНИЯ ПОЛЯ — РЕШИ И НАЗОВИ
|
||||
Строка **294** (переименование в форму «сколько добавить») **сегодня не выдана никому**, а поток на 1.3
|
||||
уже несёт старое имя. ⇒ реши явно и запиши в отчёт: считать величину самой, отдавать `null` или не
|
||||
показывать блок — и предъяви довод. Молчание здесь станет третьим носителем расхождения.
|
||||
|
||||
## ОБЯЗАТЕЛЬНЫЕ НОРМЫ СДАЧИ
|
||||
1. **Ревью ИСПОЛНЕНИЕМ** своего кода и результатов; «проверено» без команды и её вывода — не утверждение.
|
||||
2. **Адверсариальный проход по своей работе.** Уязвимое место названо: **вердикт «хватает», выданный по
|
||||
проекции, которая врёт.** Атакуй его короткой книгой, книгой без структуры и книгой с дырами.
|
||||
3. **NAMED-АРТЕФАКТ: посадка `OF-verdict-lies` — предъявить КРАСНОЙ** (вердикт «хватает» при недостаточном
|
||||
балансе).
|
||||
3. **NAMED-АРТЕФАКТ: `OF-verdict-lies` — вердикт «хватает» при недостаточном балансе, предъявить КРАСНЫМ.**
|
||||
⚠ **Мутационного каталога у платформы НЕТ** (`tmmutate` — движковый инструмент). Форма прежних паков зоны
|
||||
и она же обязательна здесь: ручная посадка в КОПИИ дерева + отчёт строкой «`file:line` · что подменено ·
|
||||
какой тест покраснел ИМЕНЕМ · был ли DSN». Без DSN тест мог скипнуться — тогда это не красный.
|
||||
4. **Своё воркфлоу-ревью** — часть сдачи. **Fable 5 — ОДИН-ДВА агента**, модель задавать явно.
|
||||
5. **Сверить промт с заказанным и НАЗВАТЬ расхождения**, а не исполнять молча.
|
||||
6. **Состав контрактного минора — ОТЧЁТОМ**, канон своей рукой не трогать. ⚠ Ратификация, порождающая
|
||||
|
|
@ -80,5 +101,5 @@ ZIP-архива. Источник построен: `source_chars` в мани
|
|||
## ПРИЁМКА
|
||||
Два верификатора: №1 судит заказ и дифф **не читая отчёт**, №2 ищет ВНЕ карты отчёта; каждой находке —
|
||||
скептик с заданием СНЯТЬ её. Верификаторам выдаётся ГОТОВЫЙ ПУТЬ отдельного рабочего дерева.
|
||||
**Отчёт — в зонный журнал `platform/docs/platform-PROGRESS.md`** (платформа в `docs/PROGRESS.md` не пишет).
|
||||
⚠ **Пак делает ОДНА платформенная сессия**, а состав контрактного минора идёт ОТЧЁТОМ оркестратору — отдельной «контрактной сессии» нет: у неё не было бы ни зоны записи, ни журнала (испр. по ревью до выдачи). **Отчёт — в зонный журнал `platform/docs/platform-PROGRESS.md`** (платформа в `docs/PROGRESS.md` не пишет).
|
||||
⚠ **Канал сессий — `/tmp/textmachine-channel`**, адрес сверять `ListAgents`.
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
| Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE |
|
||||
| Бэкенд · КАЧЕСТВО | [BACKEND_QUALITY_CANON_SESSION_PROMPT.md](BACKEND_QUALITY_CANON_SESSION_PROMPT.md) | **НАПИСАН 05.09, выдача по слову владельца** — «подать подписанный канон в прогон и ЗАМЕРИТЬ чекер»: строки **295** (канон в прогон) · **12** (пере-замер точности/полноты — прежний замер порочен) · рекомендация по гейту БЕЗ права его включать. ⚠ Строка **296** (точечная перегенерация) в пак НЕ входит — гейчена 295 |
|
||||
| Бэкенд · прежний | активного НЕТ | пак «денежный стоп» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 05.09 — акт **D39.206** (`81a89e9` + `616a8e4`), промт в `archive/prompts/` с баннером исхода. Следующая работа зоны — строки **291** (флаг вместо клина, `D39.204`) · **294** (форма «сколько добавить», `D39.203`) · **296** (точечная перегенерация по промаху глоссария, после 295) |
|
||||
| Платформа+контракт · ФОРМА ЗАКАЗА | [ORDER_FORM_SESSION_PROMPT.md](ORDER_FORM_SESSION_PROMPT.md) | **НАПИСАН 05.09, выдача по слову владельца** — деньги, объём и вердикт ДО клика (`D39.196`): строки **276 · 279 · 280 · 281 · 282**. ⛔ Читать с эрратой **05.09-д**: строки 277/278 УЖЕ ПОСТРОЕНЫ, заказывать заново нельзя; поле недостачи НЕ зеркалить — оно переименовывается (строка 294). Живая цель — **пол последних ~2 глав**, а не снятая стена десяти |
|
||||
| Платформа · ФОРМА ЗАКАЗА | [ORDER_FORM_SESSION_PROMPT.md](ORDER_FORM_SESSION_PROMPT.md) | **НАПИСАН 05.09, выдача по слову владельца** — деньги, объём и вердикт ДО клика (`D39.196`): строки **276 · 279 · 280 · 281 · 282**. ⛔ Читать с эрратой **05.09-д**: строки 277/278 УЖЕ ПОСТРОЕНЫ, заказывать заново нельзя; поле недостачи НЕ зеркалить — оно переименовывается (строка 294). Живая цель — **пол последних ~2 глав**, а не снятая стена десяти |
|
||||
| Платформа · прежний | активного НЕТ | пак «пустить внутрь можно» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 05.09 — акт **D39.201** (`7e2226a` + `3e84716`), промт в `archive/prompts/` с баннером исхода. Следующая работа зоны — строки **294** (зеркало словаря под минор потока) ⚠ (строка 293 — зона ОРКЕСТРАТОРА, не платформы: правило игнора общее для всех рабочих деревьев клона) |
|
||||
| Полигон | [POLYGON_EXP2223_REDO_SESSION_PROMPT.md](POLYGON_EXP2223_REDO_SESSION_PROMPT.md) (отложенный — [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md), строка 85) | фаза Д ИДЁТ; ⚠ живой носитель курса — в `eval/dovodka/`, какой именно называет зона (⚠ [POLYGON_PHASE_D_HANDOFF.md](POLYGON_PHASE_D_HANDOFF.md) — перекрытый снимок, читать не как курс) |
|
||||
| Фронт | активного НЕТ | **ЗОНА ЗАМОРОЖЕНА** (D39.136 п.2 + D39.147: разморозка отдельным словом владельца, не привязана к P7); перечень первого касания — в зонном журнале |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue