## Цель
Клиент выдерживает реальный трафик VK: лимиты, повторы, ошибки, отмену.
## Объём
- **Token bucket**: `rateLimit.rps` (3), `burst` (5), `maxConcurrent` (2).
- **Retry**: экспоненциальный backoff `baseDelayMs`→`maxDelayMs`, только для `retry.retryOn = [1,6,9,10]`. Коды 5, 15, 100 — **fail fast**, не ретраить.
- **`execute` batching**: упаковка до 25 вызовов в один запрос `execute`.
- **Сигналы**: `exec.signal` доезжает до каждого fetch и отменяет in-flight запрос.
- **Маппинг ошибок**: все коды из таблицы wiki **Platform-VK-API** → типизированные `VkError`.
- **Captcha**: `error 14` → `VK_CAPTCHA_REQUIRED` с `captchaSid`, политика из `captcha.policy`.
- Тесты до покрытия 95% (`tests/client.test.ts`).
## Acceptance
- Все кейсы `tests/client.test.ts` зелёные.
- Бан 500 id отправляет **20** HTTP-запросов, не 500.
- `error 5` → одна попытка, `VK_AUTH_FAILED`, без ретраев.
- Аборт `exec.signal` в середине запроса → reject, без повтора.
## Ссылки
wiki: [[Platform-VK-API]] · [[Architecture]] · [[Testing-Strategy]]
hermes
added this to the M1 · Core (loadable plugin + read tools) milestone 2026-10-21 11:00:43 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Цель
Клиент выдерживает реальный трафик VK: лимиты, повторы, ошибки, отмену.
Объём
rateLimit.rps(3),burst(5),maxConcurrent(2).baseDelayMs→maxDelayMs, только дляretry.retryOn = [1,6,9,10]. Коды 5, 15, 100 — fail fast, не ретраить.executebatching: упаковка до 25 вызовов в один запросexecute.exec.signalдоезжает до каждого fetch и отменяет in-flight запрос.VkError.error 14→VK_CAPTCHA_REQUIREDсcaptchaSid, политика изcaptcha.policy.tests/client.test.ts).Acceptance
tests/client.test.tsзелёные.error 5→ одна попытка,VK_AUTH_FAILED, без ретраев.exec.signalв середине запроса → reject, без повтора.Ссылки
wiki: Platform-VK-API · Architecture · Testing-Strategy