Commit Graph
30 Commits
Author SHA1 Message Date
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 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 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 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 9e35467336 docs(rel-008): 범위 정정 — BAT-042/043 포함 (남아있는 배치 전부)
REL-008 초안 시 BAT-042(dcy-028 strategy-state/#26)·BAT-043(retryable/#27)을
주제 기준으로 제외했으나, 단일 main 브랜치 배포(HEAD 통째)에서는 이미 운영에
동반 배포된 release-candidate 배치다. "남아있는 배치 전부를 REL-008로" 지시에
맞춰 포함하도록 정정.

- Included Batch: BAT-044/045/046 → BAT-042/043/044/045/046
- BAT-042/043: release-candidate → released
- 마이그레이션 014/015는 BAT-042 소속으로 명시, 거버넌스 갭 해소
- 코드/운영 변경 없음 — 문서(release scope) 정정만. 재배포 불요.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 13:59:26 +09:00
genichinandClaude Opus 4.8 00ce5d95bb docs(rel-008): draft + confirm — 호가단위 스냅(#28) + 운영 관측성(#29) 통합 릴리즈
BAT-044/045/046(release-candidate)를 REL-008(app-service)로 묶음.
배포 전 준비 근거(운영자 확인용) 표 기록 — 537 passed/47 skipped, ruff clean,
DB 스키마 무변경(롤백 무손실), 호가단위 케이스·로깅·주문결과·거부ERROR·실현PnL
단위 검증. confirm-release: draft → confirmed (Recorded By: Justin Ko).

실 운영 배포 + #28/#29 close 는 capture-release-feedback 단계.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 13:26:31 +09:00
genichinandClaude Opus 4.8 d8d9021260 feat(execution,obs): 호가단위 스냅(dcy-030/#28) + 운영 관측성(dcy-029/#29) + REL-007 환류
dcy-030 (issue #28, P0 체결 복구):
- REQ-083 KRX 호가단위(tick) 순수 유틸 (domain/pricing.py)
- REQ-070 CHG: 슬리피지 실효가 호가단위 스냅 — 상한 준수(매수 floor/매도 ceil)
  + band<1tick 하한/상한 보장 + 부동소수 epsilon 가드. 147700→148400/54500→54700.
- BAT-044 release-candidate

dcy-029 (issue #29, 운영 관측성):
- REQ-084 구조화 로깅 기반 (runtime/logging_setup.py): ISO8601 KST·레벨·Loki JSON
  ·correlation id(slot_id)
- REQ-085 주문 결과 로깅 (event=order_submit|fill|reject)
- REQ-087 거부 ERROR 가시성 (조용한 롤백 제거)
- REQ-086 청산 reason+actor 동반 노출 (안전망/전략 구분, 신규 필드 없음)
- REQ-088 운영 조회 CLI report (application/operator_report.py, 보유·오늘 체결
  ·실현 PnL net·대기, direct-DB)
- REQ-089 운영자 런북 docs/operations.md
- REQ-090 baseline 정합 (runtime-flows·project-structure·interface-contract)
- BAT-045(P0)·BAT-046(P1) release-candidate

REL-007: confirmed → feedback-captured (운영 인스턴스 라이브 검증 + #28/#29 환류
정규화). BAT-037~041 released.

검증: 537 passed, 47 skipped, 회귀 0, ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 13:19:31 +09:00
genichinandClaude Sonnet 4.6 1f59322f52 docs(rel-006/bat-026~036): confirm-release 상태 반영 — released 전환
REL-006 confirm-release 스킬 실행 결과 BAT-026~036 상태를 released로 갱신하고
rel-006 배포 근거를 보완한 변경 사항을 커밋.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 22:45:45 +09:00
genichinandClaude Sonnet 4.6 b1ce06ca3b docs(rel-007): confirmed — slots RPC 개선 + 매도세 정정 + paper seq + 중장기 프로파일
배포 근거: BAT-037~041 전체 verification confirmed, DB 스키마 변경 없음,
slots RPC 스모크(available_slots=5, degraded=False, slots 23개) 통과,
데몬 PID 802942 정상 운영 중 (2026-06-12 22:35 KST, SHA d30e915)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 22:37:07 +09:00
genichinandClaude Sonnet 4.6 d30e915b75 docs(rel-007): draft — slots RPC 개선 + 매도세 정정 + paper seq + 중장기 프로파일 (BAT-037~041)
BAT-037: available_slots capacity hint (REQ-073 CHG)
BAT-038: 매도 증권거래세 누락 수정 (REQ-018 CHG, issue #24)
BAT-039: paper order seq Redis 영속화 (REQ-011 CHG, issue #4)
BAT-040: slots RPC DB-level status 필터 (REQ-002/006/073 CHG, issue #25)
BAT-041: watchdog TOML + 중장기 인스턴스 운영 프로파일 (REQ-076/077/078, dcy-027)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 22:32:30 +09:00
genichinandClaude Sonnet 4.6 002340e5fd docs(rel-006): BAT-035/036 포함 + 배포 근거 보완 — confirmed
- BAT-035/036 batch index: confirmed → release-candidate
- rel-006: BAT-035/036 추가, status confirmed, SHA 명시, smoke 한계·외부 소비자 분석 기술
- daemon.py: stale 주석 trex.snapshot.req → trex.slots.req

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 19:01:59 +09:00
genichinandClaude Sonnet 4.6 fb05a73130 feat(rel-006): dcy-022/023 + BAT-032~034 — 실행 정책·qty 검증·allocated_capital 제거 통합
BAT-032 (dcy-022): timeout_sec/slippage_pct 실행 정책, 미체결 자동 취소,
보호 지정가, `trex-core cancel` 백스톱. 마이그레이션 012.
BAT-033: `trex-core enter --qty` 필수 검증 — 미지정 시 RPC 전 즉시 오류.
BAT-034 (dcy-023): allocated_capital 죽은 필드 전 경로 제거 (domain·intent·
persistence·snapshot·CLI). 마이그레이션 013(비가역 DROP). 외부 발신자
unknown key 무시 수신 의미론 적용.
REL-006 confirmed: BAT-026~034 통합 릴리즈, pre-release smoke 증거 포함.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 07:42:03 +09:00
genichinandClaude Opus 4.8 6e8e79660c feat(slot): slot entry_count + closed-slot reallocation (dcy-019, BAT-025) + REL-005
dcy-019/issue #18: slot 자원을 진입 횟수 기준으로 고르게 재사용하고 idle 소진 시
closed 슬롯을 직접 재할당한다. 거버넌스는 전부 change-req(신규 REQ 없음).

- 도메인(REQ-002): Slot.entry_count(기본 0) + EXPECTED_SLOT_FIELDS, 상태 머신
  closed→pending_buy 신규 전이(base 8→9, ALLOWED_TRANSITIONS 14→15),
  _apply_transition_fields closed→pending_buy clean-slate + →pending_buy 시 +1
- 영속화(REQ-006): 멱등 마이그레이션 008(entry_count), flat 매핑,
  find_allocatable_slot(idle∪closed, entry_count→updated_at→slot_id) + in-memory 동등
- admission(REQ-007): _admit_buy find_idle_slot→find_allocatable_slot + from_state=slot.status
- 테스트(REQ-003): 전이 카운트/계약 가드 정합 + test_slot_entry_count.py / test_buy_admission_reallocation.py
- 문서(REQ-009): data-model.md / runtime-flows.md 정합
- 기존 daily_symbol_entries(symbol-scoped) 분리·미변경

BAT-025(release-candidate) delivery + change-req REQ-002/003/006/007/009(CHG-20260609-01).
REL-005(confirmed, app-service): BAT-024+BAT-025 묶음. operator-facing run-the-app
스모크로 enter --forced-close-at(BAT-024)·closed 재할당(BAT-025) 실 데몬 검증
(실 PG 마이그레이션 008 round-trip 포함).

검증: 단위 366 passed / 35 skipped(KIS sandbox 1건 deselect — live .env 환경 의존), ruff clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 14:49:22 +09:00
genichinandClaude Opus 4.8 941d324899 docs(release): REL-002/003 feedback-captured + 포함 batch released 정합
REL-002(BAT-009)·REL-003(BAT-010~013) 을 released→feedback-captured 로 전환해
REL-001/004 와 동일한 완료(종착) 상태로 정합. REL-002 Feedback Handoff 빈
플레이스홀더 정리(tooling 릴리즈, Discovery/REQ Input=없음). 포함 batch
BAT-009~013 release-candidate→released(register + 개별 index) — 누락 정정.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 13:59:41 +09:00
genichinandClaude Opus 4.8 0f56f26eb5 docs(release): REL-004 capture-release-feedback (feedback-captured)
운영자 배포 증거 기반 운영 환류 기록: Feedback Handoff(관찰 사실 +
Discovery/REQ/Change Request Input 분리), REL-004 confirmed→feedback-captured,
포함 BAT-014~023 release-candidate→released(register + 개별 index).

후속 입력: issue #16(preallocation 누락, Discovery), dcy-019(REQ 대기),
BAT-024(차기 release 편입), daily_symbol_entries 제거(REQ-002 change-req).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 13:53:24 +09:00
genichin b07b123165 docs(rel-004): record deployment verification evidence 2026-06-09 13:45:38 +09:00
genichinandClaude Opus 4.8 fec9411d33 docs(release): REL-004 에 BAT-022/023 편입 + 재-confirm (confirmed)
릴리즈되지 않은 release-candidate 배치(BAT-022 슬롯 상태 가시화,
BAT-023 ledger 현금/포지션 write-back·option D)를 REL-004 범위에 추가.
확장 범위 증거(BAT-022 실 인프라 운영 재현, BAT-023 인프라 게이트
385 passed) 반영 후 confirm-release 게이트 통과 → Status confirmed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 08:52:12 +09:00
genichinandClaude Opus 4.8 a0a149114d docs(release): confirm REL-004 (app-service) — BAT-014~021 통합
confirm-release 게이트 통과 → Status draft→confirmed (문서 + index).
- 포함 batch(BAT-014~021) 전부 release-candidate
- Rollout/Rollback/Verification Checklist 완비
- app-service 검증 근거: Pre-Release Run Evidence(실 데몬 기동 RUNNING+
  마이그레이션 006/007 적용 + 운영자 CLI universe/slots/enter/exit e2e +
  ledger completed; buy 심볼 resolver 버그 검출·수정 포함)

다음: 운영자 실 서버 배포 후 Release Execution Evidence 채워 released 전환.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:53:46 +09:00
genichinandClaude Opus 4.8 a570ac659e fix(daemon): buy 심볼 resolver 결함 수정 + REL-004 draft (운영자 run 증거)
REL-004(미릴리즈 BAT-014~021 통합) draft-release 작성. confirm-release 전
운영자 프로그램 run-the-app 검증(실 데몬 + trex-core CLI e2e)을 수행했고,
369 passed 가 놓친 실 프로덕션 버그를 검출·수정했다.

- fix(REQ-007 CHG-20260608-03): Daemon._resolve_symbol 이 SnapshotAsset.symbol
  (없는 속성)을 접근 → 데몬 buy admission 매 요청 AttributeError → intent RPC
  타임아웃(실 데몬 매수 전면 불능). asset.item.symbol 로 수정. 단위 테스트가
  stub resolver 를 주입해 실 배선을 한 번도 실행하지 않아 미검출이었음
- test: tests/runtime/test_daemon_resolve_symbol.py — 실 Daemon._resolve_symbol
  × 실 SnapshotStore 회귀 가드(수정 전 실패하는 테스트)
- docs(release): rel-004 draft(app-service, BAT-014~021) + Pre-Release Run
  Evidence(데몬 기동 + universe/slots/enter/exit e2e + ledger completed +
  버그 검출·수정 + LIVE 미검증 한계) + releases/index REL-004 행

검증: 실 데몬 재기동 후 buy/sell e2e admitted→체결→closed + ledger completed,
단위 337 passed, ruff clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 17:38:34 +09:00
genichin 5eebe9c4e8 docs: update rel-003 safety killswitch release 2026-06-07 23:00:24 +09:00
genichinandClaude Opus 4.8 cc063afdb9 docs(release): REL-003 검증 한계/미검증 영역 명시 (운영자 핸드오프)
배포 차단 아님 전제로 실 KIS 쓰기 경로 4가지 미검증을 Verification Checklist에 명시:
LIVE 체결→ledger 미실증, kill_switch LIVE 미실행, 실 2-인스턴스 동시기동 미검증,
거래일 성공 LIVE 주문 0건 + 운영 DB 최초 적용. + 배포 후 차기 거래일 실증 권고.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 16:01:08 +09:00
genichinandClaude Opus 4.8 cb288c24c2 docs(release): REL-003 통합 confirmed — BAT-010~013 (safety-sell + kill-switch + multi-instance)
REL-003/004/005를 단일 app-service 릴리즈로 통합(사용자 결정). REL-003에
BAT-010·011(dcy-007 safety-sell) + BAT-012(dcy-008 kill-switch) +
BAT-013(dcy-009 multi-instance)를 묶고 rename, REL-004/005 draft 폐기.

- 파일 rename: rel-003 core-autonomous-safety-sell → safety-killswitch-multi-instance
- Scope/Rollout/Rollback/Verification 통합 (⚠️ --config 필수화 파괴적 기동 변경 +
  제어 큐 pause.req→control.req + 마이그레이션 004/005 + LIVE safety-sell/kill_switch 안전 주의)
- confirm-release: draft → confirmed (단위 271 + 인프라 게이트 301 passed + 전 e2e PASS)
- releases/index: REL-003 통합 행, REL-004/005 제거

배포 핸드오프 가능 상태(confirmed). 운영자는 commit SHA + REL-003 Rollout Plan으로 배포.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 15:45:01 +09:00
genichinandClaude Opus 4.8 6fda381f62 docs(release): REL-003 — LIVE SL/TP e2e 검증 + 영속 거부 재시도 백오프 환류
실 KIS LIVE SL/TP e2e: 실 시세(FHKST01010100, 329000) → stop_loss 트리거
→ 실 KIS 매도 제출 → "장운영일자가 주문일과 상이합니다"(휴장) 거부 → 안전 롤백
end-to-end 확인. forced_close/장마감/update_thresholds 는 paper daemon e2e 통과.

발견(Change Request Input 기록): 영속 거부 상황에서 safety-sell 이 poll
interval 마다 거부 주문을 무한 재제출 → 재시도 백오프/쿨다운 후속 후보.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 10:43:36 +09:00
genichinandClaude Sonnet 4.6 0082d3b5da fix(kis): REQ-038 현재가 tr_id 정정 + REL-003 확정 + dcy-008 kill-switch Discovery
## REQ-038 CHG-04/05: KIS 시세 tr_id 정정 (FHKST01010100)
- kis.py _tr_price(): TTTC8397R/VTTC8397R → FHKST01010100 (실전/모의 공용)
  배포 전 실 KIS LIVE 진단에서 구 tr_id가 rt_cd=1 "없는 서비스 코드"로 거부됨을
  확인 — stop-loss/take-profit이 LIVE에서 조용히 미발동하는 결함이었음.
  FHKST01010100으로 정정 후 get_current_price('005930')=329000(rt_cd=0) 확인.
- test_kis_price.py: AC-7 테스트 정정 (FHKST01010100 공용 검증)
- REQ-038: CHG-04/05 Change Log 추가, Requirement/AC-7/Notes 정정
- BAT-011 implementation.md: LIVE 검증 및 tr_id 정정 이력 추가
- BAT-011 verification.md: AC-7 evidence를 CHG-04 정정 버전으로 갱신
- docs/srs/index.md: CHG-04/05 Change Log 항목 추가

## REL-003: core 자율 안전 매도 release 문서 생성
- docs/releases/rel-003_20260607_core-autonomous-safety-sell.md 신규 생성
  (BAT-010 + BAT-011, app-service profile, Status: confirmed)
- docs/releases/index.md: REL-003 행 추가

## dcy-008: 비상 정지/강제 청산(kill-switch) Discovery 초안
- docs/discovery/dcy-008_20260607_emergency-stop-kill-switch.md 신규 생성
  GitHub #3 기반; SlotService.sell() 재사용, 당일 전략 제외 day-scoped
  FR 6개, NFR 3개, OQ 4개 (트리거 표면/영속 방식/수동 해제 결정 필요)
- docs/discovery/index.md: dcy-008 행 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:17:36 +09:00
genichinandClaude Opus 4.8 c8174e8bb6 docs(release): REL-001 released → feedback-captured (BAT-001~008 released)
운영자(Hermes Agent) 실 환경 배포 evidence(revision 71faa23, host 86ba33f2997a,
broker=kis LIVE, 2026-06-06T11:18:16Z) 반영:
- Release Execution Evidence 기재(배포 facts + app-service profile checks +
  동일 revision 71faa23 pre-deploy 게이트 재현 보강).
- Rollback Outcome 의미 정정: 운영자 보고 "rollback yes"는 배포 롤백이 아니라
  휴장일(현충일) KIS 거절에 따른 slot pending_buy→idle 정상 복구(매수 거부 경로 smoke 성공).
- capture-release-feedback: release feedback-captured 전환,
  포함 batch BAT-001~008 released 전환.
- 잔여(차기 거래일 실증): ledger flush(fill→ledger), 마이그레이션 명시 로그,
  포지션 정합/warning 마스킹 결과 로그 — Feedback Handoff 기록.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 00:26:08 +09:00
genichinandClaude Opus 4.8 71faa23e5d docs(release): REL-002 released — BAT-009 merged + pushed to main
Record deployment evidence for REL-002 (tooling): bat-009 fast-forward
merged to main and pushed (ca75700..7b6ed55). No migration/restart;
broker=kis unaffected. Status confirmed -> released.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 18:38:09 +09:00
genichinandClaude Opus 4.8 7b6ed5591c docs(release): draft + confirm REL-002 (tooling) for BAT-009
REL-002 bundles BAT-009 (paper broker env tuning, REQ-010 AC-5) as a
tooling-profile release. Rollout/rollback/verification ready; status
confirmed. No DB migration or daemon restart; broker=kis runtime
unaffected (paper config only).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 18:36:25 +09:00
genichinandClaude Opus 4.8 2f57aad7b2 feat(config): expose paper broker tuning via env (REQ-010 AC-5, BAT-009)
Wire the existing PaperBroker scenario knobs (fill_after_polls /
qty_per_poll / reject_symbols) to daemon env so REQ-011 AC-2 e2e
scenarios (delayed / partial / reject) can be reproduced by a daemon
restart. Unset == prior PaperBroker() behaviour, byte-for-byte (no
regression).

- config.py: PaperBrokerConfig + from_env parsing (TREX_PAPER_*)
- daemon.py: _build_broker injects config.paper into PaperBroker
- .env.example: document the 3 paper tuning keys (paper-only, e2e)
- tests: paper broker defaults + env tuning parsing

SDLC: REQ-010 CHG-20260606-01 (AC-5 added) / -02 (Implemented);
BAT-009 batch-lite release-candidate; REL-001 feedback handoff records
pre-deployment e2e observations incl. event-publisher idle-drop and
paper correlation_id collision (GitHub #4, #5).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:49:51 +09:00
genichinandClaude Opus 4.7 f8c5661147 docs(release): confirm REL-001 trex-core slot-core baseline (BAT-001~008)
Bundle BAT-001~008 into REL-001 (app-service profile) and promote to
confirmed. Register index row added.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-06 11:27:35 +09:00
genichinandClaude Opus 4.8 b40e569537 Bootstrap StagePilot baseline for slot domain migration
Initialize baseline seed, four baseline docs (project-structure,
runtime-flows, interface-contract, data-model), and the active
discovery/srs/batches/releases indexes. Content derived from the
trex-orbit slot pure-domain migration plan (trex-core as a new base,
pure domain only).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 09:47:14 +00:00