Files
trex-core/docs/batches/bat-012_20260607_kill-switch-control/verification.md
T

3.8 KiB
Raw Blame History

BAT-012 Verification

  • Status: verified
  • Batch: BAT-012

Acceptance Mapping

구현 완료. evidence: 신규 단위 26 + PG 게이트(killswitch store 5) + e2e. 파일: test_control_dispatch.py(9), test_killswitch_execution.py(6), test_killswitch_masking_resume.py(6+1), test_killswitch_store.py(in-mem 5 + PG 5).

REQ-043 (제어 채널 + action dispatch)

AC Evidence (예정)
AC-1: pause 회귀 control dispatch 단위(pause)
AC-2: resume/list 회귀 동일
AC-3: kill_switch 라우팅 동일
AC-4: resume_kill_switch 라우팅 동일
AC-5: unknown action error 동일
AC-6: 워커 스레드 7 불변 daemon 구조 검사/test_daemon

REQ-044 (day-scoped 제외 store + 마이그레이션)

AC Evidence (예정)
AC-1: 테이블 스키마 마이그레이션 + PG 게이트
AC-2: 마이그레이션 멱등 005 IF NOT EXISTS + 재적용
AC-3: exclude→list_excluded store 단위
AC-4: day-scoped 자동 제외 list_excluded(D+1)
AC-5: 멱등 exclude store 단위
AC-6: clear store 단위
AC-7: 전역 sentinel store 단위

REQ-045 (kill_switch 실행)

AC Evidence (예정)
AC-1: 전역 전체 청산 killswitch 실행 단위
AC-2: portfolio 범위 한정 동일
AC-3: pending_sell idempotency 동일
AC-4: portfolio_id 누락 error 동일
AC-5: 당일 제외 표시 044 store 연동
AC-6: 이력 로깅 로그 캡처
AC-7: dcy-007 독립 동일
AC-8: 지연 N×100ms+5s 측정/코드 검사

REQ-046 (masking + 자동복귀 + resume)

AC Evidence (예정)
AC-1: portfolio masking masking 단위
AC-2: 전역 masking 동일
AC-3: 추가매수 거부 buyable masking
AC-4: 다음 거래일 자동복귀 날짜 mock
AC-5: 재시작 영속 masking 통합/날짜 mock
AC-6: resume_kill_switch resume 단위
AC-7: portfolio_id 누락 error 동일
AC-8: 청산 슬롯 비가역 상태 불변 확인

REQ-047 (baseline 정합)

AC Evidence (예정)
AC-1: interface-contract 제어 채널+action 문서 diff
AC-2: interface-contract kill/resume payload 문서 diff
AC-3: runtime-flows 4흐름 문서 diff
AC-4: project-structure control consumer + store/sql 문서 diff

Evidence

  • Test:
    • 신규 단위 26 + PG 게이트 killswitch store 5 green. (control dispatch 9 / 실행 6 / masking·resume 7 / store in-mem 5 / store PG 5)
    • 단위 전체 회귀: 262 passed / 28 skipped(::test_sandbox_token_and_submit deselect).
    • 인프라 게이트(PG trex_core_test + RabbitMQ): 290 passed(마이그레이션 001~005 적용 + killswitch PG round-trip 포함).
    • ruff check trex_core tests → All passed.
  • Manual / e2e:
    • paper 데몬 control RPC e2e: buy 2(pf-A/pf-B) → {action:kill_switch, scope:global} → {status:ok, liquidated:2} → 양쪽 holding→pending_sell(emergency_stop)→closed, killswitch_exclusion=[('*',2026-06-07)] → {action:resume_kill_switch, scope:global} → exclusion 0. PASS.
  • Logs:
    • 262 passed, 28 skipped / 290 passed ... ~13s / e2e RESULT: PASS.

Carried-Over / e2e

  • BAT-010 R-2 선례(실 PG 마이그레이션 round-trip): 005 인프라 게이트 290 passed 로 확인.
  • (이월, 비차단) 실 KIS LIVE kill_switch 발동 → 실매도 제출 → 상황별 에러(주말/휴장) 관찰 — safety-sell LIVE e2e 선례와 동일 접근, 차기 거래일 운영 실증. paper/mock + 290 passed 로 release gate 충족.

Result

  • Ready for Release: true
  • Blocking Issues:
    • 없음. 제어 큐 rename 하위호환(R-1)은 release rollout 결정 항목(REQ-043 Notes), 실 KIS 라이브 발동은 운영 실증 이월 — 둘 다 blocker 아님.