---
name: gigachat-web-self-heal-playwright
description: "gigachat-web сам перевыпускает анонимную сессию giga.chat (доступ НЕ через личный аккаунт владельца); ретраи бессильны, если снесён Playwright-браузер — теперь чинит и это"
metadata: 
  node_type: memory
  type: project
  originSessionId: 6f344612-b945-4107-b457-8ad2163cd988
  modified: 2026-08-05T14:00:30.573Z
---

`research/gigachat-ultra` (порт :1720, `~/Разработки/gigachat-web`) ходит в
giga.chat **анонимной гостевой сессией**, которую сервис выпускает себе сам
через headless Playwright (`refresh_cookie.py`). Личный аккаунт владельца в
схеме НЕ участвует — поэтому «в браузере у меня всё работает» не опровергает
`403 Пользователь заблокирован`: банят именно ту гостевую сессию.

Самолечение было и раньше: keepalive-петля обновляет куку каждые ~5 мин, при
смерти — headless-ремint с кулдауном 120 с (в логе 500+ успешных
`[remint] fresh session minted`).

**Грабля (инцидент 2026-08-05):** чистка диска снесла
`~/Library/Caches/ms-playwright` → ремint падал `Executable doesn't exist`
каждые 2 минуты ~30 минут подряд. **Ретраи такое не чинят в принципе** —
отсутствующий бинарник сам не появится. Симптом со стороны потребителя
([[investpilot]]): весь скан сыпал `403` на gigachat-ultra.

**Фикс (внедрён):** `_remint_sync()` в `gcweb_app.py` при stderr с
`Executable doesn't exist`/`playwright install` сам запускает
`python -m playwright install chromium` и повторяет выпуск сессии.
Проверено разрывным тестом: снёс кэш Playwright + подменил куку на битую →
сервис сам переустановил браузер, выпустил сессию, ответил живым запросом
(в логе `[remint] Playwright browser missing → reinstalling chromium`).

**Урок шире:** у self-heal бывает своя зависимость. Если петля восстановления
опирается на внешний бинарник/кэш — она обязана уметь восстановить и его,
иначе «самолечение» тихо крутится вхолостую. Проверять такие механизмы надо
разрывным тестом (сломать по-настоящему), а не «код на месте → значит
работает».

Не путать два разных кэша Playwright на mini: `~/Library/Caches/ms-playwright`
(этот сервис) и `~/.playwright-browsers` (у `local.tbr-pipeline`, задаётся
`PLAYWRIGHT_BROWSERS_PATH` в plist) — см. [[mini-disk-hogs-omniroute-backups]].
