docs: record broker gap closure certification

This commit is contained in:
jordan
2026-07-29 17:54:38 +09:00
parent 611805dcec
commit 12b6eb5b33
2 changed files with 56 additions and 1 deletions
@@ -4,7 +4,7 @@
- 문서 ID: dcy-041_20260729_broker-uncertainty-and-adapter-retirement - 문서 ID: dcy-041_20260729_broker-uncertainty-and-adapter-retirement
- 이슈명: Core 브로커 불확실 상태 구분과 로컬 KIS 어댑터 축소 - 이슈명: Core 브로커 불확실 상태 구분과 로컬 KIS 어댑터 축소
- 작성 시각(KST): 2026-07-29 16:59:16 KST - 작성 시각(KST): 2026-07-29 16:59:16 KST
- 마지막 갱신 시각(KST): 2026-07-29 17:32:04 KST - 마지막 갱신 시각(KST): 2026-07-29 17:54:02 KST
- 대체됨: 없음 - 대체됨: 없음
- 선행 Discovery: - 선행 Discovery:
- dcy-013_20260608_kis-external-cancel-pending-sell-stuck - dcy-013_20260608_kis-external-cancel-pending-sell-stuck
@@ -139,4 +139,7 @@
- KIS 현금 권위 필드: `inquire-psbl-order.output.nrcvb_buy_amt`. - KIS 현금 권위 필드: `inquire-psbl-order.output.nrcvb_buy_amt`.
- 수동 혼합 보유 계정: `OwnershipAwareBroker` 투영 뒤 스냅샷을 생성하여 전략 소유 수량만 매도 허용. - 수동 혼합 보유 계정: `OwnershipAwareBroker` 투영 뒤 스냅샷을 생성하여 전략 소유 수량만 매도 허용.
- 운영 기본값: 기능 OFF, 매수 600초, 매도 3600초, 갱신 300초. - 운영 기본값: 기능 OFF, 매수 600초, 매도 3600초, 갱신 300초.
- 검증: 로컬 903 passed, 격리 Docker PostgreSQL/RabbitMQ 953 passed,
공용 가상 인증 7단계 PASS.
- 검증 문서: `docs/validation/dcy-041-core-adapter-gap-closure-20260729.md`
- 실전 반영: 가상 검증과 사용자 별도 승인 전까지 미적용. - 실전 반영: 가상 검증과 사용자 별도 승인 전까지 미적용.
@@ -0,0 +1,52 @@
# dcy-041 Core broker gap closure validation
- 검증 시각: 2026-07-29 17:54 KST
- 브랜치: `codex/core-adapter-gap-closure`
- 검증 HEAD: `611805d`
- 분류: `research_only=true`, `official_comparable=false`,
`real_order_allowed=false`, `order_adapter=virtual_locked_replay`
## 검증 결과
1. 정적검사: `uv run --extra dev ruff check .` PASS.
2. 로컬 전체 회귀: `903 passed, 50 skipped`.
3. 격리 Docker PostgreSQL/RabbitMQ 전체 통합: `953 passed, 1 skipped`.
4. 공용 매매 인증 7단계:
- logic
- regression
- virtual_contract
- virtual_e2e
- fault_injection
- restart_recovery
- ledger_reconcile
- 결과: PASS
5. 인증 산출물:
`/Volumes/J_HDD/virtual_exchange/artifacts/validation/trex-core-execution/core-gap-final-20260729-1753-kst/run.json`
## 장애 주입·재시작 판정
- 결과불명 주문은 동일 broker order 조회로만 수렴하고 중복 주문 0.
- timeout·운영자 취소는 `cancel_state IS NULL` 비교·설정에 성공한 한
호출만 전송하며 재시작 후 반복 취소 0.
- AUTO는 실제 KRX/NXT로 확정되어 주문번호와 함께 저장되고 취소·재시작에 재사용.
- 체결 후 잔량과 재시작 원장대조는 실시간 잔고만 사용.
- KIS 조회 전송 오류에만 동일 endpoint·계좌·상품·app identity의 미만료
스냅샷을 사용.
- 계정 2와 같은 혼합계정은 전략 소유수량만 스냅샷·매도수량에 노출.
- 신규매수 현금검사와 pending 전이는 동일 instance advisory lock 안에서 원자 처리.
## 최초 Docker 실패와 해소
- 최초 실패 단계: PostgreSQL 마이그레이션 재적용.
- 최초 원인: 017 마이그레이션이 019에서 도입한 기존 `AUTO` 행을 허용하지 않아
반복 적용 시 check constraint 위반.
- 마지막 안전 상태: 운영 컨테이너·DB·주문 경로 미접촉, 격리 테스트 DB만 사용.
- 수정: 017 제약을 AUTO 호환으로 만들고 기존 AUTO 행이 있는 상태의 migration
replay 회귀를 추가.
- 재실행: 새 격리 DB에서 전체 마이그레이션과 953개 통합검사 PASS.
## 실전 잠금
- 실전 계정·주문·운영 컨테이너 변경 없음.
- `live_dry_run`, `live_one_shot`, 서버 배포, 로컬 어댑터 제거는 미수행.
- 실전 반영은 서버 차이 검증 후 대상 계정·전략·이미지 SHA를 명시한 별도 승인 필요.