Consumer proof для backend#59: protected GET с ответом 400 / INVALID_TBANK_TOKEN не ретраится (ровно один запрос). Новый тест в src/shared/api/client.test.ts (MSW, transport boundary); production-код не менялся.
Уже было покрыто: 503/TBANK_UNAVAILABLE ретраится (client.test.ts, "recovers a protected GET after transient server failures"); 401/403/404/409 не ретраятся. Кейса 400/INVALID_TBANK_TOKEN не было.
Проверка теста
Если убрать InvalidTbankToken из isPermanentCode, тест остаётся зелёным, потому что 400 не входит в transient-статусы. Он краснеет, когда одновременно убрать код из permanent и добавить 400 в transient: тест защищает от этой связки, но не от единичной правки.
Gates
npm run verify: exit 0 (67 test files passed, vite build, storybook build).
Merge не зависит от backend PR: тест описывает уже существующее поведение клиента.
Open question: подходящей frontend Issue нет, поэтому ссылка на WealthLedger/backend#59.
Refs WealthLedger/backend#59
## Что
Consumer proof для backend#59: protected GET с ответом `400 / INVALID_TBANK_TOKEN` не ретраится (ровно один запрос). Новый тест в `src/shared/api/client.test.ts` (MSW, transport boundary); production-код не менялся.
Уже было покрыто: 503/`TBANK_UNAVAILABLE` ретраится (`client.test.ts`, "recovers a protected GET after transient server failures"); 401/403/404/409 не ретраятся. Кейса 400/`INVALID_TBANK_TOKEN` не было.
## Проверка теста
Если убрать `InvalidTbankToken` из `isPermanentCode`, тест остаётся зелёным, потому что 400 не входит в transient-статусы. Он краснеет, когда одновременно убрать код из permanent и добавить 400 в transient: тест защищает от этой связки, но не от единичной правки.
## Gates
`npm run verify`: exit 0 (67 test files passed, vite build, storybook build).
Merge не зависит от backend PR: тест описывает уже существующее поведение клиента.
Open question: подходящей frontend Issue нет, поэтому ссылка на `WealthLedger/backend#59`.
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.
Refs WealthLedger/backend#59
Что
Consumer proof для backend#59: protected GET с ответом
400 / INVALID_TBANK_TOKENне ретраится (ровно один запрос). Новый тест вsrc/shared/api/client.test.ts(MSW, transport boundary); production-код не менялся.Уже было покрыто: 503/
TBANK_UNAVAILABLEретраится (client.test.ts, "recovers a protected GET after transient server failures"); 401/403/404/409 не ретраятся. Кейса 400/INVALID_TBANK_TOKENне было.Проверка теста
Если убрать
InvalidTbankTokenизisPermanentCode, тест остаётся зелёным, потому что 400 не входит в transient-статусы. Он краснеет, когда одновременно убрать код из permanent и добавить 400 в transient: тест защищает от этой связки, но не от единичной правки.Gates
npm run verify: exit 0 (67 test files passed, vite build, storybook build).Merge не зависит от backend PR: тест описывает уже существующее поведение клиента.
Open question: подходящей frontend Issue нет, поэтому ссылка на
WealthLedger/backend#59.