운영자 배포 증거 기반 운영 환류 기록: Feedback Handoff(관찰 사실 + Discovery/REQ/Change Request Input 분리), REL-004 confirmed→feedback-captured, 포함 BAT-014~023 release-candidate→released(register + 개별 index). 후속 입력: issue #16(preallocation 누락, Discovery), dcy-019(REQ 대기), BAT-024(차기 release 편입), daily_symbol_entries 제거(REQ-002 change-req). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
BAT-021: 워치독 소유권 가시화 — 스냅샷 워치독 상태 + safety-sell 발동 로깅 (dcy-017)
- Status: released
- Profile: standard
- Source Discovery: dcy-017
- Included REQ: REQ-034 (CHG-20260608-02), REQ-021 (CHG-20260608-03), REQ-037 (CHG-20260608-01), REQ-038 (CHG-20260608-01), REQ-039 (CHG-20260608-01), REQ-032 (CHG-20260608-02), REQ-042 (CHG-20260608-01)
Summary
- dcy-017(전략 이탈로 슬롯이 내부 청산 루틴(워치독) 소유로 넘어간 상태를 가시화, issue #12)을 단일 standard batch 로 delivery 한다. 거버넌스는 dcy-017 OQ-3 결정대로 전부 change-req, 신규 REQ 없음.
- 핵심: snapshot RPC 응답에 holding 슬롯 워치독 상태(
expired/last_seen)를 read-only 동봉(REQ-034/021)하고trex-core slots가 WATCHDOG-OWNED(전략 이탈)를 표시(REQ-032). safety-sell 의 워치독 소유 진입(WARN)/이탈(INFO)·발동(forced_close·stop_loss=WARN, take_profit·market_close=INFO)을 카운터+구조화 로그로 가시화(REQ-037/038/039). 모든 가시화는 best-effort(청산을 막지 않음). Redis projection·push 알림 미채택(OQ-1 (a)).
Scope
- In Scope:
- snapshot RPC 응답 워치독 상태 필드(best-effort) +
WatchdogStore.last_seen(REQ-034/021) trex-core slots워치독 소유 표시 (REQ-032)- safety-sell 워치독 소유 진입/이탈 + 발동(phase 차등 WARN/INFO) 로그 + in-process 카운터 (REQ-037/038/039)
- runtime-flows/interface-contract 정합 (REQ-042)
- snapshot RPC 응답 워치독 상태 필드(best-effort) +
- Out of Scope:
- 워치독 판정 로직·timeout 기준 변경(가시화만)
- WatchdogStore in-memory → 영속 store 승격(정본 변경)
- Redis projection·pub/sub push 알림(OQ-1 (a) 미채택) — push 하드 요구 시 후속 분리
Documents
- Planning: planning.md
- Design: design.md
- Implementation: implementation.md
- Verification: verification.md
Notes
- Source discovery 단일(dcy-017). OQ-1((a) CLI/RPC 노출, Redis 미채택)·OQ-2(차등 매트릭스)·OQ-3(전부 change-req) Answered.
- dcy-016 으로 관측 함정(조회가 워치독 리셋) 이미 해소 → 비침습 on-demand 관측으로 issue #12 충족(A-1).
- best-effort 격리(NFR-1): _attach_watchdog·_update_ownership·_log_fire 모두 예외 격리, source of truth(in-memory 워치독)·청산 동작 불변.
- 메트릭은 in-process 카운터(
SafetySellService.counters) — 기존 REQ 범위(신규 인프라 없음). - WatchdogStore in-memory → 소유 상태 는 재시작 시 소실(폴링 재개 시 재구성), 발동 로그 는 이력 유지(R-3).