Land the first cross-family reading comparison the phase has ever had: no arm of twenty-one is ordered differently, and say plainly why this still does not satisfy the two-family norm

This commit is contained in:
heaven 2026-08-23 02:49:11 +03:00
parent 21108cc3d4
commit 2d1e4250d2
2 changed files with 93 additions and 7 deletions

View file

@ -4856,13 +4856,16 @@ n=15 ед (7.4 главы Гу) круг 1 · n=12 ед (5.9 главы Гу) о
файлах нет). Суб-агент наследует модель сессии, а я **не передал переопределения и не проверил, что
уехало.**
**Чем читал круг 1.** `READERS-vendor.json`, `READERS-vendor2.json`, `READERS-zhpanel.json` несут
`"_модель": "fable-5, по одному агенту на главу"`; `READERS-arch2.json` несёт то же во вложенном
ключе `читатель.модель = "claude-fable-5"` вместе с основанием — решение владельца 20.08 «забьём на
Sol, отдадим всё судейство фаблу». Это САМО-ОБЪЯВЛЕНИЕ прошлой сессии: транскриптов её читателей на
диске не осталось, и независимо подтвердить его нечем. Оно согласовано по четырём панелям и
совпадает с записанным решением владельца, поэтому принимаю его как верное — и помечаю как
непроверяемое.
**Чем читал круг 1 — ПОДТВЕРЖДЕНО ФАКТОМ, а не декларацией.** Предыдущая сессия по запросу
владельца подняла свой транскрипт и пере-считала вызовы: **58 вызовов `Agent` с пакетом из
`~/books/chtenie-rol/`, у КАЖДОГО в параметрах `model: 'fable'`** — `arch2` 15 · `vendor2` 15 ·
`vendor` 13 · `zhpanel` 12 · `abl`+`rol` 3. Ни одного `opus-5` среди читателей не было. Декларации
`READERS-*.json` («fable-5» / `читатель.модель = "claude-fable-5"`) с фактом совпали, и сверено это
отдельно — сама по себе декларация не доказывает ничего.
⚠ Уточнение той же сессии, которое надо держать рядом: `opus-5` в прошлых прогонах был
ОРКЕСТРАТОРОМ (собирал пакеты, считал ранги, сводил), но **прибором не был ни разу**. И агенты
глобального ревью 21.08 (231 штука) — **тоже `fable`**: и прибор, и его аудитор были одной моделью.
⇒ **ВТОРОЕ ЧТЕНИЕ ЕСТЬ КРОСС-СЕМЕЙНОЕ, А НЕ ПОВТОР ОДНИМ ПРИБОРОМ.**
@ -4927,3 +4930,46 @@ Sol, отдадим всё судейство фаблу». Это САМО-ОБ
⚠ Вся середина панели (`ZP`, `Z7`, `Z1`, `Z8R`, `RN`, `RB`, `RC`, `ZF`) — «в пределах» в обоих
кругах и в обоих семействах. Это САМОЕ сильное «неразличимо», какое фаза произвела: оно устояло
против смены выборки, смены читателя и смены модели читателя разом.
### Д33.9 ⭐⭐ ВТОРОЕ СУДЕЙСКОЕ СЕМЕЙСТВО — ПОЯВИЛОСЬ ПО ОШИБКЕ, И ОНО СОГЛАСНО С ПЕРВЫМ
Заказано владельцем 23.08 после разбора Д33.6: «раз уж ты пробежал какое-то судейство другим
агентом, заодно можно и сравнить будет их». До этого дня фаза жила с ограничением, записанным
прямым текстом в `READERS-arch2.json`: **судейское семейство ровно ОДНО, норма П-1 о двух не
исполняется, Sol запаркован решением владельца 20.08.** Следствие оговаривалось честно: общий ВКУС
`fable` от качества перевода не отделим в принципе, пока второго семейства нет.
Круг 2 дал второе семейство. Сравнение — поармный сдвиг среднего места, парно по главам, знаковый
тест (сдвиг >0 = `opus` ставит арм НИЖЕ, чем `fable`):
| панель | армов | наибольший сдвиг | наименьший p | **армов, судимых различимо по-разному** |
|---|---|---|---|---|
| `vendor2` | 10 | `RK` +0.50 / `RGT` 0.75 (из 10 мест) | 0.289 | **0 из 10** |
| `arch2` | 11 | `ZD` +1.08 / `RN` 1.08 (из 11 мест) | 0.070 (`ZF`) | **0 из 11** |
**Ни один арм из 21 два семейства не упорядочивают различимо по-разному.** Ближе всех к границе
`ZF` на архитектурной панели (`opus` ставит её ниже на 1.04 места, 7 глав из 8 в одну сторону,
p=0.070) — единственный кандидат в «разный вкус», и он границы не перешёл.
**Что это значит и чего НЕ значит:**
* ⭐ **Ранговые вердикты фазы не являются идиосинкразией одной модели.** Всё, что `fable` назвал
различимым и что пережило второе чтение (`RKT` хуже якоря, `ZD` хуже связки), `opus` называет так
же; всё, что `fable` не разрешил, `opus` тоже не разрешает.
* ⛔ **Но это НЕ исполнение нормы П-1, и притворяться иначе нельзя.** `claude-fable-5` и
`claude-opus-5` — модели ОДНОЙ лаборатории и одной линии обучения. Их согласие снимает вопрос
«не выдумал ли конкретный прибор свой порядок» и **не снимает** вопрос «не выдумала ли его вся
эта линия». Внешним семейством был Sol, и он по-прежнему запаркован. ⇒ П-1 остаётся
НЕ ИСПОЛНЕННОЙ; засчитывать `opus` за второе семейство — самообман.
* ⚠ **Мощность у этой проверки слабая.** 12 глав, знаковый тест: чтобы получить p<0.05 при всех
расхождениях в одну сторону, нужно 6 глав с ненулевой разницей. «0 из 21 различимо» читается как
«крупных расхождений вкуса нет», а не как «вкусы тождественны».
* ⚠ **Места КОМПОЗИЦИОННЫ:** сумма сдвигов по построению ≈0, поэтому «сдвиг арма» есть утверждение
относительное. Абсолютной строгости («какое семейство придирчивее») этот прибор не видит.
* ⛔ **И то, что ни один машинный прибор не закрывает:** ось ВЕРНОСТИ, на которой владелец разошёлся
с `fable` радикально (Д30). Согласие двух моделей одной линии про эту ось не говорит ничего —
скорее наоборот, повышает вероятность, что расхождение с владельцем есть свойство ЛИНИИ.
**И ещё одно, названное самой предыдущей сессией:** агенты глобального ревью 21.08 (231 штука) —
**тоже `fable`**. То есть и прибор, и его аудитор были одной моделью. Настоящая кросс-семейная
проверка ревью не проводилась ни разу.

