From dc68e644d7ebf3d821e46e7d581921df77e45ae3 Mon Sep 17 00:00:00 2001 From: Justin Ko Date: Sun, 28 Jun 2026 12:34:23 +0900 Subject: [PATCH] =?UTF-8?q?docs(dcy-036):=20confirm-req-implemented=20?= =?UTF-8?q?=E2=80=94=20REQ-112/114=20Implemented,=20REQ-113/115=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84(Approved,=20KISBroker=20=EC=9E=AC=EC=A1=B0?= =?UTF-8?q?=EB=A6=BD=20M3=20=ED=9B=84=EC=86=8D),=20BAT-053=20release-candi?= =?UTF-8?q?date?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5 --- .../index.md | 3 ++- ...13_kisconfig-fetch-source-priority-and-break-glass.md | 5 +++++ ...q-112_portfolio-hub-broker-credential-read-adapter.md | 7 ++++++- .../req-114_daystart-load-gate-fail-closed-entry.md | 7 ++++++- ...-115_daystart-intraday-resilience-credential-cache.md | 5 +++++ docs/srs/index.md | 9 ++++----- 6 files changed, 28 insertions(+), 8 deletions(-) diff --git a/docs/batches/bat-053_20260628_daystart-credential-fetch-failsafe/index.md b/docs/batches/bat-053_20260628_daystart-credential-fetch-failsafe/index.md index 97a23c9..572d322 100644 --- a/docs/batches/bat-053_20260628_daystart-credential-fetch-failsafe/index.md +++ b/docs/batches/bat-053_20260628_daystart-credential-fetch-failsafe/index.md @@ -1,6 +1,6 @@ # BAT-053: 그날-시작 KIS 인증정보 fetch + fail-safe 로드 -- Status: in-progress +- Status: release-candidate - Profile: standard - Discovery: dcy-036 - Created: 2026-06-28 @@ -29,3 +29,4 @@ - 사장님 지시: 스텁 기반으로 구현해 실 portfolio-hub 없이 테스트 가능하게. - 워크트리 격리 배치(origin/main 분기). 코드 변경은 이 워크트리 브랜치에 커밋. - AMQP wire 계약 변경 없음 — trex-orb-v1/trex-tsl-v1 파급 없음. +- confirm-req-implemented(2026-06-28): PR #34 머지(01655ab), QC PASS-WITH-NOTES(opus, blocker 0), 745 passed/0 회귀. REQ-112/114 Implemented 완료. **양의 경로(KISBroker 재조립, REQ-113 AC-2+REQ-115 AC-1) + AC-9 전용 테스트 보강 + break-glass 로그 assert = M3 후속 batch.** REQ-113/115는 스캐폴드 완료·Approved 유지. diff --git a/docs/srs/Configuration/req-113_kisconfig-fetch-source-priority-and-break-glass.md b/docs/srs/Configuration/req-113_kisconfig-fetch-source-priority-and-break-glass.md index 3f7532b..309a942 100644 --- a/docs/srs/Configuration/req-113_kisconfig-fetch-source-priority-and-break-glass.md +++ b/docs/srs/Configuration/req-113_kisconfig-fetch-source-priority-and-break-glass.md @@ -86,3 +86,8 @@ - Date: 2026-06-28 - Author: 팀장(Claude) - confirm-req: `Proposed` → `Approved`. dcy-036 FR-4/OQ-3 추적. credential_fetch_enabled opt-in 기본 false로 M1/M2 byte-for-byte 보존(AC-1·NFR-1) 적절. fetch 1차→env break-glass(명시적 TREX_KIS_BROKER_BREAK_GLASS) 우선순위 정합. base_url 등은 env 유지 합리. blocker 없음. + +### CHG-20260628-03 +- Date: 2026-06-28 +- Author: 팀장(Claude) +- 부분 구현 — BAT-053 PR #34 머지(merge commit 01655ab). credential_fetch_enabled TOML 플래그 신규 필드, opt-in off 회귀보존(AC-1), break-glass 코드, TOML 기본 False(AC-7) 구현·머지 완료. **연기: AC-2(fetch 결과로 KISConfig 조립)는 KISBroker 런타임 재조립 필요 → M3 후속 batch.** AC-4 break-glass 로그 내용 assert 보강도 후속. Status `Approved` 유지(미충족 AC 존재). diff --git a/docs/srs/Integration/req-112_portfolio-hub-broker-credential-read-adapter.md b/docs/srs/Integration/req-112_portfolio-hub-broker-credential-read-adapter.md index 5f2b90f..5ecfe5f 100644 --- a/docs/srs/Integration/req-112_portfolio-hub-broker-credential-read-adapter.md +++ b/docs/srs/Integration/req-112_portfolio-hub-broker-credential-read-adapter.md @@ -1,6 +1,6 @@ # req-112: portfolio-hub broker credential read 포트 메서드 + HTTP 어댑터 -- Status: Approved +- Status: Implemented - Type: Integration - Priority: High - Owner: trex-core-dev @@ -95,3 +95,8 @@ - Date: 2026-06-28 - Author: 팀장(Claude) - confirm-req: `Proposed` → `Approved`. dcy-036 FR-1/C1 추적. TradingContext 원자 read(broker+trading_enabled 1회 호출) 설계 타당 — /v1/user_info 단일 응답에 정합. whoami 회귀보존(AC-5)·도메인 순수성(AC-8)·app_secret 마스킹(AC-7) 적절. blocker 없음. 선행 의존 portfolio-hub REQ-049(머지완료). + +### CHG-20260628-03 +- Date: 2026-06-28 +- Author: 팀장(Claude) +- confirm-req-implemented: `Approved` → `Implemented`. 근거: BAT-053 PR #34 머지(merge commit 01655ab). fetch 포트(`fetch_broker_credential()`, `BrokerCredentialPayload`, `TradingContext`) + HTTP 어댑터 + stub AC-1~8 전 케이스 pytest 검증 완료. QC PASS-WITH-NOTES(opus, blocker 0). 745 passed/0 회귀. diff --git a/docs/srs/Integration/req-114_daystart-load-gate-fail-closed-entry.md b/docs/srs/Integration/req-114_daystart-load-gate-fail-closed-entry.md index c91c424..c71c745 100644 --- a/docs/srs/Integration/req-114_daystart-load-gate-fail-closed-entry.md +++ b/docs/srs/Integration/req-114_daystart-load-gate-fail-closed-entry.md @@ -1,6 +1,6 @@ # req-114: 그날-시작 로드 게이트 — fail-closed 신규 진입 차단 + 알람 -- Status: Approved +- Status: Implemented - Type: Integration - Priority: High - Owner: trex-core-dev @@ -92,3 +92,8 @@ - Date: 2026-06-28 - Author: 팀장(Claude) - confirm-req: `Proposed` → `Approved`. dcy-036 FR-2/OQ-1/OQ-2 추적. **진입 fail-closed(BuyIntent 차단) + 청산·DISPATCHED 통과(AC-4/5)** 비대칭이 사장님 fail-safe 결정 정합 — 자본 갇힘 방지. CRITICAL 알람 기존 trex.alerts(REQ-099/100) 재사용·그날 고정(AC-9) 적절. OQ-4(trex-notifier 연동) Deferred 정당. blocker 없음. + +### CHG-20260628-03 +- Date: 2026-06-28 +- Author: 팀장(Claude) +- confirm-req-implemented: `Approved` → `Implemented`. 근거: BAT-053 PR #34 머지(merge commit 01655ab). fail-closed 게이트 AC-1~9 pytest 검증 완료 — BuyIntent 차단/SellIntent 통과 비대칭, CRITICAL 알람(`DAY_START_LOAD_FAILED`), opt-in off 비활성(AC-7), 그날 고정(AC-9) 확인. QC PASS-WITH-NOTES(opus, blocker 0). 745 passed/0 회귀. diff --git a/docs/srs/Non-Functional/req-115_daystart-intraday-resilience-credential-cache.md b/docs/srs/Non-Functional/req-115_daystart-intraday-resilience-credential-cache.md index bd2b418..527e491 100644 --- a/docs/srs/Non-Functional/req-115_daystart-intraday-resilience-credential-cache.md +++ b/docs/srs/Non-Functional/req-115_daystart-intraday-resilience-credential-cache.md @@ -84,3 +84,8 @@ - Date: 2026-06-28 - Author: 팀장(Claude) - confirm-req: `Proposed` → `Approved`. dcy-036 FR-3/NFR-1~3/OQ-2 추적. 그날 고정 캐시(장중 무재fetch, AC-3)·KIS API 연속성(AC-1)·ledger_outbox 무손실 재확인(AC-2, REQ-019)·app_secret 메모리 한정(AC-5, Redis 미기록)·env-only 회귀보존(AC-4) 적절. KIS access token 캐시(REQ-016)와 구분 명확. blocker 없음. + +### CHG-20260628-03 +- Date: 2026-06-28 +- Author: 팀장(Claude) +- 부분 구현 — BAT-053 PR #34 머지(merge commit 01655ab). 그날 고정 캐시 저장(AC-3), app_secret 메모리 한정(AC-5), ledger_outbox 무손실 재확인(AC-2), env-only 회귀보존(AC-4) 구현·머지 완료. **연기: AC-1(캐시된 인증정보를 실 KIS 거래에 주입=KISBroker 런타임 재조립) → M3 후속 batch.** AC-9 전용 테스트 보강도 후속. Status `Approved` 유지(미충족 AC 존재). diff --git a/docs/srs/index.md b/docs/srs/index.md index 2ca46c5..bb2ccb0 100644 --- a/docs/srs/index.md +++ b/docs/srs/index.md @@ -192,16 +192,15 @@ | REQ-109 | portfolio-hub /pnl/realized read 포트 메서드 + HTTP 어댑터 | Integration | Implemented | High | trex-core-dev | [req-109](./Integration/req-109_portfolio-hub-realized-pnl-read-adapter.md) | | REQ-110 | 운영 리포트 WAC 실현손익 통합 — 전 인스턴스 공통 | Interface | Implemented | High | trex-core-dev | [req-110](./Interface/req-110_operator-report-wac-realized-pnl.md) | | REQ-111 | 운영 리포트 — portfolio-hub 미가용 시 실현손익 섹션 에러 degrade | Exception | Implemented | High | trex-core-dev | [req-111](./Exception/req-111_operator-report-realized-pnl-degrade.md) | -| REQ-112 | portfolio-hub broker credential read 포트 메서드 + HTTP 어댑터 | Integration | Approved | High | trex-core-dev | [req-112](./Integration/req-112_portfolio-hub-broker-credential-read-adapter.md) | +| REQ-112 | portfolio-hub broker credential read 포트 메서드 + HTTP 어댑터 | Integration | Implemented | High | trex-core-dev | [req-112](./Integration/req-112_portfolio-hub-broker-credential-read-adapter.md) | | REQ-113 | KISConfig 소스 우선순위 — portfolio-hub fetch 1차 + env break-glass + opt-in | Configuration | Approved | High | trex-core-dev | [req-113](./Configuration/req-113_kisconfig-fetch-source-priority-and-break-glass.md) | -| REQ-114 | 그날-시작 로드 게이트 — fail-closed 신규 진입 차단 + 알람 | Integration | Approved | High | trex-core-dev | [req-114](./Integration/req-114_daystart-load-gate-fail-closed-entry.md) | +| REQ-114 | 그날-시작 로드 게이트 — fail-closed 신규 진입 차단 + 알람 | Integration | Implemented | High | trex-core-dev | [req-114](./Integration/req-114_daystart-load-gate-fail-closed-entry.md) | | REQ-115 | 그날-시작 장중 무중단 보장 — 그날 고정 인증정보 캐시 + portfolio-hub 장애 비중단 | Non-Functional | Approved | High | trex-core-dev | [req-115](./Non-Functional/req-115_daystart-intraday-resilience-credential-cache.md) | ## Recent Change Log Summary +- 2026-06-28 :: REQ-112/114 **`Approved` → `Implemented`**, REQ-113/115 **`Approved` 유지(confirm-req-implemented, dcy-036/BAT-053)**: BAT-053 PR #34 머지(01655ab). QC PASS-WITH-NOTES(opus, blocker 0). 745 passed/0 회귀. REQ-112(fetch 포트+어댑터+stub AC-1~8 완료), REQ-114(fail-closed 게이트 AC-1~9, BuyIntent 차단/SellIntent 통과 비대칭·CRITICAL 알람·opt-in off 비활성 완료). REQ-113/115 스캐폴드 완료 — KISBroker 런타임 재조립(REQ-113 AC-2, REQ-115 AC-1) M3 후속 batch 연기. - 2026-06-28 :: REQ-112~115 **`Proposed` → `Approved`(confirm-req 팀장 승인)**: dcy-036 FR/NFR 추적·AC testable·blocker 0. 진입 fail-closed/청산·DISPATCHED 통과 비대칭(REQ-114 AC-4/5), 그날 고정 캐시·ledger 무손실(REQ-115), TradingContext 원자 read(REQ-112), opt-in 회귀차단(REQ-113 AC-1). OQ-4(trex-notifier) Deferred. 선행 의존 portfolio-hub dcy-010(머지완료). 다음=suggest-batch-reqs. -- 2026-06-28 :: REQ-112~115 **신규 생성(Proposed, draft-req dcy-036)**: 그날-시작 KIS 인증정보 fetch + fail-safe 거래 로드. REQ-112(portfolio-hub broker credential read 포트+HTTP 어댑터+stub, BrokerCredentialPayload/TradingContext), REQ-113(KISConfig 소스 우선순위: fetch 1차+env break-glass+opt-in, credential_fetch_enabled TOML 필드), REQ-114(그날-시작 로드 게이트: fail-closed 진입 차단+CRITICAL 알람 DAY_START_LOAD_FAILED), REQ-115(장중 무중단 보장: 그날 고정 캐시+portfolio-hub 장애 비중단+회귀안전+app_secret 메모리 한정). OQ-4(trex-notifier 연동) Deferred — REQ-114 Notes. - 2026-06-26 :: REQ-109~111 **Approved → Implemented** (confirm-req-implemented, dcy-035): BAT-052 머지(PR #33, 81d06d9) 완료. QC PASS. 717 passed/47 skipped/0 fail. REQ-109(portfolio-hub /pnl/realized 포트+어댑터+stub AC-1~6), REQ-110(WAC 운영리포트 통합 AC-1~7, CHG-20260626-02 buy_fee편입 반영), REQ-111(degrade AC-1~5) 전 AC 검증 완료. M3 배포 대기. -- 2026-06-26 :: REQ-109~111 **신규 생성(Proposed, draft-req dcy-035)**: 멀티데이 실현 PnL — WAC 기반 운영 리포트. REQ-109(portfolio-hub /pnl/realized read 포트+어댑터+stub), REQ-110(운영 리포트 WAC 실현손익 통합: 전 인스턴스 공통, 매수일 수수료 별도, completeness 경고), REQ-111(portfolio-hub 미가용 시 실현손익 섹션 에러 degrade, 폴백 없음). NFR-1(wire 불변)/NFR-3(데몬 격리)은 REQ-111 AC/Notes 흡수. NFR-2(일중 WAC==net 회귀)는 REQ-110 AC-2 흡수. OQ-2(기간)/OQ-3(수수료 출처)/OQ-4(N콜) design 인계. - 2026-06-26 :: REQ-102~108 **Approved → Implemented** (confirm-req-implemented, dcy-034): BAT-050(core-A, PR #31 ced7eda) + BAT-051(core-B, PR #32 07b393d) origin/main 머지 완료. QC(opus) PASS + 팀장 confirm-batch-verification. 최종 683 passed/47 skipped/0 fail. 차단형 reconcile(REQ-102·103), 전략 차단 게이트(REQ-104), sync/verify CLI(REQ-105·106), 차단/해제 로깅+알람(REQ-107), NFR(REQ-108) 전 AC 검증 완료. M3 배포 대기. -- 2026-06-25 :: REQ-102~108 **Proposed → Approved** (confirm-req, 팀장): dcy-034 OQ-A/B/C 결정 + FR-7 참조 구체화 반영. **OQ-A**: REQ-105에 INACTIVE→HOLDING 전이 엣지 추가 승인(actor=sync/reconcile 제한, wire 무영향 — enum 5개 불변·엣지만 추가), AC-10 신규, FR-7 → portfolio-hub dcy-008/REQ-043(`GET /v1/portfolios/{id}/holdings/cost-basis`) 구체 참조 갱신. **OQ-B**: REQ-104에 차단 예외 명시 — 내부 안전망(safety-sell/watchdog/kill-switch)은 reconcile-warning 차단 우회, AC-2 갱신. **OQ-C**: REQ-106에 verify=C 전용 확정, B 케이스는 sync(REQ-105) 책임 명시. REQ-102·103·107·108은 초안 그대로 승인. +- 2026-06-26 :: REQ-109~111 **신규 생성(Proposed, draft-req dcy-035)**: 멀티데이 실현 PnL — WAC 기반 운영 리포트. REQ-109(portfolio-hub /pnl/realized read 포트+어댑터+stub), REQ-110(운영 리포트 WAC 실현손익 통합: 전 인스턴스 공통, 매수일 수수료 별도, completeness 경고), REQ-111(portfolio-hub 미가용 시 실현손익 섹션 에러 degrade, 폴백 없음). NFR-1(wire 불변)/NFR-3(데몬 격리)은 REQ-111 AC/Notes 흡수. NFR-2(일중 WAC==net 회귀)는 REQ-110 AC-2 흡수. OQ-2(기간)/OQ-3(수수료 출처)/OQ-4(N콜) design 인계.