diff --git a/docs/validation/dcy-041-core-adapter-gap-closure-20260729.md b/docs/validation/dcy-041-core-adapter-gap-closure-20260729.md index 2ca001d..827bd53 100644 --- a/docs/validation/dcy-041-core-adapter-gap-closure-20260729.md +++ b/docs/validation/dcy-041-core-adapter-gap-closure-20260729.md @@ -50,3 +50,33 @@ - 실전 계정·주문·운영 컨테이너 변경 없음. - `live_dry_run`, `live_one_shot`, 서버 배포, 로컬 어댑터 제거는 미수행. - 실전 반영은 서버 차이 검증 후 대상 계정·전략·이미지 SHA를 명시한 별도 승인 필요. + +## 서버 이미지 차이와 적용 대기 + +- 검증 후보 이미지: + - tag: `trex-core:candidate-12b6eb5` + - image id: `sha256:343f0a0955f92357db5ce53f26d22d8196bc325ec0e07919c53c44a7997a44aa` + - revision label: `12b6eb5` + - import smoke: PASS +- 현재 운영 Core 이미지: + - 계정 2: `sha256:21c4ed9bfdcf...` + - 계정 3: `sha256:bf8064a94e93...` + - Top50 가상: `sha256:fa9b9c609a01...` + - Top50 섀도: `sha256:fb981d8c62fc...` +- 네 운영 이미지의 `execution.py`, `kis.py`, `intents.py` 해시는 모두 후보와 다르다. +- 계정 2·3의 `TREX_ACCOUNT_SNAPSHOT_ENABLED`는 현재 미설정이라 기본 OFF다. +- 계정 2는 `TREX_KIS_STRATEGY_OWNERSHIP_PATH`가 설정되어 수동 보유 보호가 유지되고, + 계정 3은 전용 전략계정이라 이 경로가 미설정이다. +- 현재 Compose의 Docker build context는 정본 `/Volumes/J_HDD/trex/trex-core` + (`7084304`)를 복사한다. PR 브랜치는 별도 worktree이므로 일반 rebuild만 실행하면 + 후보가 아니라 이전 소스를 다시 만든다. + +### 승인 후 적용 순서 + +1. 현재 계정별 image id를 rollback tag로 보존한다. +2. PR 브랜치 또는 승인된 merge SHA를 명시한 이미지로만 교체한다. +3. DB 백업 뒤 migration 017/019/020/021 재적용과 테이블·제약을 확인한다. +4. 계정 3에서 주문 없는 `live_dry_run`과 계좌범위 해시·조회만 확인한다. +5. 계정 3 Core 적용·재시작 복구·원장대조 후 계정 2를 별도 적용한다. +6. 계정 2는 수동보유 보호와 전략 소유수량을 재확인한다. +7. 두 계정의 Core 동작이 확인된 뒤에만 로컬 KIS 어댑터 중복 기능을 제거한다.