Commit Graph
221 Commits
Author SHA1 Message Date
Hermes Agent 1b63e79edc docs: add BAT-057 operator broker truth design 2026-07-15 07:33:26 +09:00
genichin c1e67c7055 docs: approve dcy-037 emergency requirements 2026-07-14 22:40:38 +09:00
Hermes Agent 48b2af148e docs(discovery): confirm operator broker truth hotfix scope 2026-07-14 22:23:46 +09:00
genichin 7845fbe856 REQ-117/118 Implemented — bat-056 머지 079fc04, QC opus PASS(주문 페이로드 불변 잠금). 배포게이트: NXT 소액 스모크(poll_fill 실측) 선행 2026-07-07 06:56:42 +09:00
genichin 079fc042ec Merge pull request #38 from fourblocks2020/feat/req-117-118-kis-broker-venue
bat-056: KIS 브로커 venue 파라미터화 — EXCG_ID_DVSN_CD 명시 (REQ-117/118)
2026-07-07 06:54:38 +09:00
genichin 70a732b60a REQ-117/118 Approved (confirm-req) — OrderRequest.venue + KIS 브로커 EXCG 명시/취소 venue 의미론/poll_fill NXT/현재가 market. dcy-002 NXT 트랙(고위험, QC opus 예정) 2026-07-06 23:26:07 +09:00
genichin 0ea2103865 REQ-116 Implemented (confirm-req-implemented) — bat-055 머지 dc6d7a9, QC opus PASS-WITH-NOTES(watchdog 실증). 배포 게이트: pf-hub REQ-055 선행 2026-07-06 23:26:07 +09:00
genichinandClaude Fable 5 eca7937543 docs(bat-056): verification report — 794 passed, 47 skipped, OI-1 open item
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-07-06 23:24:51 +09:00
genichinandClaude Fable 5 ee3dc83a93 feat(broker): KIS venue parameterization — OrderRequest.venue + EXCG_ID_DVSN_CD (REQ-117/118, BAT-056)
- OrderRequest.venue: str = "KRX" additive 추가 (기존 위치 인수 순서 불변)
- BrokerPort.cancel_order: venue: str = "KRX" 파라미터 추가
- BrokerPort.get_current_price: market: str = "J" 파라미터 추가
- KISBroker.submit_order: EXCG_ID_DVSN_CD=req.venue 항상 명시 전송
- KISBroker.cancel_order: EXCG_ID_DVSN_CD=venue 항상 명시 전송
- KISBroker.get_current_price: FID_COND_MRKT_DIV_CODE=market 파라미터화
- PaperBroker: cancel_order/get_current_price 시그니처 정합 (venue/market 수신·무시)
- poll_fill TR 유지 (TTTC8001R) — NXT 체결 포함 여부 미확인 open item (코드 주석 기록)
- tests/adapters/broker/test_venue.py: REQ-117 AC-1~5 + REQ-118 AC-1~8 신규 17개
- docs: interface-contract.md OrderRequest/BrokerPort 섹션 + change log 추가
- docs: runtime-flows.md venue 전달 경로 명시 + change log 추가

결과: 794 passed, 47 skipped (기존 777+47 대비 신규 17개 추가 전부 통과)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-07-06 23:24:51 +09:00
genichin dc6d7a943b Merge pull request #37 from fourblocks2020/feat/req-116-slots-strategy-field-filter
bat-055: slots.req strategy 필터 + row strategy/markets 필드 (REQ-116)
2026-07-04 11:37:18 +09:00
genichin e8089f4a69 docs: interface-contract.md BAT-031 changelog 줄 UTF-8 손상 복원 (QC 권고, 코드 무관) 2026-07-04 11:16:20 +09:00
genichinandClaude Fable 5 690071afad feat(slots): additive strategy fields + filter (REQ-116, BAT-055)
trex.slots.req wire 계약 additive 확장 — 기존 소비자(orb/tsl) backward compatible.

