 copilot-swe-agent[bot]andgenichin
|
2b5d9043b9
|
chore: plan for review blockers follow-up
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-13 06:21:10 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
8b1de8e26a
|
Fence unmanaged lifecycle by snapshot time
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-13 05:54:51 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
84d81658a1
|
Resolve main merge and add unmanaged store race tests
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-13 02:58:18 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
c73e382b70
|
Merge remote-tracking branch 'origin/main' into copilot/feat-reconcile-unmanaged-position-durable-lifecycl
# Conflicts:
# .proofline/criteria/ac-0029.md
# .proofline/identities.json
# tests/adapters/persistence/test_migration_and_drift.py
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-13 02:53:22 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
591db7adb7
|
Fix unmanaged reconciliation review blockers
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-13 02:21:37 +00:00 |
|
genichin
|
3cb0fdc303
|
Merge pull request #90 from fourblocks2020/copilot/bug-ledger-shared-outbox-consumption
Isolate ledger outbox delivery by instance and add lease-based claims
|
2026-09-13 10:48:57 +09:00 |
|
Hermes Agent
|
762a953c95
|
fix: fence ledger outbox claims by instance
|
2026-09-13 09:41:51 +09:00 |
|
 copilot-swe-agent[bot]andgenichin
|
084e05a97d
|
feat(ops): track broker balance worker failure lifecycle and backoff
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-12 13:33:12 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
f9284d1de8
|
fix: preserve unmanaged first-seen timestamps
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-12 13:33:05 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
f801c53e0c
|
test: cover targeted and expired ledger claims
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-12 13:30:50 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
31d6e5c02b
|
test: cover stale ledger outbox lease updates
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-12 13:27:27 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
09b1b4f4c3
|
fix: isolate ledger outbox delivery by instance
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-12 13:24:58 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
fe51d211d9
|
feat: persist unmanaged position lifecycle state
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-12 13:24:51 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
45a5e4157d
|
fix: preserve multi-cause reconcile warnings and align slot blocking
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-12 13:22:40 +00:00 |
|
Hermes Agent
|
06c3f06b5d
|
fix: reconcile KIS correction order chains
|
2026-09-12 22:12:19 +09:00 |
|
 copilot-swe-agent[bot]andgenichin
|
f3fbc179b0
|
fix(kis): collect all parent candidates before child evaluation; boundary case tests
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-01 13:35:12 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
584e08eb36
|
fix(execution): bind parent row to request identity before child evaluation; add parent mismatch and race tests
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-01 13:21:20 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
65df10542b
|
fix(execution): KIS child cancel identity binding, sanitized logging, PG cancel SQL tests
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-01 12:06:45 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
f0ac909958
|
fix(execution): cancel SQL nullable type error, KIS child cancel detection, worker exception logging
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-09-01 03:33:38 +00:00 |
|
Hermes Agent
|
3854aabd0d
|
fix strategy state persistence corrections
|
2026-08-29 16:11:02 +09:00 |
|
Hermes Agent
|
4699de61cc
|
feat(strategy-state): persist instance-scoped slot maps
|
2026-08-29 15:11:43 +09:00 |
|
 copilot-swe-agent[bot]andgenichin
|
21f8fdd4b6
|
fix(ac-0024): injective C identity via SHA-256 length-prefix digest + PostgreSQL migration/round-trip tests
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-08-26 00:38:02 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
48dfc3e76f
|
fix: harden skipped ledger resolution paths
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-08-24 13:38:04 +00:00 |
|
 copilot-swe-agent[bot]andgenichin
|
76cde2edd0
|
feat: persist skipped ledger fills
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
|
2026-08-24 13:23:06 +00:00 |
|
Hermes Agent
|
9da8c27e52
|
fix(ledger): retain SOR fills with unknown venue
|
2026-08-24 09:47:21 +09:00 |
|
Hermes Agent
|
359ea098ff
|
fix: enforce actual venue persistence contract
|
2026-08-19 12:53:56 +09:00 |
|
Hermes Agent
|
7366cadf03
|
fix: preserve SOR execution venue separately
|
2026-08-19 12:48:05 +09:00 |
|
Hermes Agent
|
15aeae6930
|
fix: converge broker failures without retry
|
2026-08-19 11:29:26 +09:00 |
|
Hermes Agent
|
843df1d6f1
|
fix(execution): fail closed on unresolved orders
|
2026-08-14 15:29:31 +09:00 |
|
Hermes Agent
|
147873cb5d
|
feat(execution): reconcile timed-out orders safely
|
2026-08-14 15:15:52 +09:00 |
|
Hermes Agent
|
c0f36946a3
|
test: cover KIS pagination consumer seams
|
2026-08-10 00:27:10 +09:00 |
|
Hermes Agent
|
0fa8f39be9
|
feat: paginate KIS balance inquiries
|
2026-08-10 00:11:04 +09:00 |
|
jordan
|
56b35b257b
|
feat: own current KIS daily fill contract in Core
|
2026-07-29 21:46:42 +09:00 |
|
jordan
|
611805dcec
|
fix: close broker uncertainty audit gaps
|
2026-07-29 17:53:39 +09:00 |
|
jordan
|
0266992238
|
feat: add bounded KIS account read recovery
|
2026-07-29 17:40:01 +09:00 |
|
jordan
|
3dd8eefc92
|
fix: persist uncertain cancel outcomes
|
2026-07-29 17:17:14 +09:00 |
|
jordan
|
a656350a35
|
feat: resolve and persist actual order venue
|
2026-07-29 17:10:32 +09:00 |
|
jordan
|
479cb39a7e
|
feat: propagate intent venue through execution
|
2026-07-29 16:55:20 +09:00 |
|
jordan
|
d6c2e2d28a
|
fix: reconcile KIS exchange rejections
|
2026-07-28 13:29:43 +09:00 |
|
jordan
|
24c42d1c92
|
fix: reconcile ambiguous KIS order submissions
|
2026-07-28 11:17:06 +09:00 |
|
jordan
|
b72bf9f394
|
feat: isolate strategy-owned KIS balances
|
2026-07-27 11:39:07 +09:00 |
|
Hermes Agent
|
81a853a314
|
feat(reconcile): safely seed canonical cost basis
|
2026-07-17 09:57:08 +09:00 |
|
Hermes Agent
|
e95bd4f8b2
|
test(reconciliation): verify repository lookup parity
|
2026-07-15 08:18:32 +09:00 |
|
Hermes Agent
|
216e462df4
|
fix(broker): enforce operator broker truth boundary
|
2026-07-15 08:07:21 +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 |
|
 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 |
|
 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 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
|
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
|
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 |
|