Files
trex-core/docs/releases/rel-007_20260612_slots-rpc-fee-paper-longterm.md
T
genichinandClaude Sonnet 4.6 b1ce06ca3b docs(rel-007): confirmed — slots RPC 개선 + 매도세 정정 + paper seq + 중장기 프로파일
배포 근거: BAT-037~041 전체 verification confirmed, DB 스키마 변경 없음,
slots RPC 스모크(available_slots=5, degraded=False, slots 23개) 통과,
데몬 PID 802942 정상 운영 중 (2026-06-12 22:35 KST, SHA d30e915)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 22:37:07 +09:00

6.7 KiB
Raw Blame History

REL-007: slots RPC 개선 + 매도세 정정 + paper seq 영속화 + 중장기 인스턴스 프로파일 통합 릴리즈

  • Status: confirmed
  • Profile: app-service
  • Included Batch: BAT-037, BAT-038, BAT-039, BAT-040, BAT-041

Scope

  • Included:
    • BAT-037 (dcy-025 REQ-073 CHG-20260612-01): trex.slots.req 응답에 available_slots: int|null capacity hint 추가. max_active_slots 미설정 시 null, 설정 시 max(0, M − active). orb-v1 의 불필요한 intent 왕복 제거. AC-3 반전(포함), AC-6 신규.
    • BAT-038 (dcy-026 REQ-018 CHG-20260612-01): 매도 체결 tax=0.0 하드코딩 버그(issue #24) 수정. calculate_tax(side, amount) 신규, 수수료율(TREX_KIS_FEE_BPS=1.5)·세율(TREX_KRX_TAX_SELL_BPS=20.0) env 상수화. KIS 어댑터는 브로커 응답 fee/tax 정본 우선, 없으면 정책 폴백.
    • BAT-039 (issue #4 REQ-011 CHG-20260612-01): paper 브로커 order seq Redis 영속화. 재시작 시 PAPER-000001 재발번 → correlation_id 충돌 → 매도 원장 조용히 누락되는 결정성 버그 해소. optional SeqStore 포트(Redis INCR / in-memory 폴백), TREX_PAPER_REDIS_URL 설정.
    • BAT-040 (issue #25 REQ-002/006/073 CHG-20260612-01/02): trex.slots.req per-request full scan 제거. list_slots(status_filter) DB 레벨 status = ANY(%s) 필터 추가(포트 + PG 구현). watchdog 갱신 holding 조회는 응답 결과 재사용해 두 번째 커넥션 생략. RPC 계약(AC-1~6) 불변.
    • BAT-041 (dcy-027 REQ-076/077/078): 중장기 인스턴스 운영 토대 완성. DaemonInstanceConfig.watchdog_timeout_sec(TOML) per-instance timeout 노출(env 폴백), config/longterm.example.toml 표준 프로파일 레시피(safety_sell off·market-close 미설정·watchdog 1800s), baseline 문서(runtime-flows.md) 중장기 운영 흐름 + 보호 규칙 경계(전략 모듈 전적 책임 + CLI exit 백스톱) + forced_close_at 중장기 미사용 명시.
  • Excluded:
    • 과거 누락 원장 행 소급 보정 (BAT-038/039 공통 — 보정 안 함)
    • overlay(paused/warned) 서버측 필터 — 후속
    • watchdog 소유권 진입 외부 알림(슬랙·이메일) — 후속 Discovery
    • 중장기 보호 규칙 코어 구현 — 전략 모듈 전적 책임으로 확정(dcy-027 OQ-2)

Rollout Plan

  1. 실행 중인 데몬 정지: kill -TERM <PID> (정상 종료 대기, 마지막 로그 Normal shutdown 확인)
  2. 코드 배포: git pull (또는 패키지 업데이트)
  3. DB 스키마 변경 없음 — 마이그레이션 불필요
  4. 중장기 인스턴스를 운영 중이라면 per-instance TOML 에 watchdog_timeout_sec = 1800 추가 (선택 — 미설정 시 기존 env 폴백 유지)
  5. paper 브로커 Redis 영속화를 사용할 경우 TREX_PAPER_REDIS_URL 환경 변수 설정 (미설정 시 in-memory 폴백, 재시작 시 seq 리셋)
  6. 데몬 재기동: .venv/bin/trex-core-daemon --config <instance>
  7. 기동 후 slots RPC 응답 및 로그 확인

Rollback Plan

  • 트리거 조건: 기동 실패, slots RPC 응답 이상, 브로커 체결 이상
  • 롤백 절차:
    1. 데몬 정지
    2. git revert 또는 이전 커밋으로 체크아웃 후 재기동
    3. DB 스키마 변경 없으므로 데이터 무손실 롤백 가능
  • 주의: 과거 paper seq 가 Redis 에 저장된 경우 롤백 후 seq 연속성은 깨질 수 있으나 기능 무영향 (seq 는 execution_id 고유성 보장용)

Verification Checklist

배포 전

  • pytest tests/ — 전체 통과 확인 (회귀 없음)
  • BAT-037~041 각 verification.md Status: confirmed 확인

배포 후

  • 데몬 기동 로그 정상 (Normal startup, 워커 스레드 4개, RabbitMQ 토폴로지 선언)
  • trex.slots.req 응답에 available_slots 필드 존재 확인 (BAT-037)
  • filter=inactive 요청 시 inactive 슬롯만 반환 확인 (BAT-040 회귀)
  • paper 브로커 매도 체결 후 ledger tax > 0 확인 (BAT-038)
  • paper 브로커 TREX_PAPER_REDIS_URL 설정 시 재시작 후 seq 연속성 확인 (BAT-039)
  • 중장기 TOML(longterm.example.toml 참고) 로 기동 시 safety_sell_enabled=false + watchdog_timeout_sec 반영 확인 (BAT-041)
  • 기존 당일 인스턴스 동작 무회귀 확인

Release Execution Evidence

  • Release Status Transition Target: released

Deployment Facts

  • Executed At:
    • 2026-06-12 22:28 KST (데몬 재기동, PID 802942)
  • Completed At:
    • 2026-06-12 22:35 KST
  • Environment:
    • 로컬 운영 환경, instance_key=test, PostgreSQL + RabbitMQ (amqp://localhost:5672)
  • Operator:
    • Justin Ko
  • Revision or Artifact:
    • d30e915b75df3b44258cac04a60ce2baad9857f1 (main, 2026-06-12)
  • Commands or Procedure:
    • 기존 데몬(PID 765497) SIGTERM 종료 → trex-core-daemon --config test 재기동 → RabbitMQ 토폴로지 선언 확인(ready) → slots RPC 스모크 실행

Profile-Specific Checks

  • app-service:
    • Health Endpoint:
      • RabbitMQ 토폴로지 선언 확인 — trex.intent.req.test + trex.slots.req.test 큐 수동 passive declare 성공 (2026-06-12 22:28 KST)
    • Startup Log Fields:
      • 데몬 기동 후 워커 스레드 4개 정상 기동, trex.slots.req.test consumer 선언, universe reconcile 슬롯 23개 확인
    • Request Log Fields:
      • slots RPC {filter: "all"} 요청 → 응답 키 ['available_slots', 'degraded', 'message', 'reason', 'slots'] 정상 (available_slots=5, degraded=False, slots 23개)
    • Smoke or Manual Verification:
      • BAT-037: available_slots=5 응답 포함 확인 (max_active_slots=5, active=0 → 5) ✓
      • BAT-040: filter=all 응답 23개 슬롯, DB-level 필터 경로 정상 동작 확인 ✓
      • 데몬 로그 ERROR/CRITICAL 없음 ✓
      • BAT-038/039/041: 구조 변경(fee 정책·paper seq·TOML config) — 기동 경로 정상, 단위 테스트 confirmed evidence 유효

Rollback Outcome

  • Rollback Required:
    • no
  • Rollback Trigger:
    • none
  • Rollback Action:
    • none

Release Decision Evidence

  • Released Decision:
    • yes
  • Rationale:
    • BAT-037~041 전체 verification confirmed (단위·통합 테스트 통과, smoke 근거 기록). DB 스키마 변경 없어 롤백 비용 낮음. slots RPC 응답 키·available_slots 값·슬롯 수 스모크 통과. 운영 중 데몬 정상 동작 확인. 비파괴적 additive 변경(fee/tax 정책·paper seq·TOML 필드·baseline 문서) 중심으로 회귀 위험 낮음.
  • Recorded By:
    • Justin Ko
  • Recorded At:
    • 2026-06-12 22:35 KST

Feedback Handoff

  • Observation Summary:
    • none
  • Discovery Input:
    • watchdog 소유권 진입 시 외부 알림(슬랙·이메일·웹훅) — dcy-027 OQ-3 후속 Discovery 명시
    • 전략↔자산 할당 모델(다중 전략 per-instance, strategy 필드 복원) — dcy-025 Out of Scope 이월
  • REQ Input:
    • none
  • Change Request Input:
    • none