> **⟶ ОТРАБОТАН, ЗАЛЕНДЕН `eb409f2`, ратифицирован D38.5 (2026-07-12).** Промоут 5 термов (грейды→класс А/Б/В/Г+approved, `四代族长`→approved). ⚠ Это был СИД-воркэраунд симптома; **код-корень терм-дрейфа остаётся жив** (`suppressContained` disposition-слепой) — чинится в треке A/пак-1 (D39, находка `L3-*`). Архивная копия.

# Промт: полигон-сессия — reseed: промоут грейдов + 四代族长 в approved (корень терм-дрейфа) (2026-07-12, выдан — feeds resnapshot)

---

## Кто ты и зачем

Ты — **полигон-сессия** TextMachine. exp14b (**D38 §3**, верифицировано по коду) нашёл **корень дрейфа терминов/грейдов = статус `draft` в сиде**: важные термы в `status:draft` НЕ инъектятся в editor-констрейнт (`renderEditorConstraintBlock`, `memory.go:489`, CONFIRMED-only); хуже — longest-match `suppressContained` СЪЕДАЕТ верный approved `族长→«глава клана»` (вложен в draft-длинный `四代族长`), оставляя неверного соседа `家老→«старейшина»` → глоссарий-обедиентные glm/mistral подтягивают «старейшину». **Задача — промоутнуть направленные владельцем термы `draft→approved` ВОСПРОИЗВОДИМЫМ трансформом** (провенанс D30.5), чтобы enforce заработал. **Владелец подписал направление** (D37/D38 + «Да» 12.07). Это дешёвый ДЕТЕРМИНИРОВАННЫЙ фикс, не модель-проблема.

Зона: `eval/` (трансформ-скрипт — рядом с живым провенансом `eval/exp13/exp13_seed_v2.py`/`exp13_seed_signoff.py`) + сид `guzhenren-seed-v2.yaml` (данные владельца, **ВНЕ git**; промоут авторизован владельцем). НЕ править backend-код. `.env` не читать. Мандат самопроверки: после — ревью, что промоутнуто РОВНО направленное, dst-формы верны, enforce работает исполнением.

## Онбординг

1. `CLAUDE.md` → CURRENT-STATE → **D37 §2в (схема разрядов) + D38 §3 (корень терм-дрейфа, verified по коду) + D34 (подпись сида v2 владельцем)**.
2. Сид `/home/ubuntu/books/gu-zhenren/guzhenren-seed-v2.yaml` (текущие статусы термов) + провенанс `eval/exp13/exp13_seed_v2.py` / `exp13_seed_signoff.py` (паттерн воспроизводимого трансформа + подписной таблицы).
3. Механизм enforce (что чинит промоут): `renderEditorConstraintBlock` (`memory.go:485/489`, CONFIRMED-only), longest-match `suppressContained`.

## Задача (СВЕРЬ точные термы по сиду + D37/D38 — НЕ по памяти; мандат самопроверки)

1. **Воспроизводимый трансформ** (скрипт в `eval/`, паттерн `exp13_seed_signoff`): промоут `status: draft→approved` для НАПРАВЛЕННЫХ владельцем терминов:
   - **Грейды `甲乙丙丁`** → dst «класс А/Б/В/Г» (D37; развести с `转`→«ранг», принудительная сверка). Сверь текущий dst/статус в сиде.
   - **`四代族长`** → dst «Четвёртый глава рода» (подпись владельца, D34/D37) → `approved`. Как approved-длинный он выиграет longest-match над вложенным `族长` → `族长` больше НЕ съедается неверно (чинит D38 §3).
   - **Сверь по сиду ПОЛНЫЙ список направленных D37/D38** (не только эти — проверь, нет ли ещё draft-термов, помеченных владельцем к промоуту). **НЕ промоутить лишнего** — approved-инвариант (только явно направленное).
2. **Верифицируй enforce ПОСЛЕ промоута** (ИСПОЛНЕНИЕМ, не на веру): промоутнутые термы теперь в editor-констрейнт-инъекции (CONFIRMED-only); `四代族长` (approved-длинный) выигрывает longest-match над `族长`. Прогонная проба на чанке с этими термами (реконструкция инъекции — паттерн `renderEditorConstraintBlock`/`exp12_blocks`): убедись, что инъекция отдаёт `四代族长→«Четвёртый глава рода»` и грейды `甲乙丙丁→А/Б/В/Г`, а `族长` не подменяется на «старейшину».
3. **Таблица подписи** (от→до по каждому терму: src, старый статус/dst, новый статус/dst) — владельцу в запись; провенанс байт-стабилен (D30.5).

## Само-проверка + deliverable

- Ревью: `diff` сида до/после = РОВНО направленные термы (ничего лишнего не тронуто); dst-формы = D37/D34; enforce верифицирован ИСПОЛНЕНИЕМ (проба инъекции). Провенанс воспроизводим (повторный прогон трансформа = байт-в-байт).
- **Deliverable:** обновлённый сид (ВНЕ git) + трансформ-скрипт (в `eval/`, коммитит оркестратор) + таблица промоута + отчёт с само-проверкой. **Оркестратор собирает единый resnapshot** (промпт P1a + сид + код инфра-пака — D30.9, чтобы одна переоплата книги, не три).
