From bb8287624f9884b93b0706a07dee01f686eba007 Mon Sep 17 00:00:00 2001 From: heaven Date: Thu, 6 Aug 2026 16:10:26 +0300 Subject: [PATCH] Land same-day retraction of the quirks 3b low-handle claim, restoring 3a until a powered interleaved measurement --- docs/experiments/00-provider-quirks.md | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/experiments/00-provider-quirks.md b/docs/experiments/00-provider-quirks.md index 1ffbc7c9..dffdd837 100644 --- a/docs/experiments/00-provider-quirks.md +++ b/docs/experiments/00-provider-quirks.md @@ -53,9 +53,9 @@ | `xhigh` | `high` | `max` | | `max` | `max` | `max` | - ⇒ (i) **не слать `reasoning_effort` = ехать на `high`** — вот почему боевая форма упирается в стену (п.10); (ii) ~~на `deepseek-v4-pro` ручка `low` НЕ РАБОТАЕТ (маппится в `high`); рычаг бюджета размышления существует ТОЛЬКО у flash~~ **ОТОЗВАНО ЗАМЕРОМ 05.08 — см. 3б**; (iii) `none` в OpenAI-формате у DeepSeek не существует вовсе (колонка `reasoning.effort:"none"` — Anthropic-формат), запись 04.07 «`none` → 400» в силе. + ⇒ (i) **не слать `reasoning_effort` = ехать на `high`** — вот почему боевая форма упирается в стену (п.10); (ii) на `deepseek-v4-pro` ручка `low` НЕ РАБОТАЕТ (маппится в `high`); рычаг бюджета размышления существует ТОЛЬКО у flash — **строка В СИЛЕ**: её отзыв от 05.08 сам ОТОЗВАН адверсариальным ревью того же дня (см. 3б), замер §3б признан недиагностичным; (iii) `none` в OpenAI-формате у DeepSeek не существует вовсе (колонка `reasoning.effort:"none"` — Anthropic-формат), запись 04.07 «`none` → 400» в силе. - **3б. ⚠ МАППИНГ У `deepseek-v4-pro` СМЕНИЛСЯ — РУЧКА `low` РАБОТАЕТ (полигон, живой замер 2026-08-05).** Исполнение вахты D39.92 (реестр загейченных триггеров, строка 108: «дата > 05.08 ⇒ пере-проба маппинга + сверка changelog»). Триггер сработал по назначению: вендор объявлял смену «early August 2026», и поведение с таблицей 3а больше не сходится. + **3б. ⚠⚠ ЧАСТИЧНО ОТОЗВАНО В ДЕНЬ ПУБЛИКАЦИИ. Звено про `low` НЕДЕЙСТВИТЕЛЬНО; звено про `xhigh` в силе.** (полигон, живой замер 2026-08-05, ревизия того же дня по адверсариальному ревью — `19-editor-contract-q4b.md` §6.2). Исполнение вахты D39.92 (реестр загейченных триггеров, строка 108: «дата > 05.08 ⇒ пере-проба маппинга + сверка changelog»). Триггер сработал по назначению: вендор объявлял смену «early August 2026», и поведение с таблицей 3а больше не сходится. **Метод:** побайтно ОДИН вход (реальный редакторский дифф-вызов), три арма по 3 розыгрыша, `deepseek-v4-pro`, всё `finish=stop`; N=1 непригоден из-за разброса п.2, решает разделение диапазонов. Харнесс — `eval/editor_contract/effort_probe.py`, сырьё `~/books/gu-zhenren/bank-arbitration/eff-*.json`, $0.044163. | Арм | `completion_tokens` по розыгрышам | медиана | @@ -64,9 +64,23 @@ | `reasoning_effort:"low"` | 3492 · 1429 · 3589 | **3492** | | `reasoning_effort:"xhigh"` | 10527 · 8666 · 6546 | **8666** | - **Диапазоны НЕ ПЕРЕСЕКАЮТСЯ:** max(low)=3589 < min(дефолт)=4183 < min(xhigh)=6546. При n=3 идеальное разделение даёт p≈0.05 на пару, и обе пары разделились в предсказанную сторону. ⇒ (а) **`low` на pro срезает размышление примерно на треть — бюджет размышления на pro УПРАВЛЯЕМ**, и вывод «план придушить эффорт на pro несостоятелен» снят; (б) **`xhigh` даёт БОЛЬШЕ дефолта**, то есть это отдельный уровень над `high`, а не `max` — строка таблицы 3а `xhigh`→`max` для pro неверна; вендор-дока, снятая 05.08 живьём, отдаёт `xhigh`→`xhigh` и с замером согласуется. + **⛔ ЗВЕНО (а) ПРО `low` ОТОЗВАНО.** Исходно здесь стояло: «диапазоны не пересекаются: max(low)=3589 < min(дефолт)=4183 < min(xhigh)=6546; при n=3 идеальное разделение даёт p≈0.05 на пару ⇒ `low` на pro срезает размышление примерно на треть, бюджет УПРАВЛЯЕМ». Пере-счёт по ВСЕМУ доступному сырью (не только по трём розыгрышам этой пробы) вывод не выдержал: + + | Улика | Что показывает | + |---|---| + | правило «диапазоны не пересекаются» при n=3/3 | минимально достижимый ДВУСТОРОННИЙ p = 0.100 — дизайн не может достичь значимости по построению (в тексте выше стоял ОДНОСТОРОННИЙ p≈0.05) | + | **нулевой контраст**: два блока ДЕФОЛТА на побайтно одном запросе (sha `92924c85b5fc`) | разделяются ТАК ЖЕ (p=0.100) и с тем же размером эффекта ×1.47, что и «эффект ручки» ⇒ решающее правило срабатывает при ОТСУТСТВИИ вмешательства | + | объединённый пул на побайтно одном входе: дефолт n=6 против `low` n=6 | диапазоны ПЕРЕСЕКАЮТСЯ, Манн–Уитни p=0.589 и по `completion_tokens`, и по `reasoning_chars` | + | 36 вызовов арма L | дифф думает −8.1% (p=0.367), full-regen **+29.0%** (p=0.983) — разнонаправленно, что несовместимо с «срезает треть» | + | `prompt_tokens` при побайтно одинаковых messages | 2124 у дефолта И у `low`; 2203 у `xhigh` ⇒ провайдер серверно реагирует на `xhigh` и НЕ реагирует на `low` | + | межсессионный дрейф | 6 дефолтных розыгрышей одного запроса по времени: 1952→9104→10818→11157→13421→15720 знаков размышления, строго монотонно (1/720) — сравнение блоков, разнесённых во времени, конфаундировано | + + ⇒ **Статус `low` на pro: НЕ УСТАНОВЛЕНО.** «Ручка нулевая» данные тоже не утверждают (мощность MW при n=6/6 ловит истинный эффект ×0.67 лишь в 37%), но бремя на клейме: он сделан на n=3/3 и воспроизводится нулевым вмешательством. До замера с мощностью действует строка 3а (`low`→`high`). **Что нужно:** интерливинг дефолт/`low` в ОДНОМ блоке (защита от дрейфа), n≥10 на арм. + + **✅ ЗВЕНО (б) ПРО `xhigh` — В СИЛЕ И УСИЛЕНО:** `xhigh` даёт БОЛЬШЕ дефолта (min(xhigh)=17588 знаков размышления > max(пулевого дефолта)=15720, p=0.0238 на n=3 против n=6), то есть это отдельный уровень НАД `high`, а не `max` — строка таблицы 3а `xhigh`→`max` для pro неверна; вендор-дока, снятая 05.08 живьём, отдаёт `xhigh`→`xhigh` и с замером согласуется. Серверная реакция на `xhigh` видна и по `prompt_tokens` (2203 против 2124). + **⚠ Не бесплатно:** п.4 фиксирует, что `low` ПЕРЕ-ВООРУЖАЕТ эхо-мину (на flash 1 чистый китайский выход из 16). **Для pro эхо на `low` НЕ МЕРЕНО НИ РАЗУ** ⇒ «поставить редактору `low`» — обмен цены на риск эха с неизвестным курсом, а не оптимизация. Перед любым таким шагом — эхо-контроль. - **Границы:** один вход, одна роль (редактор-дифф), n=3 на арм; `high` и `max` явными значениями не гнались; сноска вендора о смене маппинга на странице ВСЁ ЕЩЁ присутствует, changelog после 31.07 пуст — то есть смена в доке не объявлена, замечена поведением. + **Границы:** один вход, одна роль (редактор-дифф), n=3 на арм — **этого оказалось недостаточно для звена (а), см. отзыв выше**; `high` и `max` явными значениями не гнались; сноска вендора о смене маппинга на странице ВСЁ ЕЩЁ присутствует, changelog после 31.07 пуст — то есть смена в доке не объявлена, замечена поведением. 4. **⚠ `effort:"low"` ПЕРЕ-ВООРУЖАЕТ эхо-мину:** 1 чистый китайский выход из 16 базовых вызовов (`cjk_share 0.83`, `finish=stop`). **Уточнение рамки D19.2: защита от эха деградирует НЕПРЕРЫВНО с эффортом, а не скачком на «выключено».** ⚠ **Хвост «движок эту ручку слать не может — `echoMineViolation`» ОТОЗВАН (оркестратор 02.08 по коду, D39.86): движок её слать МОЖЕТ.** Гейт (`config/models.go:485-501`) инспектирует МЕХАНИЗМ (`capabilities.reasoning.control` ∈ {`extra_body_disable`, `effort`} + thinking-ключ в `extra_body`), а не значение `stage.reasoning`; у deepseek `control = ReasoningNone`, где `off`/`""` — осознанный no-op, а `low|medium|high` уходят на провод как есть (`llm/capability.go:167-171`). Конфиг `stages[draft].reasoning: "low"` грузится без ошибки и доезжает до провода — проверено исполнением (coldrun-b §3.3). ⇒ **вопрос «включать ли `low`» — экономико-качественный (эхо растёт), а не «нельзя технически»; амендмент гейта для этого НЕ нужен.** 5. **Микро-few-shot: ⚠ ПРЕЖНЯЯ ФОРМУЛИРОВКА ОТОЗВАНА (31.07, адверсариальное ревью).** Числа «reasoning ×1.9» и «постинструкция дешевле на 23.3%» получены НЕПАРНЫМ сравнением средних на распределении, чей разброс ×163 (п.2). **Парный пересчёт по тем же 12 фрагментам:** few-shot думает МЕНЬШЕ базы на **7 из 12** (медиана Δ **−65** ток., знаковый тест p=0.77); постинструкция думает БОЛЬШЕ базы на **9 из 12** (медиана Δ **+208**, p=0.15). «+91%» — артефакт четырёх попаданий в хвост. Скидка постинструкции на 58% состоит из ПРЕФИКСНОГО КЭША (её `system` побайтно равен базовому — sha `e9ea1ae7dae0`, постинструкция уходит в USER-хвост; кэш 95.0% против 27.5% у базы); при пересчёте по некэшированной цене остаётся −9.0%. **Что устояло:** суммарная цена арма few-shot на этой выборке +28.4% и без кэш-эффекта, и **единственный за 48 вызовов выход НА АНГЛИЙСКОМ** (5 770 симв, `finish=stop`) — его. Эхо в том же арме НЕ атрибутируется few-shot (см. п.6). 6. **⚠ ЭХО НА 0731 СТОХАСТИЧНО ПО ВЫЗОВУ, а не детерминировано по фрагменту** — прямая улика: два вызова с **побайтно идентичным запросом** (sha `5c304c9b3cf4`, `effort:low`, cap 8000, temp 0.3) дали `cjk_share 0.000` и `cjk_share 0.831`. **Это отменяет посылку строки ниже («ретраи не помогают — детерминировано для фрагмента»), снятую на `deepseek-chat`, и посылку комментария `disposition.go:138-148` («retry just re-produces them»), из-за которой `cjk_artifact` идёт СРАЗУ в эскалацию.** Арифметика ремонта перевернулась: эскалация на v4-pro = **$0.007335 за ОДНО эхо** ($0.014670 холодного прогона — это ДВА эха на разных чанках, id 58 и 62), простой ре-ген на flash при `effort:low` = **$0.00096** (**≈7.6×** дешевле). Предложение бэкенду: N=1 ре-ген ПЕРЕД эскалацией. Гейт не ослабляется — D19.2 цел.