VK Client Failure Matrix — Phase G-3
Commit: 7acf4d2d4ed131f999936186377e85663c19316a
Date: 2026-08-17
Legend
- OK — correct typed error, no retry when forbidden, cleanup done
- WARN — integrity holds, UX or edge behaviour imperfect
- GAP — missing protection or incomplete behaviour
- FAIL — wrong classification or leak
1. Cancellation / Timeout
| Scenario |
Error class |
Retries after |
Timer/listener cleanup |
Grade |
| signal already aborted |
VkCancelledError |
0 |
N/A |
OK |
| abort before rate limiter |
VkCancelledError |
0 |
OK |
OK |
| abort while queued in rate limiter |
VkCancelledError (after slot) |
0 |
OK |
WARN (delayed) |
| abort during fetch |
VkCancelledError |
0 |
OK |
OK |
| abort during backoff |
VkCancelledError |
stop |
OK |
OK |
| timeout during fetch |
VkTimeoutError |
yes (policy) |
OK |
OK |
| timeout after max retries |
VkTimeoutError |
stop |
OK |
OK |
| timeout + caller abort simultaneous |
VkCancelledError (deterministic) |
0 |
OK |
OK |
2. Retry Classification
| Input |
Class |
Retryable |
Grade |
| HTTP 400 |
Validation |
No |
OK |
| HTTP 401 |
Auth |
No |
OK |
| HTTP 403 |
Permission |
No |
OK |
| HTTP 404 |
NotFound |
No |
OK |
| HTTP 429 |
RateLimit |
Yes |
OK |
| HTTP 500–504 |
Temporary |
Yes |
OK |
| VK 1, 10 |
Temporary |
Yes |
OK |
| VK 5, 28 |
Auth |
No |
OK |
| VK 6, 9, 29 |
RateLimit |
Yes |
OK |
| VK 7, 260 |
Permission |
No |
OK |
| VK 15, 30, 203 |
PrivateResource |
No |
OK |
| VK 36 |
Timeout |
Yes |
OK |
| VK 100, 113 |
Validation |
No |
OK |
| VK 104, 210 |
NotFound |
No |
OK |
| VK code 500 (API) |
(no special case → Validation default) |
No |
OK (not confused with HTTP 500) |
| Abort / Cancel |
Cancelled |
No |
OK |
| Case |
Result |
Grade |
| Empty first page |
[] |
OK |
| Short last page |
stop, return accumulated |
OK |
| maxPages + truncation |
VkPaginationLimitError (default) |
OK — not silent partial |
| Repeated identical page |
maxPages only |
WARN |
| Cancel between pages |
VkCancelledError |
OK |
| Failure mid-pagination |
error bubbles, no “complete” partial |
OK |
4. Token Security
| Vector |
Token visible? |
Grade |
| Request URL |
No (POST body) |
OK |
| Error.message |
No |
OK |
| request_params in VK error |
[REDACTED] |
OK |
| Stack / serialized metadata |
No by design |
OK |
| Logs via redactToken |
Safe helper present |
OK |
5. Rate Limiter
| Case |
Behaviour |
Grade |
| Steady 10 RPS |
Enforced |
OK |
| 1000 concurrent acquire |
FIFO queue |
OK / memory light |
| Cancel while queued |
Delayed until slot |
WARN |
| Large import vs short calls |
Starvation possible |
WARN |
6. Capability Claims
| Claim |
Verdict |
| groups.isMember batch 500 |
PARTIALLY VERIFIED |
| likes.getList max 100 extended |
PARTIALLY VERIFIED (official up to 1000) |
| wall.getReposts limited / capability false |
PARTIALLY VERIFIED (pragmatic) |
| wall.getById token types |
VERIFIED |
| adminDetection requires managers |
VERIFIED |
| Any claim WRONG |
None found |
7. Summary Grades
| Area |
Grade |
| Cancellation/Timeout |
PASS WITH WARNINGS |
| Retry |
PASS |
| Pagination |
PASS WITH WARNINGS |
| Token Security |
PASS WITH WARNINGS |
| Error Mapping |
PASS |
| VK Contract Accuracy |
PASS WITH WARNINGS |
| OAuth Readiness |
YES |
8. OAuth Phase 2.2 Answer
Безопасно ли начинать Phase 2.2 OAuth? → YES
No blocking issues.
Non-blocking: abortable rate-limiter acquire, limiter isolation for long imports, optional pagination loop detection.