Убрать GET /api/v1/tbank-sync/{id} и публичный sync=observe на catalog/reference/investment read routes после проверки внешних потребителей и контролируемого перехода. Решение владельца: оба контракта выводятся из эксплуатации (WealthLedger/backend#64).
Scope
Проверить обезличенные access logs существующего внешнего прокси на запросы к status и с sync=observe; зафиксировать доступные источники и ограничение окна наблюдения. SPA caller отсутствует (frontend#141), но отсутствие external obligations этим не доказано.
Объявить breaking transition и окно обратной совместимости владельцу внешних consumers; без выдуманного срока. Откат: восстановление прежних маршрутов/образа; существующие БД/строки не удалять и миграцию не делать.
Удалить route/status-only reader/DTO и observe-only branches/params; оставить default read, другие sync/observe механизмы, которые вызывают живые paths.
Есть обезличенное evidence внешнего использования или явное owner решение о breaking removal при отсутствии данных, а также документированные окно перехода и путь rollback.
После перехода legacy GET возвращает 404, observe query не выполняет старый passive path (явный 400 при возможности глобальной валидации); обычные GET/sync работают как прежде.
Данные/схема не удалены, backend e2e + verify и frontend artifact/type checks проходят.
## Результат
Убрать `GET /api/v1/tbank-sync/{id}` и публичный `sync=observe` на catalog/reference/investment read routes после проверки внешних потребителей и контролируемого перехода. Решение владельца: оба контракта выводятся из эксплуатации (WealthLedger/backend#64).
## Scope
- Проверить обезличенные access logs существующего внешнего прокси на запросы к status и с `sync=observe`; зафиксировать доступные источники и ограничение окна наблюдения. SPA caller отсутствует (frontend#141), но отсутствие external obligations этим не доказано.
- Объявить breaking transition и окно обратной совместимости владельцу внешних consumers; без выдуманного срока. Откат: восстановление прежних маршрутов/образа; существующие БД/строки не удалять и миграцию не делать.
- Удалить route/status-only reader/DTO и observe-only branches/params; оставить default read, другие sync/observe механизмы, которые вызывают живые paths.
- Обновить OpenAPI, backend HTTP/e2e cases; предоставить обновлённый публичный artifact frontend и синхронизировать generated types; обновить актуальную backend документацию, упоминающую deprecated query. Исключить unrelated `observedAt` и живые `observe()`.
## Acceptance Criteria
- [ ] Есть обезличенное evidence внешнего использования или явное owner решение о breaking removal при отсутствии данных, а также документированные окно перехода и путь rollback.
- [ ] После перехода legacy GET возвращает 404, observe query не выполняет старый passive path (явный 400 при возможности глобальной валидации); обычные GET/sync работают как прежде.
- [ ] Данные/схема не удалены, backend e2e + verify и frontend artifact/type checks проходят.
Depends on WealthLedger/backend#64. No production mutation in this Issue.
Решение владельца 2026-11-05: разрешено удалить публичные legacy status и sync=observe сейчас без ожидания окна совместимости при недоступности access logs/списка внешних потребителей; риск неизвестных external clients принят. Совместимость: объявление breaking removal через этот Issue и предстоящий PR/OpenAPI; rollback — предыдущий backend image/commit и соответствующий прежний frontend OpenAPI snapshot, без DB schema/data migration. Обезличенное access evidence отсутствует, «нет внешних потребителей» не утверждается. Ветка refactor/196-retire-legacy-sync-read начата от develop.
Решение владельца 2026-11-05: разрешено удалить публичные legacy status и `sync=observe` сейчас без ожидания окна совместимости при недоступности access logs/списка внешних потребителей; риск неизвестных external clients принят. Совместимость: объявление breaking removal через этот Issue и предстоящий PR/OpenAPI; rollback — предыдущий backend image/commit и соответствующий прежний frontend OpenAPI snapshot, без DB schema/data migration. Обезличенное access evidence отсутствует, «нет внешних потребителей» не утверждается. Ветка `refactor/196-retire-legacy-sync-read` начата от develop.
Поставлено: WealthLedger/backend PR #197 слит в develop (squash, CI commits/security/verify — success). Удалены GET /api/v1/tbank-sync/{id} и публичный sync=observe; OpenAPI больше не содержит ни того, ни другого. Миграций и изменений данных нет. Полные гейты: npm run verify 331/331, SQLite e2e 21/21, OpenAPI-контракт PASS.
Остаётся вне этого Issue: frontend должен перегенерировать свой src/shared/api/spec/openapi.json (сейчас ещё содержит /api/v1/tbank-sync/{id}), иначе frontend openapi:check разойдётся с backend. Это отдельный frontend-шаг.
Поставлено: WealthLedger/backend PR #197 слит в `develop` (squash, CI commits/security/verify — success). Удалены `GET /api/v1/tbank-sync/{id}` и публичный `sync=observe`; OpenAPI больше не содержит ни того, ни другого. Миграций и изменений данных нет. Полные гейты: `npm run verify` 331/331, SQLite e2e 21/21, OpenAPI-контракт PASS.
Остаётся вне этого Issue: frontend должен перегенерировать свой `src/shared/api/spec/openapi.json` (сейчас ещё содержит `/api/v1/tbank-sync/{id}`), иначе frontend `openapi:check` разойдётся с backend. Это отдельный frontend-шаг.
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.
Результат
Убрать
GET /api/v1/tbank-sync/{id}и публичныйsync=observeна catalog/reference/investment read routes после проверки внешних потребителей и контролируемого перехода. Решение владельца: оба контракта выводятся из эксплуатации (WealthLedger/backend#64).Scope
sync=observe; зафиксировать доступные источники и ограничение окна наблюдения. SPA caller отсутствует (frontend#141), но отсутствие external obligations этим не доказано.observedAtи живыеobserve().Acceptance Criteria
Depends on WealthLedger/backend#64. No production mutation in this Issue.
Решение владельца 2026-11-05: разрешено удалить публичные legacy status и
sync=observeсейчас без ожидания окна совместимости при недоступности access logs/списка внешних потребителей; риск неизвестных external clients принят. Совместимость: объявление breaking removal через этот Issue и предстоящий PR/OpenAPI; rollback — предыдущий backend image/commit и соответствующий прежний frontend OpenAPI snapshot, без DB schema/data migration. Обезличенное access evidence отсутствует, «нет внешних потребителей» не утверждается. Веткаrefactor/196-retire-legacy-sync-readначата от develop.Поставлено: WealthLedger/backend PR #197 слит в
develop(squash, CI commits/security/verify — success). УдаленыGET /api/v1/tbank-sync/{id}и публичныйsync=observe; OpenAPI больше не содержит ни того, ни другого. Миграций и изменений данных нет. Полные гейты:npm run verify331/331, SQLite e2e 21/21, OpenAPI-контракт PASS.Остаётся вне этого Issue: frontend должен перегенерировать свой
src/shared/api/spec/openapi.json(сейчас ещё содержит/api/v1/tbank-sync/{id}), иначе frontendopenapi:checkразойдётся с backend. Это отдельный frontend-шаг.