[Investigation] Определить поддержку legacy status/observe contracts #64

Closed
opened 2026-10-11 21:45:18 +03:00 by codex-bot · 1 comment
Owner

Problem

GET /tbank-sync/{id} и catalog sync=observe публично достижимы. SPA callers отсутствуют, но external consumers/old screen rows не проверены; blanket deletion рискует API compatibility и candle FK.

Expected Behavior

Для каждого legacy entrypoint есть evidence-backed support/retirement решение до breaking removal.

Evidence

Audit date 2026-10-11; 04. IDs DEAD-006, DEAD-007, ARCH-009, CPLX-005. Revision 0ad84ff4f0b4712abc7e69dc299856f14af6eadd; Confidence High reachability / Medium removal; Verification status runtime-unverified для external use.
Affected: tbank-sync.controller.ts:21–41; service:313–391; catalog-discovery.service.ts:84–141,168–217,251–293; investment-resource.dto.ts:15–24; prisma/schema.prisma:148–229.

Scope

In scope

Endpoint-specific declared consumers, обезличенная existing access evidence и aggregate old-row counts на disposable copy при доступности; support horizon без придуманного deadline.

Out of scope

Публикация user/account/token payloads, live DB mutation, destructive migration, automatic public route withdrawal.

Proposed Approach

Owner подтверждает список consumers; если logs/DB evidence недоступны, явно сохранить compatibility и записать оставшийся input. Shared identities/calendars/candles не считать справочным legacy целиком.

Acceptance Criteria

  • Status и каждый reference observe endpoint имеют explicit KEEP/retirement disposition и confidence.
  • Evidence отличает отсутствие SPA calls от отсутствия external obligation.
  • При retirement определён compatible transition/rollback и owner follow-up; data removal не включён без FK/restore proof.

Verification

Static contract/caller inventory + private aggregate evidence; existing status/reference HTTP cases при последующем code change. Application full verify для чистого investigation не нужен.

Dependencies

Нет; code-only dead producers могут удаляться независимо, сохраняя readers.

Traceability

Campaign WealthLedger/main#23 . Findings DEAD-006, DEAD-007, ARCH-009, CPLX-005. WealthLedger/backend; T11.

<!-- wealthledger-audit:2026-10-11:legacy-read-compatibility --> ## Problem GET /tbank-sync/{id} и catalog sync=observe публично достижимы. SPA callers отсутствуют, но external consumers/old screen rows не проверены; blanket deletion рискует API compatibility и candle FK. ## Expected Behavior Для каждого legacy entrypoint есть evidence-backed support/retirement решение до breaking removal. ## Evidence Audit date `2026-10-11`; [04](https://git.personal.ksv741.ru/WealthLedger/main/src/commit/d07fbfabb1295780952a554185989d2d5b5c8349/audits/2026-10-11/reports/04-dead-code-and-legacy-report.md). IDs DEAD-006, DEAD-007, ARCH-009, CPLX-005. Revision `0ad84ff4f0b4712abc7e69dc299856f14af6eadd`; Confidence High reachability / Medium removal; Verification status runtime-unverified для external use. Affected: [tbank-sync.controller.ts:21–41](https://git.personal.ksv741.ru/WealthLedger/backend/src/commit/0ad84ff4f0b4712abc7e69dc299856f14af6eadd/src/modules/investments/tbank-sync/tbank-sync.controller.ts#L21-L41); service:313–391; catalog-discovery.service.ts:84–141,168–217,251–293; investment-resource.dto.ts:15–24; prisma/schema.prisma:148–229. ## Scope ### In scope Endpoint-specific declared consumers, обезличенная existing access evidence и aggregate old-row counts на disposable copy при доступности; support horizon без придуманного deadline. ### Out of scope Публикация user/account/token payloads, live DB mutation, destructive migration, automatic public route withdrawal. ## Proposed Approach Owner подтверждает список consumers; если logs/DB evidence недоступны, явно сохранить compatibility и записать оставшийся input. Shared identities/calendars/candles не считать справочным legacy целиком. ## Acceptance Criteria - [ ] Status и каждый reference observe endpoint имеют explicit KEEP/retirement disposition и confidence. - [ ] Evidence отличает отсутствие SPA calls от отсутствия external obligation. - [ ] При retirement определён compatible transition/rollback и owner follow-up; data removal не включён без FK/restore proof. ## Verification Static contract/caller inventory + private aggregate evidence; existing status/reference HTTP cases при последующем code change. Application full verify для чистого investigation не нужен. ## Dependencies Нет; code-only dead producers могут удаляться независимо, сохраняя readers. ## Traceability Campaign https://git.personal.ksv741.ru/WealthLedger/main/issues/23 . Findings DEAD-006, DEAD-007, ARCH-009, CPLX-005. WealthLedger/backend; T11.
codex-bot added this to the Technical Audit Remediation — 2026-10-11 milestone 2026-10-11 21:45:18 +03:00
codex-bot added the
Priority
Medium
3
audit/2026-10-11kind/investigation
labels 2026-10-11 21:45:18 +03:00
ksv741 was assigned by hermes-agent 2026-10-12 00:04:22 +03:00
hermes-agent added this to the WealthLedger — Delivery Board project 2026-10-12 00:04:22 +03:00
hermes-agent added Kind/Investigation and removed kind/investigation labels 2026-10-12 00:04:23 +03:00
Author
Owner

Решение владельца (2026-11-05): RETIRE GET /tbank-sync/{id} и публичный sync=observe (оба), без удаления данных/схемы. Confidence: high для отсутствия SPA callers (frontend#141), medium для возможности удаления — внешние consumers/logs и старые строки не проверены. Status защищён JWT; observe поддерживает passive path, который backend tests ещё проверяют. Ни отсутствие SPA calls, ни отсутствие canonical spec не доказывают отсутствие внешних обязанностей. Переход/rollback и удаление вынесены в backend#196: проверка внешних запросов, окно совместимости, восстановление предыдущего образа при регрессии, без миграции. Из этого investigation кода не удалено.

Решение владельца (2026-11-05): RETIRE `GET /tbank-sync/{id}` и публичный `sync=observe` (оба), без удаления данных/схемы. Confidence: high для отсутствия SPA callers (`frontend#141`), medium для возможности удаления — внешние consumers/logs и старые строки не проверены. Status защищён JWT; observe поддерживает passive path, который backend tests ещё проверяют. Ни отсутствие SPA calls, ни отсутствие canonical spec не доказывают отсутствие внешних обязанностей. Переход/rollback и удаление вынесены в backend#196: проверка внешних запросов, окно совместимости, восстановление предыдущего образа при регрессии, без миграции. Из этого investigation кода не удалено.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#64