- PortfolioItem: strategy_name(Optional[str]) + markets(list) 필드 추가
- hub_read.py: get_portfolios()에서 strategy_name/markets 파싱 추가 (safe default)
- slot_to_dict(): strategy_name/strategy_params/markets 3필드 row에 추가 (SnapshotStore→PortfolioItem 경유)
- make_slots_rpc_handler(): strategy 요청 파라미터 → Python 레벨 후처리 필터 (available_slots 계산 이후, REQ-073 AC-6 불변)
- 테스트: AC-1~8 전수 + hub_read 파싱 + 회귀 갱신 (777 passed, 47 skipped)
- docs/interface-contract.md: 요청 파라미터·응답 행 스키마·소스 테이블·REQ-074 AC-5 주석 갱신

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-07-04 11:10:01 +09:00
genichin 5267e72efe REQ-116 Approved (confirm-req, 팀장) — slots.req strategy 필터 + row strategy_name/params/markets additive. tvr e2e 배관 ②, 필드명 REQ-055와 상호잠금 2026-07-04 10:55:19 +09:00
genichinandClaude Opus 4.8 e48908489a docs(rel-010): released 마감 — M3 배포 완료(314047b, dcy-034/035/036+slot_filled+verify핫픽스)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-30 17:03:31 +09:00
genichinandClaude Opus 4.8 314047b4de docs(req-106): verify ImportError 핫픽스 change-req + postmortem
51cc3cc(make_broker→_build_broker) 거버넌스 기록 — 증상·근본원인·검증(운영 재검증 OK)·
테스트 갭 postmortem·롤백. main 직접푸시 사후추인 노트 포함.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-30 13:55:22 +09:00
genichin 9e787c81a2 Merge pull request #35 from fourblocks2020/feat/dcy-036-kis-credential-inject
feat(dcy-036/bat-054): KISBroker 양의 경로 — 데몬-스코프 KIS 인증정보 실거래 주입
2026-06-30 13:54:49 +09:00
genichin aa0189bd89 Merge pull request #36 from fourblocks2020/feat/slot-filled-no-route
fix(slot-filled): 매도 체결 이벤트 NO_ROUTE 라우팅 갭 해소 (M3)
2026-06-30 13:54:37 +09:00
genichinandClaude Opus 4.8 51cc3ccb09 fix(cli): verify 명령 ImportError 핫픽스 — make_broker→_build_broker
운영 배포 스모크(REL-010 STEP2)서 trex-core verify가 ImportError(make_broker 부재)로 실패.
_cmd_verify가 존재하지 않는 trex_core.adapters.broker.make_broker를 import하던 것을
_cmd_sync와 동일한 trex_core.runtime.daemon._build_broker로 교체. 회귀 테스트 2개 추가.
747 passed/회귀 0. CLI 전용, trading/wire 무관.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-30 13:30:07 +09:00
genichinandClaude Opus 4.8 de97bc842d fix(slot-filled): 매도 체결 이벤트 NO_ROUTE 해소 — strategy_id 전이 전 캡처
INACTIVE 전이가 strategy_id를 None 초기화(REQ-057) → 라우팅키 slot_filled_sell._.{sym}
→ orb/tsl 바인딩 불일치 NO_ROUTE/DLQ. _on_filled/_on_partial_cancel에서 전이 직전
strategy_id 캡처해 emitter에 전달. wire 계약 불변(포맷 유지·값 교정). QC opus PASS, 747 passed/회귀 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-29 09:38:45 +09:00
genichinandClaude Opus 4.8 ababf80234 docs(rel-010): M3 trex-core 릴리즈 문서 (dcy-034/035/036)
REL-010 draft — reconcile cold-start + WAC 리포트 + dcy-036 휴면배포 묶음.
배포 선결=PR #35 머지. 미푸시(사장님 결재 시 push).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 23:03:57 +09:00
genichinandClaude Sonnet 4.6 6b066e19cb feat(bat-054): 그날-시작 KIS 인증정보 양의 경로 주입 — KISBroker reinitialize (REQ-113 AC-2/AC-4, REQ-115 AC-1)
BAT-053 스캐폴드에서 연기된 양의 경로 완성:
- KISBroker.reinitialize(credential): app_key/app_secret/account_ref 교체 + L1 token 무효화
- SnapshotScheduler에 kis_reinit_callback 주입 지점 추가; 그날-시작 성공 시 callback 호출
- daemon.py에 _build_kis_reinit_callback() 헬퍼 + SnapshotScheduler 조립 수정
- 신규 테스트 12개 추가: 757 passed / 47 skipped (기존 745 대비 +12, 회귀 0)

