docs: record broker gap closure certification
This commit is contained in:
@@ -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를 명시한 별도 승인 필요.
|
||||||
Reference in New Issue
Block a user