OQ-1: (a′) 기존 슬롯 도메인 유지 + 운영 프로파일/규칙 추가 (PositionBook 불필요) OQ-2: safety_sell_enabled=false → 코어 손절매 루틴 없음, 전략 모듈 전적 책임 OQ-3: per-instance watchdog_timeout_sec 연장 (1800s 이상 권장), 알림은 후속 Discovery OQ-4: 중장기 전략 폴링 주기 최소 1분·최대 10분 feat(bat-041): REQ-076/077/078 — watchdog timeout TOML + 중장기 운영 프로파일 + baseline Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
BAT-041 Planning
- Status: confirmed
- Batch: BAT-041
- Profile: standard
Included REQ
- REQ-076: watchdog timeout per-instance TOML(
watchdog_timeout_sec, TOML 우선·env 폴백). AC 4. - REQ-077: 중장기 운영 프로파일 —
config/longterm.example.toml레시피 + 기동 구성·병행 무간섭 검증. AC 4. - REQ-078: baseline 정합 — 중장기 흐름 + 보호 규칙 경계 + forced_close_at 미사용. AC 3.
Delivery Plan
config.py—DaemonInstanceConfig.watchdog_timeout_sec: Optional[int] = None+from_toml파싱(>0 검증) +from_config에서 값 존재 시SafetySellConfigoverride(dataclasses.replace).config/longterm.example.toml— instance_key/safety_sell_enabled=false/watchdog_timeout_sec=1800/max_active_slots + 키별 중장기 의미 주석(forced_close_at 미사용 포함).- 테스트 — TOML 로딩(1800 적용)/미설정 env 폴백(120)/인스턴스별 독립/프로파일 조합 기동 구성(워커 미기동 + timeout 적용), instance 격리 회귀.
docs/runtime-flows.md— 중장기 병행 운영 흐름 섹션(토폴로지/프로파일/보호 경계/forced_close_at 미사용) + Change Log.
Dependencies
- Internal:
SafetySellConfig.watchdog_timeout_sec소비자 2곳 확인 완료 — slots RPC 핸들러(daemon.py:284), SafetySellService(_cfg.watchdog_timeout_sec). override 가config.safety_sell에 반영되면 두 경로 모두 자동 적용.- 기존 TOML 패턴(
max_active_slots/default_order_timeout_sec/safety_sell_enabled) 준용. - BAT-036(safety_sell_enabled=false 워커 미기동) 기존 evidence — 프로파일 검증에서 재사용.
- External: 없음 (paper broker 로 검증, 라이브 불요).
Design Gate
- Design Required Before Implementation: yes
- Reason: TOML→SafetySellConfig override 주입 지점(frozen dataclass replace), env 폴백 우선순위 의미, 프로파일 검증 범위(설정 단위 vs 실 데몬)를 design 에서 확정.
Milestones
- Design confirmed — override 경로·검증 범위 확정
- Implementation — config + example TOML + 테스트 + baseline 문서
- Verification — REQ-076/077/078 AC 매핑 + 전체 회귀(NFR-1) + ruff
Risks
- R-1 (Low): override 가 SafetySellService 에는 적용되고 slots RPC 핸들러에 미적용(또는 역) — 완화: 단일 지점(
config.safety_sell) override 로 두 소비자 자동 일치, 테스트로 확인. - R-2 (Low): frozen dataclass 수정 시도 오류 — 완화:
dataclasses.replace사용. - R-3 (Low): 일자 경계·재시작 시나리오를 실시간 재현 불가 — 완화: 영구 슬롯 DB 영속(dcy-020 기존 보장) + 자율 청산 미발화는 설정 단위 검증 + BAT-036 evidence 재참조로 충족(S-1 의 run-the-app 전수 재현은 release 운영 검증으로 위임, verification 에 명시).