안전 불변식 유지:
- credential_fetch_enabled=False(기본) 경로 byte-for-byte 보존
- fail-closed 불변식 미파괴 (reinit 실패 시 entry_allowed 유지)
- AMQP wire 계약 변경 없음

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 19:51:48 +09:00
genichinandClaude Opus 4.8 a50b5e34a2 docs(req-113,req-115): dcy-036 confirm-req-implemented (BAT-054)
BAT-054로 REQ-113 AC-2/AC-4, REQ-115 AC-1 충족 → Approved→Implemented.
QC(opus) PASS-WITH-NOTES, blocker 0. REQ-115 AC-1 통합검증은 배포후 릴리즈 스모크(단서 부기).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 19:51:39 +09:00
genichinandClaude Opus 4.8 dc68e644d7 docs(dcy-036): confirm-req-implemented — REQ-112/114 Implemented, REQ-113/115 부분(Approved, KISBroker 재조립 M3 후속), BAT-053 release-candidate
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 12:34:23 +09:00
genichin 01655ab2d7 Merge pull request #34 from fourblocks2020/feat/dcy-036-daystart-credential-failsafe
dcy-036: 그날-시작 KIS 인증정보 fetch + fail-safe 로드 (스캐폴드) — BAT-053 (REQ-112~115)
2026-06-28 12:28:14 +09:00
genichinandClaude Sonnet 4.6 a612e8763b docs(bat-053): draft-batch-verification 완료 — AC 커버리지 + 미해결 기록
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 11:00:18 +09:00
genichinandClaude Sonnet 4.6 e4e5c70422 feat(bat-053): 그날-시작 KIS 인증정보 fetch + fail-safe 로드 (REQ-112~115)
REQ-112: BrokerCredentialPayload/TradingContext 데이터클래스 + PortfolioHubReadPort.fetch_broker_credential() 포트 메서드 + hub_read 어댑터(_fetch_user_info 헬퍼 추출) + stub_read 결정론 stub
REQ-113: DaemonInstanceConfig/DaemonConfig.credential_fetch_enabled opt-in(기본 False) + TOML 파싱 + break-glass(TREX_KIS_BROKER_BREAK_GLASS) 감지
REQ-114: SnapshotScheduler._maybe_fetch_credential() — fail-closed 3조건(unavailable/broker-null/trading_disabled) + CRITICAL 알람 DAY_START_LOAD_FAILED + IntentService entry_allowed_fn 게이트(BuyIntent 차단, SellIntent 통과)
REQ-115: 그날 고정 캐시(_cached_credential/_credential_date) — 동일 날짜 재fetch 방지 + app_secret 메모리 한정(Redis 미기록)

스텁 기반 구현: 실 portfolio-hub/네트워크 없이 AC 전부 단위 테스트.
회귀: credential_fetch_enabled=False(기본) 경로 byte-for-byte 보존.
745 passed, 47 skipped (0 failed).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 11:00:18 +09:00
genichinandClaude Opus 4.8 f9c4fb4eba docs(dcy-036): draft-req + confirm-req — REQ-112~115 Approved (그날-시작 KIS fetch + fail-safe 로드)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 10:12:18 +09:00
genichinandClaude Opus 4.8 9312ac4401 docs(dcy-036): confirm-discovery — 그날-시작 KIS 인증정보 fetch + fail-safe 거래 로드 (교차발원 pf-hub dcy-010)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 00:17:18 +09:00
genichinandClaude Opus 4.8 6da552bedb docs(dcy-035): confirm-req-implemented — REQ-109/110/111 Implemented, BAT-052 release-candidate
머지 PR #33(81d06d9) 반영. 실현PnL WAC 멀티데이 리포트 delivery 완료.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 20:59:20 +09:00
genichin 81d06d9db4 Merge pull request #33 from fourblocks2020/feat/dcy-035-multiday-wac-report
feat(dcy-035): 멀티데이 WAC 실현PnL 운영리포트 (REQ-109/110/111)
2026-06-26 20:52:38 +09:00
genichin a96fd54799 docs/style(bat-052): QC 재검 비차단 minor 정리
- docs/operations.md: report 섹션을 WAC 실현PnL 정의로 갱신 (portfolio-hub WAC
  기반, 매수 fee cost basis 편입, 멀티데이 정확; 미가용 시 실현섹션 에러·타섹션 정상;
  당일 net 함수는 회귀 비교용 보존 명시)
- docs/runtime-flows.md: 운영 조회 리포트 흐름에 BAT-052 WAC 경로(get_realized_pnl
  N콜) + degrade(폴백 없음) 단계 추가
