Write two packs the day's decisions created: connect the signed canon and measure the checker, and make an order say in money whether it covers the book
This commit is contained in:
parent
6641f875bd
commit
e89facd573
3 changed files with 163 additions and 2 deletions
75
docs/BACKEND_QUALITY_CANON_SESSION_PROMPT.md
Normal file
75
docs/BACKEND_QUALITY_CANON_SESSION_PROMPT.md
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
# Промт сессии: КАЧЕСТВО — подать подписанный канон в прогон и ЗАМЕРИТЬ чекер
|
||||
|
||||
> **Роль:** бэкенд (+ полигонная половина замера). **Зона записи:** `backend/` и своя секция «Бэкенд» в
|
||||
> `docs/PROGRESS.md` — единственное разрешённое каноном исключение из «`docs/` — зона оркестратора».
|
||||
> **Ты НЕ коммитишь:** дерево готовишь и передаёшь оркестратору `textmachine-main-27`. Чужие зоны
|
||||
> (`platform/`, `frontend/`, `eval/` вне своей половины) и соседний worktree `/home/ubuntu/projects/textmachine`
|
||||
> не трогаешь. **`.env` не читаешь никогда.**
|
||||
|
||||
## КАРТА ЧТЕНИЯ — ЗАКОН, пять позиций, дальше только по её ссылкам
|
||||
1. `CLAUDE.md` — цели, зоны, гардрейлы.
|
||||
2. **`^## D39.198`** (журнал решений) — приоритет качества словом владельца и почему весов рубрики НЕ НУЖНО.
|
||||
3. **`^## D39.205`** — что владелец решил 05.09 про гейт глоссария и чего он НЕ решал.
|
||||
4. Строки бэклога **295 · 12 · 296** в `docs/PROGRESS.md` (греп `^| 295 |` и так далее).
|
||||
5. `docs/architecture/12-go-style-notes.md` §1 — язык кода и три корзины целевого языка.
|
||||
⚠ Голову журнала целиком НЕ читать. Номер грепается: тело — `^## D<номер>`; **подномер (`D39.196`, `D2.3`)
|
||||
собственного тела НЕ имеет** — это ПУНКТ внутри родителя, отбрось хвост.
|
||||
|
||||
## ЗАЧЕМ ЭТОТ ПАК — одной фразой
|
||||
**Приоритет №1 владельца — «100% консистентность, никаких разнопереведённых терминов» — сегодня не
|
||||
исполняется, и живая дыра НЕ там, где её искали.** Не порог 98% и не ранг флага: **подписанный канон из
|
||||
53 терминов просто НЕ ПОДКЛЮЧЁН к прогону.** Весь измеренный дрейф — дрейф С ОТКЛЮЧЁННЫМ каноном; там,
|
||||
где его подключали, консистентность 99.3–100%. ⇒ мерить точность чекера на таком прогоне — мерить не то.
|
||||
|
||||
## ЧТО ДЕЛАТЬ — ТРИ ШАГА, ПОРЯДОК ЖЁСТКИЙ
|
||||
|
||||
**ШАГ 1. ПОДАТЬ КАНОН В ПРОГОН (строка 295).** Ключ `glossary_seed` в книжном конфиге существует
|
||||
(`backend/internal/config/book.go`, греп `GlossarySeed`); канон лежит файлом. Задача: предъявить
|
||||
ИСПОЛНЕНИЕМ, что прогон идёт С каноном — что подписанные формы доезжают до провода обеих ролей и что
|
||||
`status --json` это показывает. ⚠ Если подключение двигает `RequestHash`/снапшот — **скажи ЦИФРУ цены
|
||||
пере-снапшота ДО того, как что-то менять**, и жди слова оркестратора: пере-снапшот есть пере-оплата.
|
||||
|
||||
**ШАГ 2. ЗАМЕРИТЬ ЧЕКЕР — ЭТО ГЛАВНОЕ (строка 12).** Прежний замер полноты ПОРОЧЕН и почему — сказано в
|
||||
самой строке: класс одного иероглифа не имел НИ ОДНОГО положительного примера, то есть «ошибок нет»
|
||||
означало «мерить было нечем». Нужны **точность и полнота на выборке, где положительные примеры есть**,
|
||||
и отдельно — **доля ЛОЖНЫХ срабатываний**. ⛔ Слово владельца 05.09 дословно: «если он ложно
|
||||
положительно будет стрелять это плохо, очень плохо». Ложное срабатывание удерживает ХОРОШИЙ текст, то
|
||||
есть чинит консистентность ценой отказа отдать книгу.
|
||||
|
||||
**ШАГ 3. ПОДГОТОВИТЬ РЕШЕНИЕ, НЕ ПРИНИМАЯ ЕГО.** Ручка `gates.glossary.postcheck_gate` построена
|
||||
(`backend/internal/config/pipeline.go`, греп `PostcheckGate`) и ВЫКЛЮЧЕНА в боевом конфиге. **Включать её
|
||||
ты НЕ вправе** — это решение владельца, и он его отложил именно до твоего замера. Твой выход: цифры и
|
||||
рекомендация одной фразой.
|
||||
|
||||
## ЧТО В ПАК НЕ ВХОДИТ
|
||||
· **Строка 296** (точечная перегенерация по промаху глоссария) — она ГЕЙЧЕНА строкой 295 и делается
|
||||
ПОСЛЕ замера: перегенерация по ложному срабатыванию перепишет верный текст. Не начинай.
|
||||
· Включение гейта · правка порога 98% в доках (зона оркестратора) · платные прогоны сверх санкции.
|
||||
|
||||
## ОБЯЗАТЕЛЬНЫЕ НОРМЫ СДАЧИ (без них пак не принимается)
|
||||
1. **Ревью ИСПОЛНЕНИЕМ своего кода, своих запросов к моделям и полученных результатов.** Самоотчёт
|
||||
«проверено» без предъявленной команды и её вывода утверждением НЕ является.
|
||||
2. **Адверсариальный проход по СВОЕЙ готовой работе.** Уязвимое место этого пака названо прямо: **замер,
|
||||
который меряет не то.** Атакуй свою выборку вопросом «а есть ли в ней положительные примеры того
|
||||
класса, про который я делаю вывод» — прежний замер пал ровно здесь.
|
||||
3. **NAMED-АРТЕФАКТ: посадка `QC-canon-not-loaded` — предъявить КРАСНОЙ.** Смысл: сломать подачу канона
|
||||
⇒ замер обязан это заметить. ⚠ Этот механизм окупился 05.09: он поймал не «забыли прогнать», а
|
||||
ВЫРОЖДЕННЫЙ ТЕСТ — утверждение, зелёное потому, что его предмета в фикстуре не было.
|
||||
4. **Своё воркфлоу-ревью** готовой работы — обязательная часть сдачи, не «если останется время».
|
||||
5. **Fable 5 помощник — ОДИН, максимум ДВА**, модель задавать ЯВНО, вести долгим разговором, а не
|
||||
поднимать нового на каждый вопрос.
|
||||
6. **Сверить ЭТОТ промт с тем, что заказано, и НАЗВАТЬ расхождения** — не исполнять молча. Прецедент:
|
||||
05.09 оба пака нашли в своих промтах по два дефекта, и один из них был внутренне противоречив.
|
||||
7. **Каталог мутаций гонится ЦЕЛИКОМ и обязан СОЙТИСЬ.** «Прогнан целиком» и «прогнан целиком И
|
||||
СОШЁЛСЯ» — разные утверждения; 05.09 первый полный прогон нашёл четыре дыры именно потому, что был
|
||||
честным. ⚠ Проверка «якорь посадки резолвится РОВНО ОДИН раз» гоняется ПОСЛЕ КАЖДОГО касания кода.
|
||||
8. **Нормы смены 05.09 — `^## D39.202`, прочти целиком.** Там девять форм ложной зелени, включая ту, что
|
||||
стоила дороже всех: **гейт, ЗАЩИЩАЮЩИЙ дефект** (тест ПИНИТ неверное поведение).
|
||||
|
||||
## ЧЕГО ЖДЁТ ОТ ТЕБЯ ПРИЁМКА
|
||||
Два верификатора по обязательным нормам: №1 судит ЗАКАЗ и ДИФФ **не читая твой отчёт**, №2 строит карту
|
||||
твоего отчёта и ищет ВНЕ неё. ⚠ Им выдаётся ГОТОВЫЙ ПУТЬ отдельного рабочего дерева
|
||||
(`git worktree add`) — общее дерево они не трогают.
|
||||
**Отчёт — в свою секцию `docs/PROGRESS.md`, полный — файлом в `backend/docs/`.** Числа получены
|
||||
командами, команды воспроизведения самодостаточны и не ссылаются на скретчпад сессии.
|
||||
⚠ **Канал сессий — `/tmp/textmachine-channel`**: впиши свой блок первым делом, адрес сверяй `ListAgents`.
|
||||
84
docs/ORDER_FORM_SESSION_PROMPT.md
Normal file
84
docs/ORDER_FORM_SESSION_PROMPT.md
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
# Промт пака: ФОРМА ЗАКАЗА ПЕРЕВОДА — деньги, объём и вердикт ДО клика
|
||||
|
||||
> **Пак на ДВЕ зоны.** Половины независимы по коду и делаются РАЗНЫМИ сессиями: **платформа** (`platform/`)
|
||||
> и **контракт** (канон `docs/architecture/14-api-contract/` правит ТОЛЬКО оркестратор — зона предъявляет
|
||||
> состав минора отчётом). **Никто не коммитит:** деревья готовятся и передаются оркестратору
|
||||
> `textmachine-main-27`. Соседний worktree `/home/ubuntu/projects/textmachine` не трогать.
|
||||
> **`.env` не читать никогда.**
|
||||
|
||||
## КАРТА ЧТЕНИЯ — ЗАКОН, пять позиций
|
||||
1. `CLAUDE.md` — цели, зоны, гардрейлы.
|
||||
2. **`^## D39.196`** — решение владельца о форме заказа. ⛔ **Читать ВМЕСТЕ с эрратой 05.09-д** в шапке
|
||||
журнала (греп `Эррата 05.09-д`): её пункт 5 велит «движковую половину первой» — **она УЖЕ ПОСТРОЕНА**.
|
||||
3. **`^## D39.203`** — владелец разрешил движку говорить «сколько добавить»; поле ПЕРЕИМЕНОВЫВАЕТСЯ.
|
||||
4. Строки бэклога **276 · 279 · 280 · 281 · 282 · 283** (греп `^| 276 |` и так далее).
|
||||
5. `docs/architecture/15-money-path.md` — путь денег от гранта до расчёта, целиком.
|
||||
⚠ Голову журнала целиком НЕ читать; подномер собственного тела не имеет — грепай родителя.
|
||||
|
||||
## ЗАЧЕМ ЭТОТ ПАК
|
||||
Сегодня человек не может внятно КУПИТЬ перевод. Владелец 05.09 назвал форму: **на аккаунте баланс в
|
||||
ДЕНЬГАХ и он виден**; потолок тянется ползунком **в деньгах**; рядом — ответ на настоящий вопрос
|
||||
покупателя: **хватает ли на всю книгу**; второй ползунок — ОБЪЁМ (главы, если структура распозналась;
|
||||
знаки, если нет, и о нераспознавании говорим ЯВНО); отдельная кнопка «книга целиком»; **вердикт ДО
|
||||
клика**, старт = холд.
|
||||
|
||||
## ⛔ ЧТО УЖЕ ПОСТРОЕНО — НЕ ЗАКАЗЫВАТЬ ЗАНОВО
|
||||
Строки **277** и **278** ЗАКРЫТЫ лендингом `81a89e9` (акт `D39.206`) и сняты из таблицы:
|
||||
· отказ резервации **защёлкивает** волну, а не роняет книгу; обязательный вызов ЖДЁТ, когда ожидание
|
||||
может помочь;
|
||||
· движок публикует **проекцию цены** — `expected_usd` по главам, `book_once_usd`, `step_max_usd`, а также
|
||||
`source_chars` по юниту и `structure: detected|declared|none` — всё в `manifest --json`/`status --json`,
|
||||
аддитивно, версию манифеста не двигая.
|
||||
⇒ **Платформа этих чисел СЕГОДНЯ НЕ ЧИТАЕТ** (`git grep -lE "StepMax|step_max" -- platform/` → пусто).
|
||||
**Взять их — половина работы этого пака.**
|
||||
|
||||
## ⛔ ЖИВАЯ ПРОБЛЕМА, КОТОРУЮ ПАК ОБЯЗАН СНЯТЬ, И ОНА НЕ ТА, ЧТО В СТАРЫХ ДОКАХ
|
||||
Стена «книга короче десяти глав не переводится» СНЯТА движком. **Остался ПОЛ:** прирост потолка считается
|
||||
`chaptersLeft × $0.03`, и даже при одном воркере `2 × $0.03 = $0.06` меньше одной редакторской резервации
|
||||
(~$0.07) ⇒ **последние ~2 главы ЛЮБОЙ книги не покупаются.** Это и есть живая половина `PD-440`. Снимается
|
||||
строкой **280** — потолок ДЕНЬГАМИ вместо «глав × ставка». ⚠ Пол **ВЫВЕДЕН, не замерен** (платного прогона
|
||||
не было): подтвердить замером — часть работы.
|
||||
|
||||
## СОСТАВ — ЧЕТЫРЕ ПОЗИЦИИ
|
||||
**(1) Контракт, минор (строка 279).** Заказ ОБЪЁМОМ: `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` = вся книга), холд
|
||||
считается ОТ ПРОЕКЦИИ движка, `--max-units` наконец едет в argv.
|
||||
**(3) Честность числа знаков (строка 282).** Подпись «Знаков» сегодня лжёт для EPUB — считаются руны
|
||||
ZIP-архива. Источник построен: `source_chars` в манифесте. ⚠ Форму признака точности владелец
|
||||
ратифицировал: **признак РЯДОМ с числом, а НЕ смена семантики `null`** — `null` уже значит «ещё грузится».
|
||||
**(4) Замер (строка 281).** Сколько наших денег стоит тысяча ПЛОТНЫХ и тысяча РАЗРЕЖЁННЫХ знаков по
|
||||
стадиям. ⚠ Цель — **НЕ константа** (это прямо запрещено), а **дисперсия проекции**: коэффициент для холда
|
||||
и честность вердикта «хватает / не хватает».
|
||||
|
||||
## ЧТО В ПАК НЕ ВХОДИТ
|
||||
· **Строка 283** (структура глав для не-CJK и EPUB) — свой пак, окно пере-снапшота.
|
||||
· Правка канона своей рукой · включение гейта глоссария · переименование поля недостачи (это движковая
|
||||
работа строки 294) · решение, ЧТО печатать на титуле (закрыто `D39.205`: копия без пометки = книга без
|
||||
единого пропуска, пропущенный КУСОК главы критичен).
|
||||
|
||||
## ОБЯЗАТЕЛЬНЫЕ НОРМЫ СДАЧИ
|
||||
1. **Ревью ИСПОЛНЕНИЕМ** своего кода и результатов; «проверено» без команды и её вывода — не утверждение.
|
||||
2. **Адверсариальный проход по своей работе.** Уязвимое место названо: **вердикт «хватает», выданный по
|
||||
проекции, которая врёт.** Атакуй его короткой книгой, книгой без структуры и книгой с дырами.
|
||||
3. **NAMED-АРТЕФАКТ: посадка `OF-verdict-lies` — предъявить КРАСНОЙ** (вердикт «хватает» при недостаточном
|
||||
балансе).
|
||||
4. **Своё воркфлоу-ревью** — часть сдачи. **Fable 5 — ОДИН-ДВА агента**, модель задавать явно.
|
||||
5. **Сверить промт с заказанным и НАЗВАТЬ расхождения**, а не исполнять молча.
|
||||
6. **Состав контрактного минора — ОТЧЁТОМ**, канон своей рукой не трогать. ⚠ Ратификация, порождающая
|
||||
обязанность в зоне, выдаётся зоне ЯВНО и тем же актом — иначе минор сутки живёт ложным на проводе
|
||||
(это уже стоило дня, эррата 04.09-в).
|
||||
7. **Нормы смены — `^## D39.202`, прочесть целиком.** Особенно: прибор отвечает на СВОЙ вопрос, а читают
|
||||
его как ответ на твой; и четыре вида одинаково зелёного отчёта.
|
||||
8. **Деньги.** Платный прогон — только по санкции оркестратора, с названной суммой ДО запуска.
|
||||
|
||||
## ПРИЁМКА
|
||||
Два верификатора: №1 судит заказ и дифф **не читая отчёт**, №2 ищет ВНЕ карты отчёта; каждой находке —
|
||||
скептик с заданием СНЯТЬ её. Верификаторам выдаётся ГОТОВЫЙ ПУТЬ отдельного рабочего дерева.
|
||||
**Отчёт — в зонный журнал `platform/docs/platform-PROGRESS.md`** (платформа в `docs/PROGRESS.md` не пишет).
|
||||
⚠ **Канал сессий — `/tmp/textmachine-channel`**, адрес сверять `ListAgents`.
|
||||
|
|
@ -22,8 +22,10 @@
|
|||
| Роль | Активный промт | Статус |
|
||||
|---|---|---|
|
||||
| Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE |
|
||||
| Бэкенд | активного НЕТ | пак «денежный стоп» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 05.09 — акт **D39.206** (`81a89e9` + `616a8e4`), промт в `archive/prompts/` с баннером исхода. Следующая работа зоны — строки **291** (флаг вместо клина, `D39.204`) · **294** (форма «сколько добавить», `D39.203`) · **296** (точечная перегенерация по промаху глоссария, после 295) |
|
||||
| Платформа | активного НЕТ | пак «пустить внутрь можно» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 05.09 — акт **D39.201** (`7e2226a` + `3e84716`), промт в `archive/prompts/` с баннером исхода. Следующая работа зоны — строки **294** (зеркало словаря под минор потока) ⚠ (строка 293 — зона ОРКЕСТРАТОРА, не платформы: правило игнора общее для всех рабочих деревьев клона) |
|
||||
| Бэкенд · КАЧЕСТВО | [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 глав**, а не снятая стена десяти |
|
||||
| Платформа · прежний | активного НЕТ | пак «пустить внутрь можно» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 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); перечень первого касания — в зонном журнале |
|
||||
| Контракт | активного НЕТ | канон — `architecture/14-api-contract/`; ⚠ версию брать ФАЙЛОМ (`grep '^ version:' openapi.yaml`), не отсюда: миноры ратифицируются D-нотами и их содержание грепается по реестру нот. |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue