[CL-REV] фиксы находок пост-мерж ревью L-4/R2-H1: behavioral-тест KYT, guard bulk-хелпера, dedup partyIds #1185

Merged
andrei merged 1 commit from feature/claude-review-findings-20260722 into master 2026-07-22 11:01:37 +00:00
Owner

Что сделано

  • kyt-sanctions.test.tsrules/__tests__/ (конвенция) + behavioral-блок [HIGH-находка]: реальный checkKytSanctions с mocked prisma воспроизводит сценарий R2-H1 (lowercase-хранимый payout против checksummed SDN-записи) и ассертит KYT_SANCTION_MATCH/CRITICAL; негативный кейс на чистый адрес.
  • getUnsettledEscrowSharesByUser [MEDIUM]: take: 10_000 + warn при достижении — зеркало SNAPSHOT_LIMIT-паттерна из reports.ts.
  • revert.ts [LOW]: dedup partyIds (edge buyerId === SYSTEM_USER_ID) с безопасным паддингом IN-слотов + AUDIT-комментарий.

Зачем

Вердикты пяти ревью-агентов оказались недоставленными (канал subagent→main терял сообщения) — извлечены из транскриптов пост-фактум; это их actionable-остаток. Продуктовая находка L4-LOW (перераспределение netProfit на settled-холдеров) подтверждена фактом CEO-мержа #1181, кода не требует; non-EVM адреса — в задаче H-1-feed.

План тестирования

  • Целевые сьюты: 46 passed; полный API-suite: 10997 passed, 12 skipped, exit 0 (явные счётчики); tsc чисто; eslint 0.

Где могу ошибаться

  • Behavioral-тест мокает пагинацию одним батчем — курсорная ветка (>SCAN_BATCH_SIZE) остаётся на integration-уровне.
## Что сделано - `kyt-sanctions.test.ts` → `rules/__tests__/` (конвенция) + **behavioral-блок** [HIGH-находка]: реальный `checkKytSanctions` с mocked prisma воспроизводит сценарий R2-H1 (lowercase-хранимый payout против checksummed SDN-записи) и ассертит `KYT_SANCTION_MATCH`/`CRITICAL`; негативный кейс на чистый адрес. - `getUnsettledEscrowSharesByUser` [MEDIUM]: `take: 10_000` + warn при достижении — зеркало SNAPSHOT_LIMIT-паттерна из reports.ts. - `revert.ts` [LOW]: dedup `partyIds` (edge `buyerId === SYSTEM_USER_ID`) с безопасным паддингом IN-слотов + AUDIT-комментарий. ## Зачем Вердикты пяти ревью-агентов оказались недоставленными (канал subagent→main терял сообщения) — извлечены из транскриптов пост-фактум; это их actionable-остаток. Продуктовая находка L4-LOW (перераспределение netProfit на settled-холдеров) подтверждена фактом CEO-мержа #1181, кода не требует; non-EVM адреса — в задаче H-1-feed. ## План тестирования - Целевые сьюты: 46 passed; **полный API-suite: 10997 passed, 12 skipped, exit 0** (явные счётчики); tsc чисто; eslint 0. ## Где могу ошибаться - Behavioral-тест мокает пагинацию одним батчем — курсорная ветка (>SCAN_BATCH_SIZE) остаётся на integration-уровне.
[CL-REV] фиксы находок пост-мерж ревью: behavioral-тест KYT, guard bulk-хелпера, dedup partyIds
All checks were successful
CI / Telegram Mini App (pull_request) Successful in 1m58s
CI / Python SDK (pull_request) Successful in 28s
CI / Contracts (pull_request) Successful in 2m48s
CI / Secrets Scan (pull_request) Successful in 19s
CI / Prisma Migrate Gate (pull_request) Successful in 1m49s
CI / API (pull_request) Successful in 18m50s
CI / App (pull_request) Successful in 20m56s
1a3de75056
- kyt-sanctions.test.ts переехал в rules/__tests__/ (конвенция) + behavioral-блок:
  реальный checkKytSanctions с mocked prisma воспроизводит сценарий R2-H1
  (lowercase payout vs checksummed SDN-запись) и ждёт CRITICAL-алерт.
- getUnsettledEscrowSharesByUser: take 10k + warn при достижении — зеркало
  SNAPSHOT_LIMIT-паттерна reports.ts (silent truncation в money-path видим).
- revert.ts: dedup partyIds (edge buyerId===SYSTEM) с безопасным паддингом IN.
Источник: вердикты ревью-агентов, извлечённые из subagent-транскриптов.
andrei scheduled this pull request to auto merge when all checks succeed 2026-07-22 10:59:36 +00:00
andrei merged commit 900ae4f740 into master 2026-07-22 11:01:37 +00:00
andrei deleted branch feature/claude-review-findings-20260722 2026-07-22 11:01:38 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/europatech!1185
No description provided.