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>
2.1 KiB
2.1 KiB
BAT-009 Verification
- Status: confirmed
- Batch: BAT-009
Acceptance Mapping
- REQ-010 (CHG-20260606-01):
- AC1
.env로드 →test_loads_values_from_dotenv. PASS (BAT-003 기존, 회귀 재확인) - AC2 OS env 우선 →
test_os_env_takes_precedence_over_dotenv. PASS (BAT-003 기존) - AC3
.env부재 회귀 →test_no_dotenv_uses_os_env_only. PASS (BAT-003 기존) - AC4
.gitignore→.env무시 /.env.example추적. PASS (BAT-003 기존) - AC5 (본 batch) paper 튜닝 env 파싱 +
_build_broker주입, 미설정=기본 동작 byte-for-byte:- 단위:
test_paper_broker_defaults(미설정 → fill_after_polls=0, qty_per_poll=None, reject_symbols=frozenset()). PASS - 단위:
test_paper_broker_env_tuning(FILL_AFTER_POLLS=2 / QTY_PER_POLL=4 / REJECT_SYMBOLS="005930, 000660 ," → 2 / 4 / {005930,000660}). PASS - e2e(데몬 env 재기동): 거부(
TREX_PAPER_REJECT_SYMBOLS=999999) →idle→pending_buy→idle롤백; 지연(TREX_PAPER_FILL_AFTER_POLLS=3) →pending_buy→holding +3.7s; 부분(TREX_PAPER_QTY_PER_POLL=2, qty 6) → holding qty 6 누적+2.5s. PASS
- 단위:
- AC1
Evidence
- Test:
pytest tests/runtime/test_config_dotenv.py6 passed(기존 4 + 신규 2). 전체pytest --deselect ...::test_sandbox_token_and_submit167 passed, 23 skipped.ruff check trex_core testsAll checks passed. - e2e: 실 PostgreSQL + RabbitMQ + portfolio-hub(dev) 대상 데몬 e2e. 슬롯 전이 trail(
slot_transition_log)·timestamp gap 으로 시나리오별 결정성 확인. (REL-001 Feedback Handoff Observation Summary 와 동일 evidence)
no architecture impact confirmed
- batch-lite, planning Design Gate=no. 기존
PaperBroker생성자 인자를 config/env 표면으로 노출하는 additive wiring 뿐 — BrokerPort 계약·슬롯 런타임 흐름 변경 없음. 미설정 시 기존 동작 byte-for-byte. baseline 문서(docs/project-structure.md/docs/runtime-flows.md) 영향 없음.
Result
- Ready for Release: true
- Blocking Issues:
- 없음. e2e 는 paper broker 한정(운영 KIS 경로 무영향). REL-001 배포 scope 와 분리된 후속 release 로 배포.