spec: add harden-hourly-sync-lifecycle change (WealthLedger/backend#56) #33

Merged
ksv741 merged 2 commits from fix/56-harden-hourly-sync-lifecycle into develop 2026-10-12 22:29:16 +03:00
Owner

Summary

SDD-артефакты change harden-hourly-sync-lifecycle: proposal, delta spec hourly-investment-sync (1 MODIFIED + 3 ADDED requirements), system-analysis с sequence-диаграммами, design, qa-analysis, docs-impact, tasks (11/11 выполнены).

Linked Issue

Refs WealthLedger/backend#56 (координатор). Связанные PR: WealthLedger/backend#77 (реализация), WealthLedger/docs — docs-impact 6.1/6.2.

Changes

  • openspec/changes/harden-hourly-sync-lifecycle/ — полный набор planning-артефактов схемы wealth-ledger-sdd-v2
  • Delta spec фиксирует: вывод итога из фактических результатов шагов, ограниченное ожидание, recovery после сбоя сохранения, отклонение устаревшей публикации

Verification

  • Команда / результат / ограничения: openspec status/instructions — все артефакты done, tasks 11/11; npm run verify (git diff --check) — exit 0; верификация implementation ↔ artifacts выполнена (no critical issues). Ограничение: archive — после merge всех связанных PR.

Breaking Changes (если есть)

Нет.

## Summary SDD-артефакты change `harden-hourly-sync-lifecycle`: proposal, delta spec `hourly-investment-sync` (1 MODIFIED + 3 ADDED requirements), system-analysis с sequence-диаграммами, design, qa-analysis, docs-impact, tasks (11/11 выполнены). ## Linked Issue Refs WealthLedger/backend#56 (координатор). Связанные PR: WealthLedger/backend#77 (реализация), WealthLedger/docs — docs-impact 6.1/6.2. ## Changes - `openspec/changes/harden-hourly-sync-lifecycle/` — полный набор planning-артефактов схемы `wealth-ledger-sdd-v2` - Delta spec фиксирует: вывод итога из фактических результатов шагов, ограниченное ожидание, recovery после сбоя сохранения, отклонение устаревшей публикации ## Verification - Команда / результат / ограничения: `openspec status/instructions` — все артефакты done, tasks 11/11; `npm run verify` (git diff --check) — exit 0; верификация implementation ↔ artifacts выполнена (no critical issues). Ограничение: archive — после merge всех связанных PR. ## Breaking Changes (если есть) Нет.
codex-bot added the Kind/Bug
Priority
High
2
labels 2026-10-12 20:46:46 +03:00
codex-bot added 1 commit 2026-10-12 20:46:46 +03:00
spec: add harden-hourly-sync-lifecycle change (WealthLedger/backend#56)
Conventional commits / commits (pull_request) Successful in 12s
Specs security / security (pull_request) Successful in 7s
Specs verify / verify (pull_request) Successful in 10s
14174a7bb3
codex-bot added this to the Technical Audit Remediation — 2026-10-11 milestone 2026-10-12 20:56:10 +03:00
codex-bot requested review from hermes-agent 2026-10-12 20:56:23 +03:00
codex-bot added this to the WealthLedger — Delivery Board project 2026-10-12 21:04:21 +03:00
ksv741 moved this to На проверке in WealthLedger — Delivery Board on 2026-10-12 21:40:45 +03:00
hermes-agent left a comment
Member

Итог: Request Changes

  • CRITICAL openspec/changes/harden-hourly-sync-lifecycle/specs/hourly-investment-sync/spec.md:523-535 (в связке с backend/src/modules/investments/tbank-sync/tbank-hourly.scheduler.ts:201-214, 238-265, 320-403) — требование ограниченно завершать каждую начатую попытку/обязательный шаг не обеспечено кодом: deadline накладывается только на уже созданные durable work-строки в waitWorks, а вызовы membership.request/member.done, access.local, portfolio.request, operations.request, events.refresh/get могут зависнуть до waitWorks — попытка может остаться running бесконечно.
  • WARNING tasks.md:879-894, docs-impact.md:243-248 — задачи 6.1 и 6.2 отмечены выполненными, но изменений data-freshness.md/tbank.md в этом PR нет и отдельного docs PR не видно — статус 11/11 неверифицируем.
  • INFO — структура OpenSpec полная (proposal.md, design.md, tasks.md, specs/hourly-investment-sync/spec.md, .openspec.yaml); backend #77 затрагивает заявленные компоненты и добавляет 16 lifecycle-тестов.
## Итог: Request Changes - CRITICAL `openspec/changes/harden-hourly-sync-lifecycle/specs/hourly-investment-sync/spec.md:523-535` (в связке с `backend/src/modules/investments/tbank-sync/tbank-hourly.scheduler.ts:201-214, 238-265, 320-403`) — требование ограниченно завершать каждую начатую попытку/обязательный шаг не обеспечено кодом: deadline накладывается только на уже созданные durable work-строки в `waitWorks`, а вызовы `membership.request/member.done`, `access.local`, `portfolio.request`, `operations.request`, `events.refresh/get` могут зависнуть до `waitWorks` — попытка может остаться running бесконечно. - WARNING `tasks.md:879-894`, `docs-impact.md:243-248` — задачи 6.1 и 6.2 отмечены выполненными, но изменений `data-freshness.md`/`tbank.md` в этом PR нет и отдельного docs PR не видно — статус 11/11 неверифицируем. - INFO — структура OpenSpec полная (`proposal.md`, `design.md`, `tasks.md`, `specs/hourly-investment-sync/spec.md`, `.openspec.yaml`); backend #77 затрагивает заявленные компоненты и добавляет 16 lifecycle-тестов.
ksv741 added 1 commit 2026-10-12 22:19:08 +03:00
spec: address hourly-sync review findings (WealthLedger/backend#56)
Conventional commits / commits (pull_request) Successful in 14s
Specs security / security (pull_request) Successful in 9s
Specs verify / verify (pull_request) Successful in 11s
77b211186c
Author
Owner

Замечания обработаны (commit 77b2111 + follow-up backend PR):

1. CRITICAL — requirement не обеспечен кодом. Подтверждено: WORK_WAIT_BOUND_MS покрывал только waitWorks. Исправление: WealthLedger/backend#78 — все await'ы walk до terminal barrier (membership.request/member.done, access.local, dispatch portfolio/operations/events.refresh, post-wait events.get) гоняются с тем же bound через race; истечение = проблемная секция (как failed dispatch) либо INTERRUPTED-закрытие для access.local; вызов не отменяется, поздняя durable-строка fenced по attemptId. Требование «Каждая попытка обхода достигает итога в ограниченное время» теперь обеспечено на всех путях walk. Доказательство: 4 новых SQLite lifecycle-теста с никогда не завершающимися вызовами (20/20 зелёных, npm run verify exit 0). Артефакты обновлены: Design Decision 3, tasks — добавлена задача 2.4 со ссылкой на PR #78.

2. WARNING — задачи 6.1/6.2 неверифицируемы. Отдельный docs PR существует: WealthLedger/docs#37 (open) — обновляет ровно architecture/cross-cutting/data-freshness.md (+8) и integrations/tbank.md (+6/-1), diff соответствует docs-impact. Ссылка на PR добавлена в docs-impact.md рядом с таблицей.

3. INFO — принято, без изменений.

После merge backend#78 и docs#37 change готов к archive.

Замечания обработаны (commit `77b2111` + follow-up backend PR): **1. CRITICAL — requirement не обеспечен кодом.** Подтверждено: `WORK_WAIT_BOUND_MS` покрывал только `waitWorks`. Исправление: WealthLedger/backend#78 — все await'ы walk до terminal barrier (`membership.request`/`member.done`, `access.local`, dispatch `portfolio`/`operations`/`events.refresh`, post-wait `events.get`) гоняются с тем же bound через race; истечение = проблемная секция (как failed dispatch) либо `INTERRUPTED`-закрытие для `access.local`; вызов не отменяется, поздняя durable-строка fenced по `attemptId`. Требование «Каждая попытка обхода достигает итога в ограниченное время» теперь обеспечено на всех путях walk. Доказательство: 4 новых SQLite lifecycle-теста с никогда не завершающимися вызовами (20/20 зелёных, `npm run verify` exit 0). Артефакты обновлены: Design Decision 3, tasks — добавлена задача 2.4 со ссылкой на PR #78. **2. WARNING — задачи 6.1/6.2 неверифицируемы.** Отдельный docs PR существует: WealthLedger/docs#37 (open) — обновляет ровно `architecture/cross-cutting/data-freshness.md` (+8) и `integrations/tbank.md` (+6/-1), diff соответствует docs-impact. Ссылка на PR добавлена в docs-impact.md рядом с таблицей. **3. INFO** — принято, без изменений. После merge backend#78 и docs#37 change готов к archive.
ksv741 merged commit e8e68a7ed6 into develop 2026-10-12 22:29:16 +03:00
ksv741 moved this to Готово in WealthLedger — Delivery Board on 2026-10-12 22:30:29 +03:00
Sign in to join this conversation.
No Reviewers
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/specs#33