Files
trex-core/docs/batches/bat-009_20260606_paper-broker-env-tuning/planning.md
T
genichinandClaude Opus 4.8 2f57aad7b2 feat(config): expose paper broker tuning via env (REQ-010 AC-5, BAT-009)
Wire the existing PaperBroker scenario knobs (fill_after_polls /
qty_per_poll / reject_symbols) to daemon env so REQ-011 AC-2 e2e
scenarios (delayed / partial / reject) can be reproduced by a daemon
restart. Unset == prior PaperBroker() behaviour, byte-for-byte (no
regression).

- config.py: PaperBrokerConfig + from_env parsing (TREX_PAPER_*)
- daemon.py: _build_broker injects config.paper into PaperBroker
- .env.example: document the 3 paper tuning keys (paper-only, e2e)
- tests: paper broker defaults + env tuning parsing

SDLC: REQ-010 CHG-20260606-01 (AC-5 added) / -02 (Implemented);
BAT-009 batch-lite release-candidate; REL-001 feedback handoff records
pre-deployment e2e observations incl. event-publisher idle-drop and
paper correlation_id collision (GitHub #4, #5).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:49:51 +09:00

2.3 KiB

BAT-009 Planning

  • Status: confirmed
  • Batch: BAT-009
  • Profile: batch-lite

Included REQ

  • REQ-010 (Configuration): 데몬 설정 .env 로딩 — CHG-20260606-01 / AC-5 (paper 튜닝 env 노출)

Delivery Plan

  1. runtime/config.py: PaperBrokerConfig(fill_after_polls:int=0, qty_per_poll:Optional[int]=None, reject_symbols:frozenset[str]=frozenset()) 추가. DaemonConfig 에 paper: PaperBrokerConfig 필드(broker=='paper' 일 때만 참조). from_env() 에서 TREX_PAPER_FILL_AFTER_POLLS(int, 기본 0), TREX_PAPER_QTY_PER_POLL(빈 문자열→None), TREX_PAPER_REJECT_SYMBOLS(콤마 분리, 공백/빈 토큰 제거→frozenset) 파싱.
  2. runtime/daemon.py: _build_broker paper 분기를 PaperBroker(fill_after_polls=..., qty_per_poll=..., reject_symbols=set(...)) 로 교체.
  3. .env.example: TREX_BROKER=paper 아래 paper 튜닝 키 3개 주석 문서화(미설정=즉시 전량 체결·거부 없음).
  4. tests/runtime/test_config_dotenv.py: _KEYS 에 3개 키 추가, test_paper_broker_defaults(미설정=0/None/frozenset()), test_paper_broker_env_tuning(FILL_AFTER_POLLS=2, QTY_PER_POLL=4, REJECT_SYMBOLS="005930, 000660 ," → 2/4/{005930,000660}).

Dependencies

  • Internal: REQ-011 PaperBroker(생성자 knob 이미 존재), REQ-010 dotenv 로딩 메커니즘.
  • External: 없음.

Design Gate

  • Design Required Before Implementation: no
  • Reason: 기존 PaperBroker 생성자 인자를 config/env 표면으로 노출하는 additive wiring. 외부 인터페이스(BrokerPort)·슬롯 런타임 흐름 변경 없음. 미설정 시 기존 동작과 byte-for-byte 동일. batch-lite + design 생략(minor-change).

Milestones

  1. M1 — PaperBrokerConfig + from_env 파싱.
  2. M2 — _build_broker 주입 + .env.example 문서화.
  3. M3 — 단위테스트 green(기본/파싱) + ruff clean + 전체 회귀(166 pass).
  4. M4 — e2e 시나리오 evidence(거부 롤백 idle→pending_buy→idle, 지연 +3.7s, 부분 qty 누적 +2.5s).

Risks

  • R-1 (Low): env 오설정이 production 데몬 동작을 바꿈. 대응: broker=='paper' 일 때만 참조(kis 경로 무시), 미설정=기본 동작, .env.example 에 "e2e 전용" 명시.
  • R-2 (Low): 빈 문자열/공백 토큰 파싱 edge. 대응: qty_per_poll 빈 문자열→None, reject_symbols 빈/공백 토큰 제거 — 단위테스트로 고정.