- docs/batches/bat-052_*/: CHG-20260626-02 기준으로 buy_fee_only_assets·
  buy_fee_by_asset 잔존 참조 제거 및 최종 구현 일치 갱신 (planning/design/
  implementation/verification)
- tests/application/test_operator_report.py:82: 섹션 헤더 주석에서
  buy_fee_by_asset 단어 제거 및 CHG-20260626-02 근거 추가 (주석만)
- trex_core/runtime/cli.py: __import__("datetime").timezone/timedelta inline
  패턴을 정식 from datetime import timezone, timedelta로 교체 (동작 동일)

pytest: 717 passed, 47 skipped (로직 변경 없음, 회귀 0)
2026-06-26 20:35:17 +09:00
genichinandClaude Sonnet 4.6 d3e4af59cf fix(bat-052): CHG-20260626-02 보정 — buy_fee_only_assets 제거 + NFR-2 엄격화
portfolio-hub WAC가 매수 fee를 cost basis에 편입함에 따라(REQ-110 change-req)
이중계상을 방지하기 위해 buy_fee_only_assets 관련 로직을 전면 제거하고,
일중 닫힌 거래 AC-2 단언을 엄격 동치(realized_pnl_wac == realized_pnl)로 강화.

변경:
- OperatorReport.buy_fee_only_assets 필드 제거
- apply_wac_to_report buy_fee_only_assets 인자 제거
- buy_fee_by_asset 헬퍼 함수 제거
- render_text 매수전용 수수료 섹션 제거
- render_json buy_fee_only_assets 필드 제거 (WAC 필드 4개→3개)
- cli.py: buy_fee_by_asset import/사용 제거, 미사용 'from datetime import date, timedelta' 제거
- test_wac_equals_net_when_same_day_buy_sell: WAC 957.0, 엄격 동치 단언
- test_buy_only_assets_has_fee → test_buy_only_asset_no_fee_line (fee 라인 없음)
- test_render_json_has_all_four_wac_fields → test_render_json_has_three_wac_fields
- 동일 CLI 통합 테스트 보정

결과: 717 passed, 47 skipped

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 20:35:17 +09:00
genichinandClaude Sonnet 4.6 73d3b35ab2 feat(bat-052): WAC 실현손익 리포트 통합 (REQ-109/110/111, dcy-035)
- portfolio.py: RealizedPnlItem/RealizedPnlResult 데이터클래스 추가;
  PortfolioHubReadPort에 get_realized_pnl 포트 메서드 추가
- hub_read.py: GET /v1/portfolios/{id}/pnl/realized 어댑터 구현
  (from/to/symbol query, 비2xx/네트워크→PortfolioHubUnavailableError)
- stub_read.py: get_realized_pnl 고정 결과 stub 추가 (무네트워크)
- operator_report.py: OperatorReport에 WAC 4필드+degrade 2필드 추가;
  apply_wac_to_report/buy_fee_by_asset 헬퍼; render_text/render_json WAC 섹션
- cli.py: _cmd_report에 WAC 경로(portfolio-hub 설정 시) + degrade 경로 통합
  (REQ-111: base_url 미설정/Unavailable → 식별가능 에러, 폴백 없음)