View file

@ -188,6 +188,44 @@ def report(tag: str = "vendor2", p: str = "en", anchor: str = "RN", drop: tuple
return 0
def vkus(tag: str = "vendor2", p: str = "en", drop: tuple = ()) -> int:
"""СРАВНЕНИЕ ДВУХ СУДЕЙСКИХ СЕМЕЙСТВ — то, чего норме П-1 не хватало с 20.08.
Заведено 23.08 по слову владельца: «раз уж ты пробежал какое-то судейство другим агентом,
заодно можно и сравнить будет их». До этого дня всё судейство фазы вело ОДНО семейство
(`fable-5`), и общий ВКУС семейства нельзя было отделить от качества перевода в принципе
ограничение записано в `READERS-arch2.json` как _ограничение. Круг 2 дал второе семейство
(`opus-5`) пусть и по моей ошибке, а не по замыслу.
ЧТО МЕРИТСЯ И ЧТО НЕТ. Места КОМПОЗИЦИОННЫ: если один арм поднялся, другой обязан опуститься,
и сумма мест по главе константна. Значит «систематический сдвиг арма» есть утверждение
ОТНОСИТЕЛЬНОЕ «семейства по-разному упорядочивают», а не «одно строже другого». Абсолютной
строгости этот прибор не видит и видеть не может.
"""
r1, r2 = ranks_of(tag, p, "r1"), ranks_of(tag, p, "r2")
uids = [u for u in sorted(set(r1) & set(r2)) if u not in drop]
arms = sorted(r1[uids[0]])
print(f"\n=== ВКУС ДВУХ СЕМЕЙСТВ, {tag}: fable-5 (круг 1) против opus-5 (круг 2) ===")
print(f" глав {len(uids)} · армов {len(arms)}\n")
print(f" {'арм':6s}{'fable':>8s}{'opus':>8s}{'сдвиг':>8s}{'глав ↑':>8s}{'глав ↓':>8s}{'p':>9s} вывод")
rows = []
for a in arms:
d = [r2[u][a] - r1[u][a] for u in uids] # >0 — opus ставит НИЖЕ (место больше)
m = st.mean(d)
nz = [x for x in d if x]
pv = ZS._sign_p(d) # noqa: SLF001
rows.append((a, st.mean([r1[u][a] for u in uids]), st.mean([r2[u][a] for u in uids]),
m, sum(1 for x in nz if x < 0), sum(1 for x in nz if x > 0), pv))
for a, m1, m2, m, up, dn, pv in sorted(rows, key=lambda x: x[3]):
mark = "⛔ opus судит ИНАЧЕ" if pv < 0.05 else ""
print(f" {a:6s}{m1:8.2f}{m2:8.2f}{m:+8.2f}{up:8d}{dn:8d}{pv:9.4f} {mark}")
sig = [r for r in rows if r[6] < 0.05]
print(f"\n армов, чьё место семейства ставят РАЗЛИЧИМО по-разному: {len(sig)} из {len(arms)}"
+ ("" if not sig else "" + ", ".join(r[0] for r in sig)))
print(" ⚠ сдвиг >0 значит «opus ставит арм НИЖЕ, чем fable»; сумма сдвигов по построению ≈0")
return 0
def cmd_selftest() -> int:
bad = 0
@ -229,4 +267,6 @@ if __name__ == "__main__":
_tag = next((x.split("=", 1)[1] for x in a if x.startswith("--tag=")), "vendor2")
_anch = next((x.split("=", 1)[1] for x in a if x.startswith("--anchor=")), "RN")
_drop = tuple(next((x.split("=", 1)[1].split(",") for x in a if x.startswith("--drop=")), []))
if "--vkus" in a:
sys.exit(vkus(_tag, "en", _drop))
sys.exit(report(_tag, "en", _anch, _drop))