WEB-444 · Задача · — · web
ЛИНИЯ: Совет — единый резолвер Google-ключей и нижняя граница участников (5-й круг)
Закрыт
P2
ведёт: —
Доказательства
[29.08 19:50Z] ACCCOUNCIL5 GO — ЛИНИЯ ЗАКРЫТА приёмкой после 5 кругов (финальный коммит 88f55d01, ветка wave/council5). Все чтения Google/Gemini AI-ключей через единый резолвер (src+infra+scripts, JS и python), сканер сторожит все формы, fallback к одному поставщику блокируется provider_composition_invalid. → в очередь ближайшей посадочной линии (l71). Полные отчёты A1: ACCCOUNCIL5-REPORT.md.
[29.08 20:15Z — продуктовое уточнение owner-а, линия ПЕРЕОТКРЫТА]
Owner: фича называется «Лицарі Ради» (рыцари круглого стола) — мульти-провайдерный стол (OpenAI/Anthropic/Google/xAI/OpenRouter), под каждого рыцаря и судью свой провайдер+модель, режимы Викл/Швидкий/полегшений/Рада/Мислення/Глибоке мислення, по умолчанию ВЫКЛ (включает человек), при отсутствии прямого ключа — легитимный фолбэк через OpenRouter.
Сверка с принятым кодом: (1) дефолт ВЫКЛ цел — фикс не трогал активацию; (2) адаптеры всех провайдеров целы — чинились только чтения Google-ключей; (3) НО по вопросу owner-а найден дефект семантики «участников ≥2»: при фолбэке actual_provider="openrouter" (транспорт), два рыцаря РАЗНЫМИ моделями через OpenRouter считаются одним поставщиком → Рада отказывает запуску (orchestrator.ts:1588,1604). → COUNCIL6 (queue/674): distinct по upstream-модели за транспортом, отказ только при сведении к одной и той же модели-исполнителю.
[29.08 19:35Z] COUNCIL6 сдан (01a4247a): distinct по upstream-семье за транспортом, транспорт остаётся в диагностике. → ACCCOUNCIL6 (queue/679: сценарии owner-а а-д, включая кастомный model-id без префикса).
[29.08 20:00Z] ACCCOUNCIL6 GO — СОВЕТ ЗАКРЫТ вторично, теперь с корректной семантикой owner-а: два рыцаря разными upstream через OpenRouter = валидный стол; сценарии а-д проверены, активация/ключи не тронуты. Финал 01a4247a, в l71.
[29.08 21:05Z] Уточнение owner-а: максимальный стол = 3 рыцаря + 1 судья. Сверка кода: CouncilKnightSlotId=knight_1..3 + судья; requiredParticipants = fast?1:2 — нижняя граница, не потолок. В следующую приёмку линии добавить сценарий полного стола 3+1 (три разных upstream + судья).
[30.08 07:00Z] 🛬 ПОСАЖЕН В l71 (артефакт ad094b26, commit 4a6b7ae5, посадка 30.08 00:53Z, обе службы, paidReady enforce_ready). Полный журнал посадки с 5 находками стражей — WEB-320 [30.08]. Совет с OpenRouter-семантикой на проде. Живой прогон полного стола 3+1 — в пробах после l72 вместе с батареей.
Лента
2026-09-03T07:18:44.744Z · Fable[A1 12:48 Фабл] Триаж 03.09 (owner: «чего они ждут — срочно принимайте, сажайте»): линия в проде l95 (COUNCIL6 01a4247a + c6council 739ecfc9 = cea94a92 — предок l95-candidate f7b9a4fd, посадка через l71/l72/l73); доска не была переключена. Закрываем.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-444","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-03T07:18:44.766Z