Income и Ledger больше не запускают membership и загрузку lifetime history аккаунта. Импортируются только недостающие интервалы внутри запрошенного периода. Неполная история по-прежнему отдаётся как incomplete, а не как нулевой Income.
brokerage-operations.service.ts: Ledger строит интервалы прямо из вычисленного range (round-trip через screen planner убран) и фильтрует from >= to → 200 с пустым списком без RPC. Income не вызывает membership; повторная проверка revision удалена (fence остаётся в readPlan({ revision })).
brokerage-operations-sync.service.ts: удалены опция history и ветка lifetime scheduling (больше нет вызовов).
investment-sync-plan.ts: удалён неиспользуемый planInvestmentScreen; accountHistory и ledgerRange сохранены.
HTTP/OpenAPI и схема БД не меняются. Coverage/staging/cursor/auth fences и hourly не тронуты.
Verification
RED до правки: cold Ledger делал 82 RPC вместо загрузки только target; cold Income делал лишние RPC.
Мутанты (откачены): без фильтра from < to → 500; Income отдаёт полный ноль при неполной истории → тест падает; восстановленный membership при устаревшем membershipAt → тест падает.
npm run verify (95 suites / 662 tests), npm run test:e2e (21 suite), npm run test:openapi-contract (4/4) — зелёные.
Независимый review: найденная регрессия (500 при from >= to) и мёртвый код исправлены.
Breaking Changes (если есть)
Контракт не меняется. Но после изменения meta.coverage.historyState у большинства аккаунтов останется partial, потому что lifetime history больше не догружается. Frontend трактует partial как «История догружается» — исправляется в WealthLedger/frontend#124. Выкатывать вместе с frontend#124 или после него.
## Summary
Income и Ledger больше не запускают membership и загрузку lifetime history аккаунта. Импортируются только недостающие интервалы внутри запрошенного периода. Неполная история по-прежнему отдаётся как `incomplete`, а не как нулевой Income.
## Linked Issue
Refs WealthLedger/backend#57
## Changes
- `brokerage-operations.service.ts`: Ledger строит интервалы прямо из вычисленного range (round-trip через screen planner убран) и фильтрует `from >= to` → 200 с пустым списком без RPC. Income не вызывает membership; повторная проверка revision удалена (fence остаётся в `readPlan({ revision })`).
- `brokerage-operations-sync.service.ts`: удалены опция `history` и ветка lifetime scheduling (больше нет вызовов).
- `investment-sync-plan.ts`: удалён неиспользуемый `planInvestmentScreen`; `accountHistory` и `ledgerRange` сохранены.
- HTTP/OpenAPI и схема БД не меняются. Coverage/staging/cursor/auth fences и hourly не тронуты.
## Verification
- RED до правки: cold Ledger делал 82 RPC вместо загрузки только target; cold Income делал лишние RPC.
- Мутанты (откачены): без фильтра `from < to` → 500; Income отдаёт полный ноль при неполной истории → тест падает; восстановленный membership при устаревшем `membershipAt` → тест падает.
- `npm run verify` (95 suites / 662 tests), `npm run test:e2e` (21 suite), `npm run test:openapi-contract` (4/4) — зелёные.
- Независимый review: найденная регрессия (500 при `from >= to`) и мёртвый код исправлены.
## Breaking Changes (если есть)
Контракт не меняется. Но после изменения `meta.coverage.historyState` у большинства аккаунтов останется `partial`, потому что lifetime history больше не догружается. Frontend трактует `partial` как «История догружается» — исправляется в WealthLedger/frontend#124. **Выкатывать вместе с frontend#124 или после него.**
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.
Summary
Income и Ledger больше не запускают membership и загрузку lifetime history аккаунта. Импортируются только недостающие интервалы внутри запрошенного периода. Неполная история по-прежнему отдаётся как
incomplete, а не как нулевой Income.Linked Issue
Refs WealthLedger/backend#57
Changes
brokerage-operations.service.ts: Ledger строит интервалы прямо из вычисленного range (round-trip через screen planner убран) и фильтруетfrom >= to→ 200 с пустым списком без RPC. Income не вызывает membership; повторная проверка revision удалена (fence остаётся вreadPlan({ revision })).brokerage-operations-sync.service.ts: удалены опцияhistoryи ветка lifetime scheduling (больше нет вызовов).investment-sync-plan.ts: удалён неиспользуемыйplanInvestmentScreen;accountHistoryиledgerRangeсохранены.Verification
from < to→ 500; Income отдаёт полный ноль при неполной истории → тест падает; восстановленный membership при устаревшемmembershipAt→ тест падает.npm run verify(95 suites / 662 tests),npm run test:e2e(21 suite),npm run test:openapi-contract(4/4) — зелёные.from >= to) и мёртвый код исправлены.Breaking Changes (если есть)
Контракт не меняется. Но после изменения
meta.coverage.historyStateу большинства аккаунтов останетсяpartial, потому что lifetime history больше не догружается. Frontend трактуетpartialкак «История догружается» — исправляется в WealthLedger/frontend#124. Выкатывать вместе с frontend#124 или после него.439a29c6d8toaf92ac980eaf92ac980eto036864b69e