Решили: вторая валюта контента (лечение, щиты — всё, что не автоатака) при авторинге сверяется с замером живого кита той же роли, а не только с паспортной нормой класса.

Почему: норма — это цель, к которой ростер ещё не приведён. Трешевый травник, поставленный на честные 70% от норматива (75 HPS при норме 110), в бою лечил 121% от живого Пастыря, потому что сам Пастырь висел на 34% нормы. Формально правильное число дало перевёрнутую лестницу редкостей. Проверка одна: собрал кит — прогони бенч и сравни с соседом по роли, а не с таблицей.

Грабли: прикидка вместо замера. Я оценила лечение Пастыря «на бумаге» в 20-25 HPS и записала в реестр баланса, что мусор лечит втрое лучше обычки. Замер дал 37 против 45 — разрыв 20%, и вывод из прикидки был бы правкой не той величины. Замер стоил семи секунд: EncounterBench.Run() публичный и вызывается прямо из execute_code в живом редакторе, отчёт ложится в BalanceReports/*.csv, HPS считается как HealDone / AvgFightSec. Вся возня с теневым проектом для этого не нужна.

Владелец правды: docs/balance-issues.md BAL-025 (замеры и вердикты), ClassBalanceConfig.asset (нормы), EncounterBench (метрика).