Files
trex-core/docs/batches/bat-023_20260608_ledger-cash-position-writeback-option-d/index.md
T
genichinandClaude Opus 4.8 2bfecd59a8 feat(ledger): dcy-018 option D cash/position write-back + 추정 현금 (BAT-023)
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>
2026-06-08 21:50:56 +09:00

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_position write-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)
    • LedgerWriter SnapshotStore 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

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)으로 짧음.