docs: formalize issue 61 proofline specification
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"schema_version": 1,
|
"schema_version": 1,
|
||||||
"next_line_number": 6,
|
"next_line_number": 7,
|
||||||
"next_ac_number": 20
|
"next_ac_number": 20
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
---
|
||||||
|
id: "dcy-0006"
|
||||||
|
status: confirmed
|
||||||
|
---
|
||||||
|
|
||||||
|
# 명시 venue 기반 주문 실행 계약
|
||||||
|
|
||||||
|
## Problem
|
||||||
|
|
||||||
|
`trex-core`의 주문 venue 계약에는 과거 `AUTO`와 기본 `KRX` 동작이 혼재했다. buy/sell intent에서 venue가 누락될 때 core가 wall-clock으로 KRX/NXT를 선택하거나 내부·저장 계층에서 AUTO를 허용하면 caller가 요청한 routing provenance를 잃고 세션 판단이 execution core로 새어 들어간다. 기존 persisted AUTO row도 현재 계약과 충돌한다.
|
||||||
|
|
||||||
|
SOR 주문에서는 원주문 routing venue와 실제 체결 거래소가 서로 다른 의미다. 이를 하나의 venue 값으로 취급하면 submit acknowledgement 뒤 slot venue를 실제 KRX/NXT로 덮어쓰거나, 반대로 fill·ledger/outbox에 실제 거래소 대신 SOR를 기록할 수 있다. 부분체결 잔량 취소와 daemon 재시작은 원주문 SOR를 필요로 하고, actual venue는 broker-authoritative KRX/NXT evidence가 있을 때만 확정되어야 한다.
|
||||||
|
|
||||||
|
기대 상태는 venue 누락/null intent를 SOR로 정규화하고 explicit KRX/NXT/SOR를 변경 없이 보존하며 AUTO와 wall-clock routing을 제거하는 것이다. original order venue와 actual execution venue는 submit·ack·cancel·fill polling·restart·ledger/outbox 전체에서 별도 의미로 durable하게 보존되어야 한다.
|
||||||
|
|
||||||
|
## Evidence
|
||||||
|
|
||||||
|
- 원본 승인 문서: GitHub issue #61 `https://github.com/fourblocks2020/trex-core/issues/61`은 SOR default, explicit venue preservation, AUTO removal, persisted AUTO→SOR migration, no wall-clock routing과 execution venue lifecycle을 승인했다.
|
||||||
|
- 승인 결정은 venue 누락의 SOR default, explicit KRX/NXT/SOR 유지, AUTO의 public wire·internal model·persistence 제거, persisted AUTO의 SOR 정규화, SOR ack·조회·취소 계약을 구현 검증으로 증명하고 실패 시 AUTO routing으로 회귀하지 않는다는 다섯 항목이다.
|
||||||
|
- 구현 진행 원본: issue #61 comment `https://github.com/fourblocks2020/trex-core/issues/61#issuecomment-5337421562`는 baseline `4975d7166fa70e045096503e85c26d740ae92c55`, 한국어 계획, stale PostgreSQL DSN 실패 분류, 수정·검증·독립 QC와 최종 PASS를 기록한다.
|
||||||
|
- 구현 완료 원본: issue #61 comment `https://github.com/fourblocks2020/trex-core/issues/61#issuecomment-5337469578`은 구현 내용, 실제 검증 결과, local commits와 외부 단계 경계를 기록한다.
|
||||||
|
- `trex_core/application/messaging_handlers.py`는 buy/sell wire의 누락 또는 explicit null venue를 `SOR`로 정규화하고 invalid venue를 admission 전에 거부한다.
|
||||||
|
- `trex_core/application/intents.py`는 intent venue 기본값과 validation을 소유하고 slot에 original order venue를 전달한다.
|
||||||
|
- `trex_core/adapters/broker/kis.py`는 KRX/NXT/SOR allowlist를 시간과 독립적으로 보존하여 `EXCG_ID_DVSN_CD`로 제출하고, actual execution venue는 검증된 `ORD_EXG_GB`와 explicit exchange-id allowlist에서만 KRX/NXT로 파싱한다.
|
||||||
|
- `trex_core/application/execution.py`는 slot의 original venue를 submit·restart·cancel에 사용하고 `FillStatus.execution_venue`를 ledger actual venue로 전달한다. SOR actual이 확인되지 않으면 추론하지 않고 fail-closed 한다.
|
||||||
|
- migration 023은 persisted AUTO slot/outbox row를 SOR로 전환하고 AUTO 저장을 차단한다. migration 024는 outbox `order_venue`와 nullable actual `venue`를 분리하고 historical SOR actual을 NULL로 보존하며 NULL-only replay-safe backfill과 constraint를 적용한다.
|
||||||
|
- 구현 기반 revision은 `15aeae6930f8c3e6ef9cf659f41278b099a78459`, `7366cadf03fc6002bfd01ecf0cba7c24486bb618`, `359ea098ff717e7f04cf4206dcbc64ad17b47755`다. issue #61 정합 수정은 `64e4e32f9d7abf7082588b3c4c9a8c0d272762f6`, explicit null regression은 `43f6fea7ac805f27fba35586af27f0090a672222`다.
|
||||||
|
- 구현자 검증은 비-DB focused `107 passed`, omitted/null focused `8 passed`, disposable PostgreSQL 16 `24 passed`, 전체 `1074 passed, 52 skipped`, Ruff·ProofLine validate·diff check PASS다.
|
||||||
|
- 최초 combined focused의 `107 passed, 1 failed, 5 errors`는 종료된 이전 QC PostgreSQL DSN의 connection refused였으며 새 disposable PostgreSQL 16 semantic suite `24 passed`로 재검증되었다.
|
||||||
|
- 최종 독립 read-only 재QC는 omitted/null SOR normalization, broker request와 ack 이후 slot routing provenance를 확인하고 blocker 0, major 0, minor 0으로 PASS했다. HEAD `43f6fea7ac805f27fba35586af27f0090a672222`, worktree clean이었다.
|
||||||
|
- 현재 active AC-0018은 SOR default, explicit venue preservation, AUTO removal과 no wall-clock routing을 이미 소유하고, active AC-0019는 original order venue와 actual execution venue의 durable split·migration contract를 이미 소유한다.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
- AC admission은 중복 criterion을 새로 만들지 않고 기존 active AC의 의미를 변경하지 않는 `satisfy`다.
|
||||||
|
- `satisfy`: AC-0018에 issue #61의 venue 누락/null→SOR, explicit KRX/NXT/SOR 보존, AUTO 제거·migration과 no wall-clock routing 구현 evidence를 결속한다.
|
||||||
|
- `satisfy`: AC-0019에 issue #61의 ack·cancel·fill polling·restart·ledger/outbox order/execution venue 분리와 fail-closed actual venue 구현 evidence를 결속한다.
|
||||||
|
- buy/sell intent의 venue 누락과 explicit null은 SOR로 정규화하고 KIS request에 `EXCG_ID_DVSN_CD="SOR"`를 명시한다.
|
||||||
|
- caller가 explicit KRX/NXT/SOR를 제공하면 admission, slot, broker request, acknowledgement, restart와 cancel에서 변경 없이 보존한다.
|
||||||
|
- AUTO는 AMQP intent, domain admission, runtime routing, broker adapter input과 persistence에서 허용·생성·저장하지 않는다. 기존 persisted AUTO는 SOR로 idempotent하게 변환한다.
|
||||||
|
- core는 wall-clock time으로 KRX/NXT를 선택하거나 SOR를 변환하지 않는다.
|
||||||
|
- original `order_venue`는 KRX/NXT/SOR이며 submit·ack·slot·restart·cancel에 사용한다. actual `execution_venue`는 broker-authoritative KRX/NXT 또는 미확정 NULL이며 fill·ledger/outbox에 별도로 기록한다.
|
||||||
|
- SOR actual venue는 검증된 KIS code에서만 KRX/NXT로 확정한다. 누락·SOR 단독·미지원 값과 시간으로 actual venue를 추론하지 않는다.
|
||||||
|
- historical SOR actual은 order SOR와 actual NULL로 보존한다. migration replay는 정상 `(order=KRX, actual=NXT)` 같은 신규 조합을 오염시키지 않고 DB는 AUTO·invalid order와 actual SOR를 거부한다.
|
||||||
|
- repository current contract 문서와 KIS adapter 주석을 SOR normalization에 맞추고 omitted와 explicit null을 독립 regression으로 검증한다.
|
||||||
|
|
||||||
|
## Out of Scope
|
||||||
|
|
||||||
|
- TVR의 session·portfolio `markets` 전략 판단 또는 KRX/NXT session policy 변경
|
||||||
|
- SOR 주문을 실제 운영 KIS 계좌로 제출하거나 취소하는 작업
|
||||||
|
- live credential·account·database·RabbitMQ·portfolio-hub 연결
|
||||||
|
- push, PR, 원격 main 반영, image publication, production migration, deployment, release, issue closure 또는 실주문
|
||||||
|
- ProofLine delivery/release lifecycle closure의 소급 주장
|
||||||
|
|
||||||
|
## Risks and Unknowns
|
||||||
|
|
||||||
|
### Risks
|
||||||
|
|
||||||
|
- 실제 KIS 운영 응답의 actual exchange field 변형은 fixture 기반 parser 검증 범위를 벗어날 수 있다. 미지원 값은 추론하지 않고 NULL/fail-closed로 유지하며 운영 검증은 별도 승인 환경에서 수행한다.
|
||||||
|
- migration runner는 history table 없이 SQL을 재실행하므로 AUTO→SOR 및 order/execution split migration의 semantic replay-safe 불변식을 향후 변경에서도 유지해야 한다.
|
||||||
|
- cancel adapter의 내부 backward-compatible default와 intent의 public SOR default는 서로 다른 경계다. execution path는 항상 stored original venue를 명시적으로 전달해야 하며 문서가 이를 혼동하지 않아야 한다.
|
||||||
|
|
||||||
|
### Approval State
|
||||||
|
|
||||||
|
- Discovery status: `confirmed`
|
||||||
|
- 승인 근거: 요청자 genichin이 승인 상태인 issue #61 본문을 최대한 포함하여 템플릿 기반 Discovery와 REQ·AC를 승인된 상태로 사후 정리하라고 명시했다.
|
||||||
|
- Open Questions: 없음
|
||||||
|
- 이 확인은 current specification과 implementation evidence의 사후 정리다. push, PR, deployment, release, production migration, issue closure 또는 실주문 승인을 의미하지 않는다.
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# GitHub issue #61 comment evidence
|
||||||
|
|
||||||
|
- Source: https://github.com/fourblocks2020/trex-core/issues/61#issuecomment-5337469578
|
||||||
|
- Author: `genichin`
|
||||||
|
- Created At: `2026-08-19T04:17:48Z`
|
||||||
|
- Evidence Role: repository-local snapshot of a non-canonical implementation comment
|
||||||
|
- Canonical Authority: GitHub source comment; this snapshot does not create ProofLine lifecycle status
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 구현 완료
|
||||||
|
|
||||||
|
### 구현 내용
|
||||||
|
|
||||||
|
- venue가 누락되거나 `null`인 buy/sell intent를 `SOR`로 정규화하고 KIS 요청에 `EXCG_ID_DVSN_CD="SOR"`를 명시한다.
|
||||||
|
- explicit `KRX`/`NXT`/`SOR`를 submit·ack·slot·restart·cancel 전 과정에서 원주문 venue로 보존한다.
|
||||||
|
- `AUTO`를 admission에서 거부하고 wall-clock KRX/NXT routing을 제거했다.
|
||||||
|
- persisted `AUTO`를 `SOR`로 전환하고 이후 invalid venue 저장을 차단한다.
|
||||||
|
- 원주문 `order_venue`와 broker-authoritative actual execution venue를 분리한다. 취소·재시작은 원주문 venue를, ledger/outbox actual venue는 KRX/NXT 또는 미확정 NULL을 사용한다.
|
||||||
|
- historical SOR actual은 임의 추론하지 않고 NULL로 보존하며 migration replay가 정상 order/execution venue 조합을 오염시키지 않는다.
|
||||||
|
- current SOR 계약과 충돌하던 interface 문서와 KIS adapter 주석을 정정했다.
|
||||||
|
- omitted와 explicit `venue: null`을 각각 검증하는 regression을 추가했다.
|
||||||
|
|
||||||
|
### 실제 검증 결과
|
||||||
|
|
||||||
|
- 구현자 비-DB focused: `107 passed`
|
||||||
|
- 구현자 explicit omitted/null focused: `8 passed`
|
||||||
|
- 구현자 disposable PostgreSQL 16: `24 passed`
|
||||||
|
- 구현자 전체 회귀: `1074 passed, 52 skipped`
|
||||||
|
- Ruff·ProofLine validate·diff check: PASS
|
||||||
|
- 최종 독립 재QC: PASS — blocker 0 / major 0 / minor 0
|
||||||
|
- 최종 worktree: clean
|
||||||
|
|
||||||
|
최초 combined focused 실행의 `1 failed, 5 errors`는 종료된 이전 QC PostgreSQL DSN의 connection refused였으며, 새 disposable PostgreSQL 16에서 semantic migration suite를 재실행해 `24 passed`를 확인했다.
|
||||||
|
|
||||||
|
### 로컬 커밋
|
||||||
|
|
||||||
|
- 기능 구현 기반: `15aeae6930f8c3e6ef9cf659f41278b099a78459`, `7366cadf03fc6002bfd01ecf0cba7c24486bb618`, `359ea098ff717e7f04cf4206dcbc64ad17b47755`
|
||||||
|
- 계약 문서 정합: `64e4e32f9d7abf7082588b3c4c9a8c0d272762f6`
|
||||||
|
- explicit null regression: `43f6fea7ac805f27fba35586af27f0090a672222`
|
||||||
|
|
||||||
|
### 비차단 후속 권고
|
||||||
|
|
||||||
|
- 실제 KIS 운영계좌 SOR 주문과 외부 인프라 검증은 별도 승인된 환경에서 수행한다.
|
||||||
|
- migration runner의 replay-safe 불변식을 향후 migration 변경에서도 유지한다.
|
||||||
|
|
||||||
|
### 범위 경계
|
||||||
|
|
||||||
|
현재 완료된 것은 **로컬 `main` 구현·테스트·PostgreSQL 검증·커밋과 독립 QC PASS**다. push, PR, 원격 main 반영, image 게시, 운영 migration, 배포, GitHub Release, issue 종료와 실주문은 수행하지 않았다.
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# GitHub issue #61 comment evidence
|
||||||
|
|
||||||
|
- Source: https://github.com/fourblocks2020/trex-core/issues/61#issuecomment-5337421562
|
||||||
|
- Author: `genichin`
|
||||||
|
- Created At: `2026-08-19T04:10:59Z`
|
||||||
|
- Evidence Role: repository-local snapshot of a non-canonical implementation comment
|
||||||
|
- Canonical Authority: GitHub source comment; this snapshot does not create ProofLine lifecycle status
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 구현 진행 상황
|
||||||
|
|
||||||
|
- **대상:** [Discovery] 명시 venue 기반 주문 실행 계약
|
||||||
|
- **브랜치:** `main`
|
||||||
|
- **기준:** `main` (`4975d7166fa70e045096503e85c26d740ae92c55`)
|
||||||
|
- **상태:** 로컬 main 구현·검증·커밋 및 독립 QC PASS — 미푸시, 미배포
|
||||||
|
- **최종 업데이트:** 2026-08-19 13:17:45 KST
|
||||||
|
|
||||||
|
### 구현 계획 및 작업 목록
|
||||||
|
|
||||||
|
- [x] venue가 없는 매수·매도 주문을 SOR 주문으로 제출한다.
|
||||||
|
- 누락과 `null` 모두 같은 기본값을 사용하고 KIS 요청에 SOR를 명시한다.
|
||||||
|
- [x] 사용자가 지정한 KRX·NXT·SOR venue를 주문 전 과정에서 그대로 보존한다.
|
||||||
|
- 주문 접수부터 KIS 제출, 재시작 후 조회와 취소까지 원주문 venue가 바뀌지 않아야 한다.
|
||||||
|
- [x] AUTO venue를 입력·실행·저장 경계에서 제거한다.
|
||||||
|
- AUTO 요청을 입구에서 거부하고 시간대에 따라 KRX/NXT를 선택하는 동작도 제거한다.
|
||||||
|
- [x] 기존 저장 데이터의 AUTO venue를 SOR로 안전하게 전환한다.
|
||||||
|
- 실제 PostgreSQL에서 반복 적용과 저장 제약을 함께 검증한다.
|
||||||
|
- [x] SOR 원주문 venue와 실제 체결된 KRX/NXT venue를 구분해 보존한다.
|
||||||
|
- 취소·재시작은 원주문 SOR를 사용하고 체결 원장에는 확인된 실제 거래소만 기록한다.
|
||||||
|
- [x] 문서·설정·테스트에 폐기된 runtime AUTO 계약이 남아 있지 않은지 점검한다.
|
||||||
|
- [x] 관련 집중 테스트, 전체 회귀 테스트, PostgreSQL migration 검증과 코드 품질 검사를 실행한다.
|
||||||
|
- 검증 실패가 승인 범위 안의 결함이면 수정하고, 계획의 의미나 범위를 바꿔야 하면 즉시 중지하고 재승인을 요청한다.
|
||||||
|
|
||||||
|
### 진행 기록
|
||||||
|
|
||||||
|
- 2026-08-19 13:10:40 KST — 승인된 이슈 본문, `main` branch와 clean worktree, 기준 SHA `4975d7166fa70e045096503e85c26d740ae92c55`를 확인했다. 별도 worktree나 기능 branch를 만들지 않고 구현·검증을 시작한다.
|
||||||
|
|
||||||
|
- 2026-08-19 13:12:28 KST — 기존 local main 구현에서 누락/null→SOR, explicit KRX/NXT/SOR 보존, AUTO admission 거부와 wall-clock routing 제거, order/execution venue 분리를 확인했다. 관련 비-DB 집중 테스트 `107 passed`.
|
||||||
|
- 2026-08-19 13:12:28 KST — 최초 focused 실행은 종료된 이전 QC의 stale PostgreSQL DSN(`127.0.0.1:32778`) 때문에 `107 passed, 1 failed, 5 errors`였으며 코드 실패가 아니었다. 새 disposable PostgreSQL 16에서 migration·outbox·repository `24 passed`를 확인하고 컨테이너를 제거했다.
|
||||||
|
- 2026-08-19 13:12:28 KST — current 계약과 충돌하던 interface 문서의 과거 KRX-default 설명 및 KIS adapter 주석을 SOR intent normalization 기준으로 수정했다.
|
||||||
|
|
||||||
|
- 2026-08-19 13:13:08 KST — repository 전체 AUTO 검색에서 잔존 항목은 admission 거부·migration 변환 검증과 현재 문서의 폐기 설명뿐이며 runtime AUTO 생성·허용 계약은 확인되지 않았다.
|
||||||
|
- 2026-08-19 13:13:08 KST — 전체 회귀 `1074 passed, 52 skipped`, Ruff·ProofLine validate·diff check PASS. 로컬 main commit `64e4e32f9d7abf7082588b3c4c9a8c0d272762f6`을 생성하고 worktree clean을 확인했다. push·PR·배포·릴리스·실주문은 수행하지 않았다.
|
||||||
|
|
||||||
|
- 2026-08-19 13:16:22 KST — 독립 read-only QC PASS: blocker 0, major 0, minor 1. 기능 결함은 없었고 explicit wire `venue: null`을 독립적으로 이름 붙인 테스트가 없다는 minor 검증 공백을 확인했다.
|
||||||
|
- 2026-08-19 13:16:22 KST — 승인 계획의 누락/null→SOR 검증 범위 안에서 omitted/null parameterized regression을 추가했다. focused `8 passed`, Ruff·diff check PASS, commit `43f6fea7ac805f27fba35586af27f0090a672222`, worktree clean. 독립 재QC를 요청한다.
|
||||||
|
|
||||||
|
- 2026-08-19 13:17:45 KST — 독립 재QC PASS: blocker 0, major 0, minor 0. omitted/null 두 케이스의 SOR normalization, broker request, ack 후 slot routing provenance를 독립 확인했다. 최종 HEAD `43f6fea7ac805f27fba35586af27f0090a672222`, worktree clean.
|
||||||
|
|
||||||
|
> 각 작업이 실제로 완료되고 검증될 때마다 이 댓글의 체크박스와 진행 기록을 갱신한다. 체크 표시는 구현 완료 또는 해당 검증의 실제 통과를 의미하며, 배포·릴리스 완료를 의미하지 않는다.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
id: "line-0006"
|
||||||
|
---
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
---
|
||||||
|
id: "req-0006"
|
||||||
|
status: approved
|
||||||
|
discovery: "dcy-0006"
|
||||||
|
criteria:
|
||||||
|
create: []
|
||||||
|
update: []
|
||||||
|
retire: []
|
||||||
|
satisfy:
|
||||||
|
- "ac-0018"
|
||||||
|
- "ac-0019"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 명시 venue 기반 주문 실행 계약
|
||||||
|
|
||||||
|
## Objective
|
||||||
|
|
||||||
|
buy/sell intent의 venue 누락과 explicit null을 SOR로 정규화하고 caller가 명시한 KRX/NXT/SOR를 original order venue로 보존한다. AUTO와 wall-clock venue routing을 runtime·persistence 계약에서 제거하며 기존 AUTO row를 SOR로 전환한다. SOR 원주문 venue와 broker-authoritative actual execution venue를 분리해 submit·ack·cancel·fill polling·restart·ledger/outbox 전 과정에서 routing provenance와 실제 체결 거래소를 각각 정확하게 보존한다.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
- buy/sell intent의 venue가 누락되거나 explicit null이면 `SOR`를 사용하고 KIS submit request에 `EXCG_ID_DVSN_CD="SOR"`를 명시한다.
|
||||||
|
- caller가 `KRX`, `NXT`, `SOR`를 명시하면 admission, slot persistence, KIS submit, acknowledgement, restart lookup와 cancel에서 변경하지 않는다.
|
||||||
|
- `AUTO` intent는 slot transition과 broker submission 전에 `invalid_venue`로 거부한다. runtime source·설정·문서는 AUTO를 생성하거나 허용하지 않고, negative tests와 migration history만 폐기 계약을 언급할 수 있다.
|
||||||
|
- core는 wall-clock time 또는 session 추정으로 KRX/NXT를 선택하지 않는다.
|
||||||
|
- existing persisted AUTO slot/outbox row를 SOR로 idempotent하게 전환하고 이후 invalid venue 저장을 DB constraint로 차단한다.
|
||||||
|
- original `order_venue`는 KRX/NXT/SOR이며 submit·ack·slot·restart·cancel routing authority다.
|
||||||
|
- actual `execution_venue`는 broker-authoritative KRX/NXT 또는 미확정 NULL이다. KIS `ORD_EXG_GB`와 explicit exchange-id allowlist에서만 결정하여 fill·ledger/outbox에 별도로 기록한다.
|
||||||
|
- SOR 단독, 누락, unknown code 또는 time으로 actual venue를 추론하지 않는다. SOR 주문에서 actual이 확인되지 않으면 거짓 ledger actual을 만들지 않는다.
|
||||||
|
- historical outbox의 SOR는 `order_venue=SOR`, actual `venue=NULL`로 보존한다. NULL-only backfill로 migration replay가 정상 order/execution 조합을 재해석하지 않게 한다.
|
||||||
|
- omitted와 explicit null wire input, KRX/NXT/SOR preservation, AUTO rejection, KIS payload, partial fill·cancel·restart, outbox round-trip 및 migration semantics를 repository tests와 실제 PostgreSQL에서 검증한다.
|
||||||
|
- 기존 active AC-0018과 AC-0019의 exact 의미를 변경하지 않고 이 Requirement의 구현 evidence를 해당 criterion에 `satisfy`로 결속한다.
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- actual venue, terminal execution state 또는 broker acceptance를 wall-clock이나 default로 추론하지 않는다.
|
||||||
|
- cancel·restart는 stored original venue와 original order identity를 사용한다.
|
||||||
|
- KIS raw payload, credential, token 또는 connection string을 public wire·document evidence에 기록하지 않는다.
|
||||||
|
- active AC-0018과 AC-0019의 본문·status를 이 satisfy binding으로 변경하지 않는다.
|
||||||
|
- TVR session/markets 판단과 strategy policy는 변경하지 않는다.
|
||||||
|
- Normative Design Documents: 없음. 이 REQ와 만족 대상으로 결속한 active AC-0018·AC-0019가 normative specification을 소유한다.
|
||||||
|
|
||||||
|
### Current Implementation Assessment
|
||||||
|
|
||||||
|
- 이 Requirement는 승인된 GitHub issue #61의 이미 완료된 local implementation을 현재 ProofLine schema에 사후 명세화한다. 과거 구현이 ProofLine delivery chronology를 따랐다는 뜻은 아니다.
|
||||||
|
- AC-0018 구현 상태: **satisfied by current local implementation evidence**. 누락/null intent→SOR, explicit KRX/NXT/SOR preservation, AUTO admission rejection, no wall-clock routing, persisted AUTO→SOR와 constraint가 구현·검증되었다.
|
||||||
|
- AC-0019 구현 상태: **satisfied by current local implementation evidence**. original order venue와 actual execution venue split, KIS fail-closed parser, cancel/restart routing provenance, ledger/outbox split, historical SOR actual NULL과 replay-safe migration이 구현·검증되었다.
|
||||||
|
- 구현 기반 commits는 `15aeae6930f8c3e6ef9cf659f41278b099a78459`, `7366cadf03fc6002bfd01ecf0cba7c24486bb618`, `359ea098ff717e7f04cf4206dcbc64ad17b47755`다.
|
||||||
|
- issue #61 계약 문서 정합 commit은 `64e4e32f9d7abf7082588b3c4c9a8c0d272762f6`, explicit null regression commit은 `43f6fea7ac805f27fba35586af27f0090a672222`다.
|
||||||
|
- 구현자 검증: 비-DB focused `107 passed`, omitted/null focused `8 passed`, disposable PostgreSQL 16 `24 passed`, 전체 `1074 passed, 52 skipped`, Ruff·ProofLine validate·diff check PASS.
|
||||||
|
- 최초 combined focused의 `1 failed, 5 errors`는 stale PostgreSQL DSN connection refused로 분류했고 새 disposable PostgreSQL 16 semantic suite `24 passed`로 재검증했다.
|
||||||
|
- 최종 독립 재QC는 omitted/null SOR normalization, broker request, ack 후 slot routing provenance를 검증하여 blocker 0, major 0, minor 0으로 PASS했다. 최종 implementation HEAD는 `43f6fea7ac805f27fba35586af27f0090a672222`, worktree clean이었다.
|
||||||
|
- 실제 KIS 운영계좌 SOR 주문, 외부 RabbitMQ·database·portfolio-hub, push·PR·remote main·production migration·deployment·release는 수행하지 않았다.
|
||||||
|
- REQ `approved`, AC `active` 및 `satisfy` binding은 current specification authority와 repository-local implementation assessment를 나타낸다. delivery closure, production validation, release 또는 deployment 완료를 의미하지 않는다.
|
||||||
|
|
||||||
|
## Non-Goals
|
||||||
|
|
||||||
|
- TVR session·portfolio markets gate, KRX/NXT session policy 또는 strategy intent 생성 판단 변경
|
||||||
|
- actual venue가 불명확할 때 KRX/NXT를 추정하거나 AUTO routing을 복원하는 fallback
|
||||||
|
- 실제 KIS 운영 주문·취소, live credential 또는 production broker/account 검증
|
||||||
|
- push, PR, remote main integration, image publication, production migration, deployment, GitHub Release 또는 issue closure
|
||||||
|
- 기존 active AC-0018·AC-0019의 의미 변경, 신규 중복 AC 생성 또는 ProofLine lifecycle closure 소급 주장
|
||||||
Reference in New Issue
Block a user