Files
trex-core/docs/batches/bat-009_20260606_paper-broker-env-tuning/verification.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.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

Evidence

  • Test: pytest tests/runtime/test_config_dotenv.py 6 passed(기존 4 + 신규 2). 전체 pytest --deselect ...::test_sandbox_token_and_submit 167 passed, 23 skipped. ruff check trex_core tests All 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 로 배포.