Files
trex-core/docs/batches/bat-014_20260608_safety-sell-cooldown/index.md
T
genichinandClaude Opus 4.8 565af6792c feat(safety-sell): dcy-010 BAT-014 — 영속 거부 재시도 쿨다운 (REQ-052~054)
dcy-010(safety-sell 영속 거부 재시도 백오프) 전체 SDLC: draft-req → confirm-req →
draft-batch(BAT-014 batch-lite) → run-batch-delivery → confirm-req-implemented.
2026-06-07 실 KIS LIVE SL/TP e2e에서 발견한 KIS 주문 spam 위험(영속 거부 시
매도 무한 재제출) 차단.

- REQ-052 (Integration): SafetySellService per-slot 인메모리 쿨다운
  (_in_cooldown/_attempt_sell/_prune_cooldown) — forced_close·stop-loss·take-profit
  트리거에 min_retry_interval_sec(600s) 이내 재시도 skip(가격 poll 포함) +
  max_retry_warn_count(3) 도달 시 WARNING + holding 이탈 정리. market_close 제외.
- REQ-053 (Configuration): SafetySellConfig min_retry_interval_sec/max_retry_warn_count
  + TREX_SAFETY_SELL_MIN_RETRY_INTERVAL/MAX_RETRY_WARN_COUNT env (additive)
- REQ-054 (Documentation): runtime-flows 쿨다운 flow + 가격체크 tr_id(FHKST01010100) 정정

인메모리 only(DB/스레드/인터페이스 변경 없음), default 미설정 시 기존 동작 불변.
검증: 신규 8 단위(쿨다운 6 + config 2), 전체 278 passed, ruff clean.
REQ-052~054 Implemented, BAT-014 release-candidate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 00:35:11 +09:00

1.9 KiB

BAT-014: safety-sell 영속 거부 재시도 쿨다운 (per-slot cooldown + 경고 + env)

  • Status: release-candidate
  • Profile: batch-lite
  • Source Discovery: dcy-010
  • Included REQ: REQ-052, REQ-053, REQ-054

Summary

  • dcy-010(safety-sell 영속 거부 재시도 백오프)를 batch-lite 로 delivery 한다. SafetySellService에 per-slot 인메모리 쿨다운(마지막 시도 시각·시도 횟수)을 추가해 영속 거부(휴장/잔고/규제) 시 min_retry_interval_sec(기본 600s) 이내 재시도를 건너뛰고, max_retry_warn_count(기본 3) 도달 시 운영자 WARNING 을 발행한다. SafetySellConfig env 2종 + runtime-flows 정합. DB/스레드/인터페이스 변경 없음(인메모리만).

Scope

  • In Scope:
    • SafetySellService per-slot 쿨다운 추적(_last_attempt/_attempt_count) + skip/만료 재시도 + 경고 로그 + holding 이탈 정리, market_close 제외 (REQ-052)
    • SafetySellConfig min_retry_interval_sec/max_retry_warn_count env 2종 (REQ-053)
    • docs/runtime-flows.md safety-sell tick 쿨다운 단계 반영 (REQ-054)
  • Out of Scope:
    • ExecutionService→SafetySellService 거부 사유 피드백 채널, 거부 원인별 차등 쿨다운, 쿨다운 DB 영속, 수동 해제 API, market_close 별도 쿨다운.

Documents

Notes

  • Profile batch-lite: 소규모(단일 service + config 2종 + 문서), 인메모리만, 구조/인터페이스/DB 변경 없음, 설계가 dcy-010 §4 에 완비 → Design Gate: no(design.md 불요). implementation/verification 은 해당 stage 진입 시 생성.
  • OQ-1(600s)/OQ-2(3, 경고만)/OQ-3(단일 per-slot) Answered. NFR-1(인메모리)/NFR-2(무락)/NFR-4(paper reject 시뮬 테스트) 는 REQ-052 AC 로 흡수.
  • 발견 근거: REL-003 Feedback / 2026-06-07 실 KIS LIVE SL/TP e2e.