# BAT-046: 관측성 P1 — reason+actor 노출 + PnL 조회 CLI + 운영자 런북 + baseline (issue #29) - Status: release-candidate - Profile: standard - Source Discovery: dcy-029 - Included REQ: REQ-086, REQ-088, REQ-089, REQ-090 - Excluded REQ: REQ-084·085·087 (P0 → BAT-045) ## Summary - dcy-029 P1 — P0 로깅 기반(BAT-045) 위에 운영 가시성을 완성한다. 청산 reason+actor 동반 노출(REQ-086, 안전망/전략 구분), 운영 조회 CLI `report`(REQ-088, 보유·오늘 체결·실현 PnL·대기), 운영자 런북 `docs/operations.md`(REQ-089), baseline 문서 정합(REQ-090). ## Scope - In Scope: - `safety_sell.py` — 청산 fire 로그에 actor 동반(REQ-086) + `interface-contract.md` reason+actor 어휘. - `application/operator_report.py`(신규) + `cli.py` `report` 서브커맨드(REQ-088, direct-DB, RPC 없음). - `docs/operations.md`(신규 운영자 런북, REQ-089). - `docs/runtime-flows.md`·`docs/project-structure.md` 정합(REQ-090). - 단위 테스트(report 집계·KST 경계·렌더, safety_sell reason+actor). - Out of Scope: - 알림 전송 채널(OQ-3 Deferred). 실현 PnL의 cost-basis 매칭(net 현금흐름 정의 사용). ## Documents - Planning: [planning.md](./planning.md) - Design: [design.md](./design.md) - Implementation: [implementation.md](./implementation.md) - Verification: [verification.md](./verification.md) ## Notes - REQ-086 = Option A(기존 reason·actor 함께 노출, 신규 필드 없음). `slot_transition_log` 는 이미 actor 기록. - REQ-088 실현 PnL = `ledger_outbox` net 매매 현금흐름(수수료·세금 반영, BAT-038). 미청산 평가손익 제외.