test: replace late portfolio sleep with started and done barriers (WealthLedger/backend#63) #99

Closed
codex-bot wants to merge 4 commits from test/63-deterministic-source-races into refactor/62-remove-dead-sync-orchestration
Owner

Refs #63

Ветка основана на refactor/62-remove-dead-sync-orchestration (PR #98): producer-only тесты уже удалены там. Этот PR нужно мержить после #98 (или перебазировать на develop после его мержа).

Что изменено

  • tbank-local-reads (late portfolio after connection replacement): вместо delay(20) и локального GET (который не запускает upstream) реальный producer запускается через PortfolioService.request. Barrier started подтверждает, что upstream начат до замены соединения; late.done - барьер завершения вместо таймера.
  • tbank-portfolio-publish (новый): контрольный тест PortfolioRepository.publish на реальной SQLite-транзакции для running attempt текущей revision.

Что проверено

  • npm run verify: 40 suites, 268 tests, зелёные.
  • npm run test:e2e: все SQLite suites зелёные.
  • Mutation-проверка: отключение claimed-fence в publish НЕ ловится tbank-local-reads.

Ограничения (важно, #63 не закрывается этим PR)

  • Прямого теста на отказ publish при устаревшем attempt написать нельзя: FK tbankSyncWork -> tbankConnection и каскад из put не допускают состояния «работа есть, соединение с этим revision уже другое». Защита сейчас обеспечивается двумя слоями (каскад put и claimed), и доказать claimed отдельно не получилось. Это надо решать отдельно (например, через инъекцию падения между репозиторными шагами).
  • Остальные sleep-синхронизации из issue (value-history, metadata, catalog, operations-sync, portfolio.service.spec) и rollback fault после первой Portfolio write в этом PR не сделаны.
  • Поэтому issue #63 остаётся открытой; PR не использует Closes.
Refs #63 Ветка основана на `refactor/62-remove-dead-sync-orchestration` (PR #98): producer-only тесты уже удалены там. Этот PR нужно мержить после #98 (или перебазировать на develop после его мержа). ## Что изменено - `tbank-local-reads` (late portfolio after connection replacement): вместо `delay(20)` и локального GET (который не запускает upstream) реальный producer запускается через `PortfolioService.request`. Barrier `started` подтверждает, что upstream начат до замены соединения; `late.done` - барьер завершения вместо таймера. - `tbank-portfolio-publish` (новый): контрольный тест `PortfolioRepository.publish` на реальной SQLite-транзакции для running attempt текущей revision. ## Что проверено - `npm run verify`: 40 suites, 268 tests, зелёные. - `npm run test:e2e`: все SQLite suites зелёные. - Mutation-проверка: отключение `claimed`-fence в `publish` НЕ ловится `tbank-local-reads`. ## Ограничения (важно, #63 не закрывается этим PR) - Прямого теста на отказ `publish` при устаревшем attempt написать нельзя: FK `tbankSyncWork -> tbankConnection` и каскад из `put` не допускают состояния «работа есть, соединение с этим revision уже другое». Защита сейчас обеспечивается двумя слоями (каскад `put` и `claimed`), и доказать `claimed` отдельно не получилось. Это надо решать отдельно (например, через инъекцию падения между репозиторными шагами). - Остальные sleep-синхронизации из issue (`value-history`, `metadata`, `catalog`, `operations-sync`, `portfolio.service.spec`) и rollback fault после первой Portfolio write в этом PR не сделаны. - Поэтому issue #63 остаётся открытой; PR не использует `Closes`.
ksv741 force-pushed test/63-deterministic-source-races from d5e6c3eb7b to bf7414b800 2026-10-15 08:12:47 +03:00 Compare
ksv741 added 4 commits 2026-10-15 11:51:13 +03:00
refactor: remove unreachable catalog producer and sync orchestration (WealthLedger/backend#62) (#98)
Backend verify / commits (push) Skipped
Backend verify / security (push) Successful in 12s
Backend verify / verify (push) Failing after 5m47s
96d4de4195
chore: make OpenAPI export atomic and add read-only check (WealthLedger/backend#3) (#97)
Backend verify / commits (push) Skipped
Backend verify / security (push) Successful in 13s
Backend verify / verify (push) Failing after 6m4s
a93f2d55e7
test: isolate HTTP suites from scheduler and bank-card case order (WealthLedger/backend#65) (#100)
Backend verify / commits (push) Skipped
Backend verify / security (push) Successful in 12s
Backend verify / verify (push) Failing after 5m59s
9e4f9d9cab
test: replace late portfolio sleep with started and done barriers (WealthLedger/backend#63)
Backend verify / verify (pull_request) Successful in 5m21s
Backend verify / commits (pull_request) Successful in 30s
Backend verify / security (pull_request) Successful in 10s
efc13a9f67
ksv741 force-pushed test/63-deterministic-source-races from bf7414b800 to efc13a9f67 2026-10-15 11:51:13 +03:00 Compare
codex-bot closed this pull request 2026-10-15 11:51:35 +03:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#99