docs(proofline): specify issue 58 completion evidence

This commit is contained in:
Hermes Agent
2026-08-14 15:58:39 +09:00
parent 843df1d6f1
commit 1a2b500722
9 changed files with 261 additions and 1 deletions
@@ -0,0 +1,53 @@
# 구현 완료 evidence
이 파일은 ProofLine canonical lifecycle artifact가 아닌 GitHub issue comment 원문 evidence입니다.
- Source URL: https://github.com/fourblocks2020/trex-core/issues/58#issuecomment-5290331952
- Comment ID: `5290331952`
- Author: `genichin`
- Created at: `2026-08-14T06:41:15Z`
- Updated at: `2026-08-14T06:41:15Z`
- Original body SHA-256: `10ea8235709eda917a9e64a6434a4f01ac9cd630ea965ce48d6134f0a4e0c22e`
- Captured from GitHub API: `2026-08-14`
## Original Comment Body
<!-- BEGIN ORIGINAL COMMENT BODY -->
## 구현 완료
승인된 #58 범위의 주문 timeout·장마감 자동취소·부분체결 reconciliation 구현과 독립 검증을 완료했습니다.
### 구현 내용
- 매수·매도 주문 timeout 생략 또는 `null` 시 3,600초 fallback 적용
- 전략 및 인스턴스 timeout을 strict integer `1..3600`으로 검증하고 잘못된 값은 주문 제출 전에 거부
- 원주문 제출 시각·KST 주문일·effective timeout을 일반 `updated_at`과 분리하여 영속화하고 재시작·날짜 rollover 후에도 보존
- 취소 `REQUESTED`/`REJECTED`/`UNKNOWN`을 nonterminal로 유지하고 KIS 주문조회를 terminal authority로 사용
- legacy 주문 metadata 미확인 시 현재 날짜를 추정하지 않고 poll·terminal 전이·cancel·ledger 처리를 차단하는 fail-closed 경로 구현
- authoritative open evidence가 있는 `REJECTED`/`UNKNOWN`에만 bounded backoff retry를 허용하고 blind retry 차단
- 무체결·부분체결·전량체결 경합, ledger exactly-once, alarm dedupe 및 restart 재발행 회귀 테스트 보강
- PostgreSQL migration 및 in-memory/PostgreSQL persistence parity, 데이터 모델·interface contract 갱신
### 검증 결과
집중·전체 테스트와 독립 read-only QC를 모두 통과했으며, 신규 차단 finding은 없습니다.
- 최종 HEAD: `843df1d6f1a642282039a57d0de4ca85204d6bee`
- 팀장 focused suite: `114 passed, 1 skipped`
- 독립 QC focused suite: `148 passed, 1 skipped`
- 전체 suite: `1,040 passed, 51 skipped`
- Ruff: `All checks passed!`
- `proofline validate`: exit `0`
- `git diff --check` 및 commit/worktree immutability 확인: 통과
- 독립 QC: **PASS**, `mutation=false`, 신규 finding 없음
- legacy adversarial probe: broker poll·cancel·slot transition·ledger 기록 모두 0, pending 유지 및 sanitized CRITICAL alarm 확인
### 비차단 후속 권고
- `TREX_POSTGRESQL_TEST_DSN`이 준비되면 PostgreSQL migration/repository integration 41건을 실제 DB에서 재실행
- `TREX_RABBITMQ_TEST_URL`이 준비되면 RabbitMQ integration 9건을 재실행
- 안전한 KIS sandbox credential이 준비되면 sandbox integration 1건을 재실행
> 현재 상태는 **격리 브랜치의 로컬 구현·검증·커밋 완료**입니다. push·PR·main 반영·배포·릴리스 완료를 의미하지 않습니다.
<!-- END ORIGINAL COMMENT BODY -->
@@ -0,0 +1,70 @@
# 구현 진행 상황 evidence
이 파일은 ProofLine canonical lifecycle artifact가 아닌 GitHub issue comment 원문 evidence입니다.
- Source URL: https://github.com/fourblocks2020/trex-core/issues/58#issuecomment-5290005799
- Comment ID: `5290005799`
- Author: `genichin`
- Created at: `2026-08-14T05:55:12Z`
- Updated at: `2026-08-14T06:38:38Z`
- Original body SHA-256: `471c6b3b5a70a1632e6e1d4076014a2cf967ffb45bba8ff3bffe122fee39e037`
- Captured from GitHub API: `2026-08-14`
## Original Comment Body
<!-- BEGIN ORIGINAL COMMENT BODY -->
## 구현 진행 상황
**상태:** 🟢 구현·검증 완료
### 구현 계획 및 작업 목록
- [x] **1. 구현 기준선과 영향 범위 확인**
- 승인된 #58 본문을 변경 범위의 기준으로 고정
- timeout 계산, 주문 제출정보 영속화, KIS 주문조회, 취소상태, alarm 및 migration 경로 확인
- [x] **2. 기본 timeout 및 입력 검증 구현**
- timeout 생략 또는 `null`이면 매수·매도 모두 3,600초 적용
- 전략 payload와 인스턴스 설정은 `1..3600`초만 허용
- 범위 밖 값은 clamp하지 않고 주문 제출 전에 명시적으로 거부
- [x] **3. 원주문 시각·날짜 영속화와 재시작 복구 구현**
- timeout 기준점과 KIS 주문 조회일을 일반 `updated_at`과 분리
- 날짜가 넘어가거나 daemon이 재시작돼도 원주문 날짜로 상태 조회
- [x] **4. 장마감 취소 실패 후 fail-closed reconciliation 구현**
- 취소 API의 `REQUESTED/REJECTED/UNKNOWN`을 terminal 상태로 오인하지 않음
- terminal broker evidence 전까지 슬롯 재사용 금지
- 불명확 상태에서 CRITICAL alarm 발생
- 주문조회로 open 상태를 확인한 경우에만 bounded retry를 허용하고 blind retry 금지
- [x] **5. 자동취소·부분체결·경합 처리 회귀 보강**
- 무체결 자동취소
- 부분체결 후 잔량취소와 ledger exactly-once
- 취소와 전량체결 경합
- 날짜 rollover 및 daemon 재시작
- 주문 row 미가시성
- [x] **6. 검증 및 독립 리뷰**
- 관련 집중 테스트
- 전체 테스트와 lint/정적 검사
- ProofLine repository validation
- 구현자와 분리된 독립 코드 리뷰
### 진행 원칙
- 체크박스는 해당 작업이 실제 완료되고 관련 검증이 통과한 뒤에만 갱신합니다.
- 진행 기록은 이 댓글을 계속 수정하여 누적합니다.
- 승인된 구현 계획의 제품 의미나 범위를 변경해야 하면 구현을 중지하고 사용자 승인을 요청합니다.
- 실제 주문, 운영계좌 변경, 배포, release, main push 또는 PR 생성은 이번 작업에 포함하지 않습니다.
### 진행 기록
- 구현 시작: #58의 확정된 Discovery 범위와 OQ 결정 4건을 기준선으로 채택했습니다.
- 기준선/영향 분석 완료: 기본값 `None`, `updated_at` 기반 timeout, KIS 현재일 조회, cancel-state retry 차단 및 신규 persistence migration 필요성을 확인했습니다.
- 격리 작업공간 생성: `feat/issue-58-order-timeout-reconciliation` (`482b00e` 기준).
- 변경 전 기준선 검증 완료: 전체 테스트 `995 passed, 51 skipped`, Ruff/ProofLine/diff check 통과.
- 1차 구현 인스턴스가 핵심 코드·migration·synthetic test를 작성하고 focused suite `95 passed`를 확인했습니다. 전체 검증·커밋 전 실행 한도에 도달하여 동일 worktree에서 후속 인스턴스로 인계했습니다.
- 후속 검수·보완 완료: strict integer 입력, legacy migration fail-closed, 원주문일 rollover, cancel alarm 중복 억제 및 open-evidence 기반 bounded retry를 반영했고 focused suite `141 passed`를 확인했습니다.
- 회귀 보강 완료: wire/config 경계, migration, 재시작, KIS rollover/row 미가시성, 자동취소 및 기존 partial/full-fill·ledger 경로를 포함한 focused suite `154 passed`.
- 구현 commit 생성: `147873cb5d5280a99872aeca0e9b44942b41b3df`. 팀장 재검증에서 핵심 focused `60 passed`, 전체 `1,038 passed, 51 skipped`, Ruff/ProofLine/diff/show check 통과. 환경 의존 integration 51건은 당시 설정 부재로 skip됐습니다. 1차 독립 QC는 FAIL로 반려됐습니다: legacy row의 현재 날짜 fallback으로 인한 terminal 오인 위험과 `REQUESTED` 후 terminal 미확정 CRITICAL 누락을 보완 중입니다. 최종 검증은 미완료입니다.
- QC 보완 commit `843df1d6f1a642282039a57d0de4ca85204d6bee` 생성: legacy metadata 없는 주문의 현재일 조회·terminal 오인을 차단하고, `REQUESTED` 후 terminal unresolved CRITICAL/dedupe를 추가했습니다. post-fix 팀장 검증은 focused `114 passed, 1 skipped`, 전체 `1,040 passed, 51 skipped`, Ruff/ProofLine/diff/show check 통과. 독립 재-QC 진행 중입니다.
- 독립 재-QC 최종 **PASS** (`mutation=false`): focused `148 passed, 1 skipped`, 전체 `1,040 passed, 51 skipped`, Ruff/ProofLine/diff check 통과. legacy adversarial probe에서 broker poll/cancel/transition/ledger가 모두 0이고 pending 및 sanitized CRITICAL alarm을 확인했습니다. skip은 PostgreSQL 41건(DSN 없음), RabbitMQ 9건(URL 없음), KIS sandbox 1건(credential 없음)입니다. 신규 finding은 없습니다.
- 최종 HEAD `843df1d6f1a642282039a57d0de4ca85204d6bee`, worktree clean. push/PR/main 반영/실제 주문/배포는 수행하지 않았습니다.
<!-- END ORIGINAL COMMENT BODY -->