- tests: 51개 신규 테스트 (domain sweep, hub_read, stub_read, operator_report,
  cli_report_wac); 전체 717 passed, 47 skipped

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 20:35:17 +09:00
genichinandClaude Opus 4.8 b9ee8edf8f docs(REQ-110): change-req CHG-20260626-02 — 매수 fee 편입 반영(NFR-2 엄격, buy_fee_only_assets 제거)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 20:34:55 +09:00
genichinandClaude Opus 4.8 e32eb78656 docs(dcy-035): 멀티데이 WAC 실현PnL 운영리포트 — discovery confirmed + REQ-109/110/111 approved
- dcy-035 confirm-discovery: OQ-1=전 인스턴스 WAC 통일, OQ-5=섹션 에러 degrade
- REQ-109 portfolio-hub /pnl/realized read 어댑터(포트+HTTP+stub)
- REQ-110 운영리포트 WAC 실현손익 통합(전 인스턴스, 매수일 수수료, completeness, 일중 net 회귀)
- REQ-111 portfolio-hub 미가용 시 실현손익 섹션 에러 degrade(폴백 없음)
- srs/index register 갱신

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 18:18:39 +09:00
genichinandClaude Opus 4.8 5b2e256c8d docs: dcy-034 거버넌스 마감 — REQ-102~108 Implemented, BAT-050/051 release-candidate
BAT-050(PR #31 ced7eda, core-A) + BAT-051(PR #32 07b393d, core-B) origin/main
머지 완료 및 QC(opus) PASS + 팀장 confirm-batch-verification 반영.

- REQ-102~108: Approved → Implemented (상태 필드 + CHG-20260626-01 Change Log)
- docs/srs/index.md: Register 상태 7건 갱신, Recent Change Log Summary 마감 1줄 추가
- docs/batches/index.md: BAT-050 in-delivery → release-candidate, BAT-051 행 신규 추가
- bat-050/index.md, bat-051/index.md: in-delivery → release-candidate
- 코드 변경 없음 (문서 상태 필드만)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 15:55:51 +09:00
genichinandClaude Sonnet 4.6 3f10c2379b docs(rel-009): capture-release-feedback — OPS-005 해소 + slot_filled NO_ROUTE 환류
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 14:07:16 +09:00
genichinandClaude Opus 4.8 07b393d27d feat(core-B): 운영자 sync/verify CLI + cold-start onboarding (BAT-051, REQ-105/106, PR #32)
dcy-034 마지막 조각. sync(슬롯 qty←브로커+warning해제+OQ-A 전이엣지+FR-7 평단seed)/verify(C 재대조·강제해제없음). core-A QC minor 2건 정리 동봉. QC(opus) PASS, 683 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 09:53:49 +09:00
genichin ced7eda682 Merge pull request #31 from fourblocks2020/feat/dcy-034-core-a-reconcile-warning
feat(core-A): 차단형 reconcile — reconcile-warning durable store + 전략 차단 게이트 (BAT-050, REQ-102/103/104/107/108)
2026-06-26 06:58:27 +09:00
genichinandClaude Sonnet 4.6 c193388198 feat(core-A): reconcile-warning durable store + blocking gate (BAT-050, REQ-102/103/104/107/108)
B/C 불일치 시 슬롯을 durable 차단(ReconcileWarningStore)하고 전략 intent 경로에
pause∨reconcile_warned 게이트를 추가한다. 안전망(safety-sell/kill-switch/watchdog)
경로는 SlotService 직접 호출로 게이트를 구조적으로 우회(OQ-B 확정).
SlotState enum/전이표/wire 계약 필드는 불변, reconcile_warned 필드만 additive 추가.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 00:43:04 +09:00
genichinandClaude Opus 4.8 35f3147250 docs(dcy-034): confirm-req REQ-102~108 Approved — 차단형 reconcile + sync/verify
dcy-034 confirm-req 완료(팀장 2026-06-25): REQ-102(warning store)/103(차단 reconcile)/104(pause∨warning 게이트)/105(sync)/106(verify)/107(로깅·알람)/108(NFR) Approved. OQ-A(INACTIVE→HOLDING actor제한 전이)/OQ-B(안전망 차단예외)/OQ-C(verify C전용) 반영. FR-7→portfolio-hub dcy-008/REQ-043 교차참조. .claude/worktrees gitignore.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-26 00:16:21 +09:00
genichinandClaude Opus 4.8 e052e70619 docs(discovery): add dcy-034 slot↔account blocking reconcile + sync/verify cold-start (confirmed)
M3 중장기 cold-start 동기화 갭 정식화. 차단형 reconcile(A→B→C) + durable warning(별도 store) + pause∨warning 게이트 + 운영자 sync/verify 명령. OQ-1~5 전부 confirm-discovery에서 Answered. portfolio-hub 현재보유 평단(WAC) read 교차 의존 명시.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-25 21:47:58 +09:00
genichinandClaude Opus 4.8 34700f3035 docs(release): M2 REL-009 confirm-release + batch release-candidate 전이
trex-core의 release-prep:
- 배치 검증 완료 (BAT-047, BAT-048)
- M2 event reliability + fill guard + alarm runbook 문서 (REL-009)
- releases index 업데이트

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-25 12:55:33 +09:00
genichinandClaude Opus 4.8 5bdd72040e docs(operations): 무데이터/죽은 종목 위생 운영자 런북 추가 (dcy-017 후속)
dcy-017 지속 무데이터 알람의 후속 운영 절차를 operations.md §7로 문서화.
- pause 시맨틱 코드 검증 결과 기술(신규 매수만 차단, 보유분 exit는 정상)
- Step 1 알람검증 / Step 2 포지션확인 / Step 3a pause(가역) / Step 3b 영구제거
- 보유 포지션 안전성 + 영구삭제 시 고아 방지 순서 명시
- 코드 변경 없음(기존 trex-core pause/resume 기능 문서화)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-22 10:36:50 +09:00
genichinandClaude Opus 4.8 d4c5fcbba1 feat(alarm): trex-core 알람 emitter + trex.alerts exchange (dcy-033 BAT-049, Implemented)
AlarmEmitter(application, best-effort 비차단)+trex.alerts topic exchange 가산·격리+8 CRITICAL code 배선. 608 passed, opus QC PASS, 팀장 e2e(텔레그램 HTTP200) 통과. REQ-098~101 Implemented.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-21 19:25:55 +09:00
genichinandClaude Opus 4.8 b2165eac25 docs(dcy-033): kdh emitter 범위 제외 반영 (사장님 결정)
kis-data-hub를 알람 모듈 emitter 범위에서 제외(Out of Scope),
생성된 REQ 참조에 REQ-057 Deprecated 표기. 모듈 emitter는 core/orb/tsl만.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-21 15:27:38 +09:00
genichinandClaude Opus 4.8 cc166bd531 docs(dcy-033): 생성된 REQ 참조에 cross-repo 모듈 REQ 보강
orb REQ-039/tsl REQ-024/kdh REQ-057/notifier REQ-001~008 역참조 추가
(confirm-req 완료 반영).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-21 15:16:58 +09:00
genichinandClaude Opus 4.8 ebca9be0d1 docs(dcy-033): 제품군 알람 전달 체계 discovery + REQ-098~101 (trex-core 소유분)
confirm-discovery + draft-req + confirm-req 완료. 알람 envelope wire 계약(098)·
trex.alerts AMQP exchange 가산·격리(099)·core CRITICAL emitter 8종
best-effort 비차단(100)·baseline 정합(101). 전송=trex.alerts AMQP 확정,
paging=ALARM-INVENTORY §A 전체. delivery는 M2 이후 큐잉.
orb/tsl/kdh emitter·trex-notifier는 각 repo 별도.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-21 14:56:14 +09:00
genichinandClaude Opus 4.8 f1b649cf2a feat(execution): 체결가 0/None 시 지정가 백필 가드 + WARN 로깅 (dcy-032/BAT-048)
REQ-095(슬롯 평단·원장 price 지정가 백필, 0 오염 방지) + REQ-096(백필/미해결 WARN 로깅) 구현.
지정가 부재 시 skip+강WARN. application 단일화(_resolve_fill_price), wire/LedgerTrade 스키마 불변.
575 passed/0 fail, opus QC PASS. REQ-097 알람=스파이크 산출물만(impl 후속).

- _resolve_fill_price 헬퍼 추가: avg_price 검증, limit_price 백필, 미해결 WARN
- _on_filled/_on_partial_cancel 통합: 백필 적용, 슬롯/원장 일관성
- _record_ledger 시그니처: resolved_price 파라미터 (backward compat)
- test_execution_fill_price_backfill.py: 21 시나리오 (avg=None/0, limit=있음/없음 등)
- docs: dcy-032, req-095/096/097, bat-048 설계/검증

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-21 13:34:31 +09:00
genichinandClaude Opus 4.8 d182464b7a feat(messaging): OPS-005 이벤트 발행 연결 신뢰성 (BAT-047)
발행 전용 연결의 idle heartbeat 사망 후 첫 발행 유실 결함 제거.
- REQ-091 발행 재시도 + 강제 재연결(_force_reconnect, is_open 불신)
- REQ-092 idle keepalive(execution-loop 단일스레드 틱, process_data_events time_limit=0)
- REQ-093 DLQ 가시성 + emit 실패 ERROR 경보(구조화 로그, dcy-029 재사용)
- REQ-094 baseline 문서 정합(runtime-flows/operations/project-structure)

독립 opus QC PASS-WITH-NOTES → 시정 2건(ruff F401, AC-3 프로덕션 경로) 완료.
554 passed/47 skipped/회귀 0/ruff clean. NFR-1 wire 무회귀(interface-contract diff 0).
BAT-047 release-candidate, REQ-091~094 Implemented. dcy-031. M2 트랙B.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-19 22:39:43 +09:00