# BAT-014 Verification - Status: verified - Batch: BAT-014 ## Acceptance Mapping ### REQ-052 (per-slot 쿨다운 + 경고) | AC | Evidence | |----|---------| | AC-1: 쿨다운 이내 재시도 skip (S-1) | `test_safety_sell_worker.py::TestRetryCooldown::test_skips_retry_within_interval` (1회만) | | AC-2: 쿨다운 만료 후 재시도 (S-2) | `test_retries_after_cooldown_expiry` (+601s → 2회) | | AC-3: max_retry_warn_count 경고 (S-3) | `test_warning_after_max_count` (caplog WARNING + slot_id) | | AC-4: holding 이탈 시 정리 (S-4) | `test_prune_on_non_holding` (`_last_attempt`/`_attempt_count` 제거) | | AC-5: market_close 미적용 | `test_market_close_not_gated_by_cooldown` (쿨다운 중에도 청산) | | AC-6: 트리거 해소 시 미증가 (R-1) | `test_trigger_resolved_no_increment` (sell 없음, count 없음) | ### REQ-053 (쿨다운 env 2종) | AC | Evidence | |----|---------| | AC-1: 기본값 600/3 | `test_safety_sell_config.py::test_safety_sell_config_defaults` | | AC-2: env 파싱(300/5) | `test_retry_cooldown_env_tuning` | | AC-3: 미설정 회귀 없음 | 전체 278 passed (기존 safety-sell 동작 불변) | ### REQ-054 (runtime-flows 정합) | AC | Evidence | |----|---------| | AC-1: 쿨다운 flow(skip/재시도/경고/정리) | `docs/runtime-flows.md` "safety-sell 재시도 쿨다운" flow | | AC-2: market_close 제외 명시 | 동일 flow 첫 문단 + 장 마감 flow | ## Evidence - Test: 신규 8종(쿨다운 6 + config 2) green. 전체 단위 **278 passed / 30 skipped**, `ruff` All passed. - Manual: 없음(인메모리 로직 단위 커버; 영속 거부는 non-transitioning sell stub 로 시뮬 — dcy-010 NFR-4 의도). - Logs: `34 passed`(대상 파일) / `278 passed`(전체). ## Result - Ready for Release: true - Blocking Issues: - 없음. 인메모리·additive(DB/스레드/인터페이스 변경 없음), default 미설정 시 기존 동작 불변. 실 운영 거부 시나리오 관찰은 차기 거래일 보강(비차단).