textmachine/docs/experiments/22-tenant-panel.md

211 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 22. Панель жильцов: кто занимает роль черновика и роль редактора
**Полигон-сессия, 08.08.2026.** Исполнение `docs/POLYGON_TENANT_PANEL_SESSION_PROMPT.md`
(санкция владельца 08.08, D39.117). Зона: `eval/tenant_panel/` + точечные проверки
`eval/role_topology/` + этот файл + пинг в PROGRESS «Полигон».
> **СТАТУС: ПРЕ-РЕГ Ф0/Ф1 — зафризен этим коммитом ДО первой платной покупки.**
> Потолки промта: Ф0 ≤$0.40 · Ф1 ≤$1.00 · Ф2 ≤$2.00 · Ф3 ≤$1.60; сумма ≤$5.00.
> Числа отчёта пере-считываются `eval/tenant_panel/itog22.py`, сторожатся
> `eval/tenant_panel/verify22.py`; ненулевой код возврата = отчёт не сдаётся.
---
## §0 ПРЕ-РЕГ. Секция Ф0/Ф1 (зафризена до трат)
### 0.1 Вопрос и что НЕ мерится
Топология «дешёвый черновик → дорогой редактор-переписыватель» решена эксп-21 и здесь не
пере-меряется. Открыт вопрос ЖИЛЬЦОВ обеих ролей: черновиком за всю историю проекта была одна
модель (`deepseek-v4-flash`), а выбор редактора проверен на паре из двух движков.
Не мерится и не варьируется: **банк как фактор** (наличие/отсутствие — чужой слот, строки 5/36б);
топология как таковая; контракт редактора (full-regen против диффов — строка 106).
«Правильного ответа» не существует: армы равноправны, движок по паре и по модели не ветвится
(§0.1 `12-go-style-notes.md`), поэтому любой исход — строки конфига, а не код.
### 0.2 Материал: невиданный zh-срез
Эксп-21 главный zh-замер сделал на 蛊真人, которую его же проба оценила как узнанную моделью
**4/5** — наравне с положительным контролем. Промт эксп-22 заказывает срез повторно и жёстко.
**Метод поиска (объявляется, потому что «нашёл в вебе» без метода не проверяем):**
1. Площадка отбиралась по механическому критерию — **текст главы отдаётся сервером**. Проверено
`curl`: 七猫 и 番茄 отдают JS-каркас без текста; **纵横中文网** (`zongheng.com`) отдаёт
`<div class="content">` с полной главой. Пиратские агрегаторы не рассматривались.
2. Из блока новинок главной снято 17 книг; у каждой прочитано поле `首发时间` — дату первой
публикации печатает сама площадка на странице главы.
3. Отобрана книга с датой первой публикации **в июле 2026** (то есть заведомо позже любого
правдоподобного среза обучения) и жанром, совпадающим с продуктовым (东方玄幻 — то же
семейство, что 蛊真人).
**Книга среза:** 《阴阳天帝诀》, 玄幻奇幻 / 东方玄幻, `zongheng.com/detail/1569059`,
**首发时间 2026-07-13**, на день замера 71 глава / 15万字, 393 суммарных клика.
**Проверка непереведённости** (метод и его границы объявляются вместе):
* поиск по названию (zh) и транслитерации — совпадений нет;
* поиск, ограниченный восемью ru/en-площадками переводов (`tl.rulate.ru`, `ranobelib.me`,
`ranobes.com`, `ranobehub.org`, `novelupdates.com`, `ficbook.net`, `mlate.ru`, `bllate.org`)
— совпадений нет;
* ⚠ прямой поиск в формах этих площадок механически НЕ подтверждён: `novelupdates` отдаёт 403,
`rulate` игнорирует параметр запроса (отдаёт весь каталог, 83 555 переводов), `ranobelib` и
`ranobes` — SPA. Это объявленная граница проверки, а не подтверждение;
* базовая ставка: **393 суммарных клика за 26 дней** — вероятность существования перевода
пренебрежима, но это аргумент, а не замер.
**⚠ ГЕЙТ ПРАВ, объявлен ДО отбора единиц.** Срез — взрослая вебновелла: слой насилия плотный (это
рабочий случай продукта, его меряли все прежние паки), но у ДВУХ якорных провайдеров панели лейбл
`sexually-explicit` в договоре стоит **FORBIDDEN** (quirks 00, таблица прав: deepseek ToU §3.4(5);
zai п. g) «Submitting … sexually explicit»). Поэтому из пула единиц сняты **две главы с наибольшей
плотностью эротических маркеров** (верхний дециль по 18 главам): гл. 1 и гл. 2.
Честная граница: после снятия остаётся ровно 16 глав на 16 единиц, то есть отбор «из середины
распределения длин» вырождается в «все оставшиеся». Это ограничение, а не замысел.
**⚠ ОБЪЁМ СРЕЗА ОГРАНИЧЕН ВНЕШНЕ.** Скачано 18 глав (40 008 знаков), после чего площадка
поставила анти-краулерную капчу на IP; снижение темпа до 3 с, куки живой сессии владельца и
мобильный хост её не сняли. 16 единиц из 18 глав получены; добор до 71 главы не выполнен.
**Единицы (детерминированный отбор, методика эксп-21 §0):** дедуп по подписи со снятым заголовком
главы, ключ артефакта — хеш источника (не позиционный индекс), сортировка по (длина, uid).
16 единиц zh: **2073…2517 знаков**, медиана 2194; **16 разных глав** (у эксп-21 — 16 единиц из
12 глав, то есть по кластеризации срез чище); максимальная попарная близость **0.069**
(эксп-21: 0.060). Хеши единиц — `~/books/tenant-panel/manifest.json`.
**Ось переноса en (обязательна):** Kristoff, «Empire of the Dawn» (узнавание 1/5 по эксп-21),
6 единиц из отбора эксп-21 — 3 страты `fr`, 3 страты `plain`; единица `129b73ad5a` выброшена
(выходные данные и библиография, а не проза — §8 эксп-21).
**Порог контаминации — объявлен эксп-21 и здесь не двигается: узнавание ≥3/5 = материал
непригоден.** Проба — узнавание + клоуз по 5 отрывкам (`contam.py`). Две поправки против эксп-21:
проба идёт **двумя** моделями (`gpt-5.6-luna` для сопоставимости и `deepseek-v4-flash` — боевой
жилец черновой роли; §4 п.9 эксп-21 оставил это открытым) и с **двумя** опорами — положительный
контроль 金瓶梅 и книга эксп-21 蛊真人 (там 4/5). Не пройдёт порог — материал меняется на
резервную книгу 《吞仙葫》 (`detail/1573203`, 首发 2026-07-23), объявленную здесь ДО замера.
### 0.3 Починки эксп-21 §8 — закрыты, проверены исполнением
`eval/tenant_panel/checks21.py`, ненулевой код возврата = покупки запрещены. Все четыре пункта
списка §8 оказались УЖЕ закрытыми самим эксп-21 (список не был вычеркнут). Проверено запуском, а
не чтением; где возможно — на том артефакте, из-за которого пункт появился:
| §8 | Чем проверено | Итог |
|---|---|---|
| гейт ре-гена ловит и ЦЕЛЕВУЮ письменность | четыре входа с известным ответом + исторический артефакт `bo2-DRAFT-34749d6ccc-r2` (латиница 1.00) | отвергается «выход не на целевом языке» |
| карта раскладки слепого чтения вне каталога пакетов | `blind_read.KEYS ≠ PACKETS`, карт в каталоге пакетов нет | закрыт |
| персист обоснований судьи | `absjudge --selfcheck` (три регрессии) + 120/120 боевых клеток прохода abs4 несут текст | закрыт |
| три лживых докстринга | сверка докстринга с исполняемым кодом (`REPS_PER_ORDER`, `run_draft`, кортеж `JUDGES`) | противоречий нет |
### 0.4 Каcса и фриз — механизм, а не обещание
`eval/tenant_panel/money.py`. Три урока эксп-21, каждый стоил денег:
* **новый тег покупок не попадал в глоб кассы** (трижды; последний раз гейт ложное число
СЕРТИФИЦИРОВАЛ) ⇒ теги объявлены в одном месте, и `--selftest` проверяет **по одному тегу за
раз**, что каждый даёт кассе фазы и кассе пака ровно свою сумму;
* **потолки фаз пробивались** ⇒ каждая покупка проходит ДВА проекционных гарда: фазовый и
пакетный ($5.00);
* **покупки шли кодом вне зафризенного дерева** ⇒ покупка отказывает, если файл вызывающего не
отслеживается git ИЛИ отличается от закоммиченного. «Фриз ДО покупок фазы» стал механизмом.
Проверено исполнением: 7/7 тегов видны обеими кассами, проекционный гард отказывает при нулевом
потолке, фриз-гейт отвергает покупку из НЕ-файла.
### 0.5 Ф1 — кандидаты, пороги, прогнозы
**Живой листинг `/models` 08.08** (`role_topology/list_models.py`): deepseek 2 · zai 8 · kimi 12 ·
gemini 59 · xai 10 · mistral 53; **openai — ReadTimeout, пере-снять до скрина**.
`gemini-3.1-pro-preview` в листинге ЖИВ — обязательный кандидат Ф3 доступен.
**Ростер (11 моделей, `roster.py`), цены сверены 08.08 по прайс-страницам вендоров.**
Живая сверка удалась по DeepSeek · Z.AI · Gemini · Kimi (страницы сохранены); **не удалась** по
OpenAI (Cloudflare 403), xAI (308→403; Wayback свежее эксп-21 не имеет) и Mistral (прайс
рендерится JS) — там цены перенесены из эксп-21 с датой его сверки, и это объявлено.
Три поправки к `role_topology/prices.py`, найденные живой сверкой:
* **у Gemini кэш-цена выделена вендором** и в 810 раз ниже входной ($0.20 против $2.00 у
3.1-pro; $0.15 против $1.50 у 3.6-flash; $0.025 против $0.25 у flash-lite) — эксп-21 ставил
кэш = входу и ЗАВЫШАЛ цену Gemini;
* **у Z.AI появились `glm-4.7-flash` (бесплатный) и `glm-4.7-flashx` ($0.07/$0.40)** — тир дешевле
боевого черновика; в live-`/models` их НЕТ, поэтому в ростер не берутся, а проверяются $0-пробой
существования слага;
* **DeepSeek на прайс-странице 08.08 объявляет ПОВЫШЕНИЕ цен** («significant increase expected») —
это бьёт по проекции себестоимости книги и едет с ИТОГом.
Рез по прайсу (промт разрешает при >16 кандидатах; каждому провайдеру оставлен слот): сняты
`gpt-5.6-terra`, `kimi-k3`, `glm-5.1`, `glm-5.2`, `glm-5-turbo`, `grok-4.5`,
`mistral-medium-latest` — каждый доминирован одноимённым семейством при той же роли (основания
пер-модельно в `roster.CUT`).
**Пороги скрина — содержательные, из требований пайплайна, записаны ДО замера** (`screen.py`).
Порог, не способный отсеять никого, — не порог; но пороги выводятся из требований, а не
подгоняются под желаемый состав:
| Гейт | Что и почему | Провал |
|---|---|---|
| Г1 ФОРМАТ на боевой единице | сервис-преамбула, markdown-заголовки, обрыв — ровно те классы, которые боевой санитайзер считает вердикт-гейтом (D30.3) | нарушение более чем в одной единице из двух |
| Г2 ЭХО/УТЕЧКА | доля исходной письменности; боевой порог `disposition.go` = 0.15 | любая единица выше 0.15 ЛИБО ханьцзы во ВСЕХ единицах |
| Г3 ОТКАЗ на чувствительном фрагменте | вебновелла упирается в насилие; тихий отказ на главе N рвёт конвейер | отказ |
| Г4 ЦЕЛЕВОЙ ЯЗЫК | эксп-21 оплатил и принял английский выход (латиница 0.79) | доля кириллицы среди букв < 0.5 |
| Г5 ЦЕНА/ЕДИНИЦА | считается из `usage`, не из прайса; роль черновика имеет объявленный порог | draft: > $0.02/ед · editor: > $0.06/ед |
| Г6 УПРАВЛЯЕМОСТЬ РАЗМЫШЛЕНИЯ | класс, уже стоивший проекту волны (quirks §10) | `finish=length` при пустом выходе |
Урок эксп-20 применяется: механический показатель ≠ качество, поэтому **спорных кандидатов
СТИЛЬ-осей скрин не решает** — они доводятся до Ф2/Ф3.
**Прогнозы (калибруют удивление; совпадение НЕ цель).**
1. Скрин убьёт **24 кандидата из 11**; наиболее вероятные — `kimi-k2.6` (многословность
размышления → обрыв), `grok-4.3` (кредиты xAI исчерпаны 07.08), `mistral-large-latest`
(преамбула в выходе), `gemini-3.1-flash-lite` (формат).
2. **Разброс панели ЧЕРНОВИКОВ будет БОЛЬШЕ разброса панели редакторов.** Основание — §16.2
эксп-21 (тот же редактор над другим черновиком: 7.66 против 5.91) и §12 (`A_law/B` 0.69, ноль
внутри интервала).
3. **`gemini-3.1-pro` НЕ окажется аутлаером прозы**: гипотеза эксп-04 снята мёртвым поколением и
слабым ригом. Прогноз: его перевес над `deepseek-v4-pro` ляжет НИЖЕ шумового пола.
4. **Победитель черновой роли будет решаться ценой, а не качеством**: прогноз — перевесы
черновиков лягут в полосу 13 ошибки при поле ≈1.9, то есть правило ничьей D39.117 (самый
дешёвый жилец) окажется рабочим, а не декоративным.
5. **Частота эхо-мины `deepseek-v4-flash` на этой книге — 2540%** (приор эксп-21: 38% на zh,
0% на en).
⚠ Числа-приоры взяты из эксп-21 для сметы и дизайна, не как ожидания: новый замер их не обязан
воспроизвести, расхождение = находка.
### 0.6 Смета и план агент-запусков
Смета считается по ФАКТИЧЕСКИМ $/вызов эксп-21 из сырья (медианы по `scr-*` и `bo4-*`),
масштабированным на длину единицы (2194/1683 = **×1.31**) и на отношение цен вендоров.
| Фаза | Что покупается | Смета | Потолок |
|---|---|---|---|
| Ф0 | контаминация 3 книги × 5 отрывков × 2 модели = 30 вызовов; терминолог 1 вызов | **$0.02** | $0.40 |
| Ф1 | 11 моделей × 2 единицы × 2 роли = 44 вызова | **$0.62** (до $0.80, если Gemini-pro много думает) | $1.00 |
| Ф2 | ≤5 жильцов + якорь × 22 единицы (черновик) + боевой редактор поверх каждого + шумовой пол | **$1.27** при панели из 5 | $2.00 |
| Ф3 | ≤5 редакторов × 16 единиц поверх замороженного flash-черновика (клетка dspro переиспользуется из Ф2) | **$1.50** | $1.60 |
| | **сумма** | **$3.41** | $5.00 |
**Правило усечения панели Ф2, объявляется ЗАРАНЕЕ.** Если смета не влезает в $2.00, панель
режется так, чтобы СОХРАНИТЬ ЦЕНОВУЮ ОСЬ: обязательны якорь `deepseek-v4-flash`, самый дешёвый
прошедший и самый дорогой прошедший; середина добирается по возрастанию цены до упора в потолок.
Причина: вопрос пака — «покупает ли дорогой черновик качество», и панель, срезанная по цене
сверху, на него ответить не может. Каждый снятый кандидат печатается с его числами.
**План агент-запусков (кап промта ≤60; 1 запуск = одна судейская сессия суб-агента).**
| Стадия | Пакетов | Текстов в пакете | Запусков |
|---|---|---|---|
| Ф2 zh — черновики + редактор поверх каждого | 16 единиц | ≤5 черновиков + ≤5 редактур + декой + пара пола ≈ 13 | 16 |
| Ф2 en — ось переноса | 6 единиц | ≤5 черновиков + декой ≈ 7 | 3 |
| Ф3 zh — панель редакторов | 16 единиц | ≤5 редакторов + база + декой + пара пола ≈ 9 | 8 |
| Довесок `D_/A` на сырье эксп-21 | 16 единиц | 2 текста + декой | 4 |
| **план** | | | **31** |
| резерв на сессии, аннулированные декоем | | | 12 |
| **потолок** | | | **43 из 60** |
### 0.7 Что фризится этим коммитом
`eval/tenant_panel/` целиком (`material.py` · `checks21.py` · `roster.py` · `money.py` ·
`prompts.py` · `bank.py` · `contam.py` · `screen.py`) + эта секция отчёта. Дальнейшие фазы
получают свои секции и свои фриз-коммиты; amend фриза запрещён, девиации объявляются в отчёте.