ledger write 응답의 portfolio-hub 권위 cash/quantity 를 스냅샷에 write-back 해
매수/매도 직후 "수량 live·현금 stale" 비대칭 제거(option D 활성화). portfolio-hub#8
(*_after 응답) 동작 중 확인으로 그간 deferred 됐던 REQ-030 을 닫음.
거버넌스: 전부 change-req (신규 REQ 없음, dcy-018 OQ-3 a).
- REQ-017: record_trade → LedgerWriteOutcome{result, cash_balance_after,
asset_quantity_after}. 어댑터가 응답 root flat *_after 파싱(new+duplicate, 누락 None)
- REQ-019: LedgerWriter 에 SnapshotStore 주입 → new+duplicate write-back
(best-effort, *_after 절대값이라 멱등). LedgerOutbox.pending_cash_delta()
- REQ-029: 추정 현금 오버레이(_apply_cash_estimate, cash_estimated 라벨, OQ-4 i)
+ 슬롯 오버레이 유지(OQ-1 B). 미정산 outbox delta 기반, write-back 수렴
- REQ-030: option D 활성화 → Approved→Implemented
best-effort 격리(NFR-1): write-back/추정 실패가 ledger 멱등·청산 무차단.
배치 번호: 동시 커밋된 BAT-022(slot-state, dcy-016)와 충돌해 BAT-023 으로 배정.
검증: 단위 350 passed/35 skipped, 인프라 게이트(PG+RabbitMQ) 385 passed, ruff clean.
신규 test_ledger_option_d + adapter/PG 테스트. BAT-023 release-candidate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
BAT-023: ledger write 응답 cash/position write-back (option D 활성화) + 추정 현금 오버레이
- Status: release-candidate
- Profile: standard
- Source Discovery: dcy-018
- Included REQ: REQ-017 (CHG-20260608-02), REQ-019 (CHG-20260608-02), REQ-029 (CHG-20260608-01), REQ-030 (CHG-20260608-01, Approved→Implemented)
Summary
- dcy-018(ledger write 응답의 cash/quantity 를 portfolio 스냅샷에 write-back — option D 활성화 + 수량 source 통일, 운영 환류)을 단일 standard batch 로 delivery 한다. 거버넌스는 dcy-018 OQ-3 대로 전부 change-req, 신규 REQ 없음(REQ-030 은 Approved→Implemented).
- 핵심: portfolio-hub#8(배포·동작 중)의 ledger write 응답 root flat
cash_balance_after/asset_quantity_after(절대 권위값)를 어댑터가 파싱(REQ-017) →LedgerWriter가new·duplicate에SnapshotStore.update_cash_positionwrite-back(REQ-019/030, best-effort). "수량 live·현금 stale" 비대칭 제거. 체결~write-back 공백은 미정산 outbox delta 기반 추정 현금 오버레이(cash_estimated라벨, REQ-029/OQ-4)로 메우고 권위값 도착 시 수렴.
Scope
- In Scope:
record_trade→LedgerWriteOutcome{result, *_after}+ 어댑터*_after파싱(new+duplicate, 누락 None) (REQ-017)LedgerWriterSnapshotStore write-back(new+duplicate, best-effort) +pending_cash_delta(REQ-019)- 추정 현금 오버레이(
_apply_cash_estimate,cash_estimated플래그) + 슬롯 오버레이 유지 (REQ-029, OQ-1 B/OQ-4 i) - option D 활성화 → REQ-030 Approved→Implemented
- interface-contract/runtime-flows 정합
- Out of Scope:
- portfolio-hub#8 자체(외부, 배포·동작 중)
- 일일 스냅샷 스케줄러 fetch 재설계(REQ-030 AC-1 유지)
- 슬롯 오버레이 제거(OQ-1 B 로 유지 확정)
Documents
- Planning: planning.md
- Design: design.md
- Implementation: implementation.md
- Verification: verification.md
Notes
- Source discovery 단일(dcy-018). OQ-1 B / OQ-2 b(new+duplicate write-back) / OQ-3 a(change-req) / OQ-4 (i)(추정 오버레이) Answered. DATA(응답 스키마)=dcy-005 A-7
*_after+ portfolio-hub#8 동작 중. - best-effort 격리(NFR-1): write-back·추정 모두 예외 격리, ledger 멱등(REQ-019)·청산 무차단.
- 멱등(NFR-3):
*_after가 절대 권위값이라 duplicate write-back 도 중복 적용 위험 없음. - 추정(OQ-4)은 코어 근사 수수료라 "추정/미정산" 라벨 필수, 노출 구간은 outbox drain(~1s)으로 짧음.