Commit Graph

224 Commits

Author SHA1 Message Date
kjh2064 cfcf65f822 WBS-7.9: split CI core and ui/storage validation jobs 2026-06-22 01:42:38 +09:00
kjh2064 89b4c118d1 GAS 번들 빌드/동기화 파이프라인 추가
src/gas/core/, src/gas_adapter_parts/의 모듈 소스를 clasp push 대상인
루트 .gs 번들(gas_lib.gs, gas_data_collect.gs, gas_data_feed.gs)로
해시 검증과 함께 생성한다. 번들 파일에는 "GENERATED — DO NOT EDIT
MANUALLY" 헤더와 소스 해시를 새겨 수동 편집 드리프트를 방지한다.

- build_gas_bundle_v1.py: 소스→번들 생성, 해시 헤더 삽입
- validate_gas_bundle_sync_v1.py: 번들이 현재 소스 해시와 일치하는지 검증
- audit_tools_thin_wrapper_v1.py: tools/ CLI가 핵심 로직 없이 thin
  wrapper로만 동작하는지 감사
- deploy_gas.py: 번들 빌드 파이프라인과 연동
2026-06-22 01:42:36 +09:00
kjh2064 530cb5f47a WBS-7.9: 로컬 loopback에서 Basic Auth 게이트 실측 검증
Synology 실배포는 검증 불가하지만, 인증 게이트 자체(401/wrong-401/correct-200,
WWW-Authenticate 헤더)는 로컬에서 --auth-user/--auth-password로 재현해 문서의
실측 절차 1)·3) 기대값과 정확히 일치함을 확인했다. 2)/5)/6)은 실제 NAS·공개
호스트명이 필요해 사용자가 직접 수행해야 함을 명시했다.
2026-06-22 01:39:47 +09:00
kjh2064 47184a2f25 WBS-7.9: trim CI cache-hit overhead and wait for deploy readiness 2026-06-22 01:38:11 +09:00
kjh2064 4b1a33ba48 WBS-7.11 2차 확장: spec-코드 동기화 태깅 12→20개 (7.5%→12.5%)
이미 harness_file:/python_tool:/validator: 필드로 1:1 코드 매핑을
스스로 명시하고 있던 H001~H008 결정론적 하네스 계약 7개(spec/52~58)와
spec/32(canonical_artifact_resolver), spec/37(evaluation_dashboard_contract)에
has_code_implementation/code_path를 추가했다. 모든 대상 파일의 code_path
실존을 사전 확인했다.

governance/rules/00~05, spec/40·45·46·gas_adapter_contract 등 다중 구현체에
걸친 계약은 단일 code_path로 환원하면 거짓 1:1 매핑이 되므로 의도적으로
제외했다(WBS-7.11 핵심 원칙 유지).
2026-06-22 01:36:55 +09:00
kjh2064 6ed2da7a9d WBS-7.9: wait for snapshot admin readiness before verify 2026-06-22 01:30:14 +09:00
kjh2064 32716ec15e fix: Gitea secrets 계약 테스트를 vars.* 키 네이밍으로 동기화
tools/validate_gitea_secrets_contract_v1.py가 secrets.KIS_APP_KEY에서
vars.KIS_APP_KEY로 검증 키를 변경했으나 테스트가 갱신되지 않아 회귀.
2026-06-22 01:29:47 +09:00
kjh2064 744372f75c WBS-7.9: target snapshot admin deploy host runner 2026-06-22 01:07:39 +09:00
kjh2064 05ee10079d WBS-7.9: improve snapshot admin run clarity 2026-06-22 01:02:17 +09:00
kjh2064 ae10512170 Merge remote-tracking branch 'origin/main' into codex/roadmap-publish 2026-06-22 00:58:55 +09:00
kjh2064 316e1fd08c WBS-7.9: clarify snapshot admin smoke gate 2026-06-22 00:58:21 +09:00
kjh2064 d280ef8e69 WBS-7.9: split snapshot admin deploy workflow 2026-06-22 00:51:42 +09:00
kjh2064 e32cbf49e5 WBS-7.9: wire snapshot admin CI deploy 2026-06-22 00:42:02 +09:00
kjh2064 f2e304a508 fix: clarify platform transition wbs failure notes 2026-06-21 23:40:53 +09:00
kjh2064 e1ce6b3d88 Merge pull request 'Make mock KIS validation dry-run only' (#70) from codex/roadmap-publish into main 2026-06-21 23:23:16 +09:00
kjh2064 3002149fce fix: dry-run mock KIS validation in workflows 2026-06-21 23:22:22 +09:00
kjh2064 640b83080b Merge pull request 'Reinstall cached workflow deps and add snapshot admin pyyaml setup' (#69) from codex/roadmap-publish into main 2026-06-21 23:18:45 +09:00
kjh2064 610b9b1330 fix: reinstall workflow deps on cached venvs 2026-06-21 23:17:57 +09:00
kjh2064 08e43567a3 Merge pull request 'Fix Synology Python 3.8 compatibility and KIS validation deps' (#68) from codex/roadmap-publish into main 2026-06-21 23:11:31 +09:00
kjh2064 febd85d95e fix: synology py38 compatibility and KIS validation deps 2026-06-21 23:09:55 +09:00
kjh2064 c76f763e64 docs: snapshot WBS-4 gated status 2026-06-21 22:50:42 +09:00
kjh2064 3c49b2d712 Merge pull request 'Synology KIS workflow recovery, branch checkout fix, and seed JSON tracking' (#67) from codex/roadmap-publish into main
Reviewed-on: http://192.168.123.100:8418/KimJaeHyun/myfinance/pulls/67
2026-06-21 22:49:14 +09:00
kjh2064 f0dd9a8ae4 docs: add merge checklist and xlsx decision 2026-06-21 22:47:07 +09:00
kjh2064 a981715182 docs: refresh PR summary for seed recovery 2026-06-21 22:41:26 +09:00
kjh2064 d5d0c6f4be Track trading seed JSON and checkout trigger ref 2026-06-21 22:35:26 +09:00
kjh2064 a95198cf8c Fix Gitea seed recovery and workflow guards 2026-06-21 22:33:30 +09:00
kjh2064 f96736b839 Merge pull request '은퇴자산 퀀트엔진: KIS 연동 + 비판적 리뷰 기반 WBS-7 보완·고도화' (#66) from codex/roadmap-publish into main
Reviewed-on: http://192.168.123.100:8418/KimJaeHyun/myfinance/pulls/66
2026-06-21 20:13:57 +09:00
kjh2064 0cec44a0e1 정성매도전략 공식 레지스트리 등록 + 로드맵 비판적 리뷰 종합 갱신
- spec/13b_harness_formulas.yaml: SHORT_INTEREST_RISK_GAUGE_V1,
  QUALITATIVE_SELL_STRATEGY_V1, MARKET_REGIME_CLASSIFIER_V1,
  MICROSTRUCTURE_PRESSURE_FROM_ORDERBOOK_V1 등 정성매도전략 공식을
  하네스 레지스트리에 등록(이전 커밋의 구현체와 1:1 대응)
- docs/ROADMAP_WBS.md: 2026-06-21 비판적 리뷰(0c절) + WBS-7.1~7.11
  보완·고도화 전체를 반영 — 캘리브레이션 0/191 CALIBRATED 실태, T+5
  지표 불일치 해소, GAS 마이그레이션 재검토, deprecated 정리, 통합테스트,
  Tabler 그리드, spec-코드 동기화 게이트, KRX 자동화 실측까지 포함한
  완성도 매트릭스·KPI·스프린트 체크리스트 갱신
2026-06-21 20:12:09 +09:00
kjh2064 4c00229442 KIS·정성매도·스냅샷어드민·캘리브레이션을 CI/npm/문서에 통합 배선
이전 커밋들에서 추가한 기능을 실제로 동작시키는 배선 작업.

- .gitea/workflows/ci.yml: No Direct API Trading 게이트, KIS 자격증명
  검증(mock), 캘리브레이션 백로그 빌드, 정성매도 파이프라인 검증,
  Gitea secrets 계약 검증, snapshot admin 워크플로/웹 검증 단계 추가
- package.json: ops:data-collect, ops:sell-*, ops:snapshot-*,
  ops:calibration-* npm 스크립트 추가
- src/gas/core/gas_lib.gs doPost(): "trigger_run_all" action 추가 —
  Gitea CI가 공유 비밀키로 run_all()을 원격 트리거(주문 실행 없음,
  governance/rules/06·07과 동일 원칙)
- tools/trigger_gas_run_all_v1.py: 위 GAS 엔드포인트를 호출하는 CLI
- AGENTS.md/README.md: 신규 파일 인덱스 및 사용 가이드 갱신
2026-06-21 20:11:26 +09:00
kjh2064 670ab8e15a WBS-7.8: ETF NAV/공매도 잔고율 자동화 실측 + 운영절차 문서화
"자동화가 안 되면 차후 개선 목표로" 라는 지시에 따라 추정이 아니라
실제로 pykrx(이미 EOD 가격조회에 쓰이는 동일 라이브러리)의
get_shorting_balance()/get_etf_price_deviation()/get_etf_tracking_error()를
호출해 재시도했다. 기본 시세조회는 정상 작동하지만 이 세 함수는 세션
부트스트랩 후에도 HTTP 400 LOGOUT을 반환 — KRX 회원 로그인이 필요한
서버측 인증 게이트임을 raw HTTP로 재현 확인했다(헤더/세션 문제 아님).
자동화하려면 KRX 계정을 자격증명으로 등록해야 하는데, 이는
governance/rules/06·07과 같은 종류의 새 정책 결정이라 사용자 승인
없이 추가하지 않고 개선 목표로 이관한다(next_review_date: 2026-09-30).

- spec/16_data_gaps_roadmap.yaml S4/S5: automation_attempt_2026_06_22
  필드에 재현 절차 기록, next_review_action을 "API 키 발급"이 아니라
  "KRX 계정 발급·자격증명 관리 정책 승인 여부"로 재구성
- docs/runbook.md: 공매도 잔고율 주1회(매주 월요일 개장 전) CSV 수동
  갱신, ETF NAV 수동 import(tools/import_etf_nav_manual.py) 운영절차 명문화
2026-06-21 20:10:27 +09:00
kjh2064 5568004704 WBS-7.7: KIS수집→스냅샷→정성매도 E2E 통합테스트
단위 테스트는 모듈별로 충분했지만 KIS 수집→data_collection_store_v1.db
적재→정성매도전략 평가로 이어지는 실제 데이터 경로를 검증하는 테스트가
없었다. 네트워크를 전혀 사용하지 않고(no-naver/no-live-kis 경로, 또는
Naver 403 차단 모킹) 3단계 체인을 검증한다.
2026-06-21 20:09:43 +09:00
kjh2064 449721433b WBS-7.6: 슬리피지 실측 캡처 스캐폴딩
spec/55_execution_simulator_contract.yaml의 5bps 슬리피지 가정치를
검증할 실측 캡처 경로가 없었다. 주문 실행은 여전히 사람이 HTS에서
직접 한다(governance/rules/06 준수, API로 체결을 가져오지 않음) —
실행 후 사람이 의도가/실제체결가를 수동 기록하면 SQLite에 누적되고,
5건 미만이면 항상 DATA_GATED를 정직하게 반환한다(추정 금지).
2026-06-21 20:09:16 +09:00
kjh2064 5166750b53 WBS-7.3/7.4/7.5/7.11: 거버넌스 문서 정합성 정리 + spec-코드 동기화 게이트
2026-06-21 비판적 리뷰에서 spec/governance YAML이 코드 상태와 어긋난
채로 방치되던 3개 구체적 사례를 발견하고 정정했다. 근본 원인(동기화를
보장하는 장치 없음)에 대응하는 신규 CI 게이트도 함께 추가한다.

- spec/aliases.yaml: deprecated alias 17건 제거(활성 참조 0건 확인 후,
  2026-06-30 데드라인 전). role: deprecated_redirect인 spec/03_risk_policy.yaml,
  spec/04_strategy_rules.yaml 2개만 실삭제 — spec/06_exit_policy.yaml은
  role: compatibility_index(영구유지 설계)였음을 재확인해 보존
- governance/gas_logic_migration_ledger_v1.yaml: 존재하지 않는 파일을
  canonical 구현으로 인용하던 오류 2건 발견·정정, parity 테스트 부재로
  GAS 코드 삭제 보류(F12/F13/F14)
- spec/13_formula_registry.yaml: OVERHANG_PRESSURE_V1의 "-500000"
  절대값 폴백을 avg_volume_5d 비례식으로 교체(EXPERT_PRIOR 등록)
- tools/validate_specs.py: validate_spec_code_sync() 신규 — has_code_implementation/
  code_path 필드가 있는 spec만 검사(점진적 롤아웃, 기존 PASS 상태 비파괴),
  12개 파일 1차 태깅
2026-06-21 20:08:48 +09:00
kjh2064 ee4d1fdab8 캘리브레이션 거버넌스 도구 + WBS-7.1/7.2 실증 격차 가시화
캘리브레이션 백로그 → 우선순위 → 검토리포트 → 승인목록 → 결정초안으로
이어지는 임계값 보정 거버넌스 파이프라인을 추가하고, 2026-06-21
비판적 리뷰에서 발견한 두 가지 stale-수치 문제를 도구 차원에서 해소한다.

- registry_health(): 190여 개 임계값의 source별(SPEC_DERIVED/EXPERT_PRIOR/
  PROVISIONAL/CALIBRATED) 분포를 매 실행마다 자동 집계 — 수동 grep 불필요
- live_t5_status(): T+5 적중률을 하드코딩(35.86 리터럴) 대신
  Temp/prediction_accuracy_harness_v2.json에서 항상 최신값으로 읽음
- spec/calibration_registry.yaml: SEMI_CLUSTER_CAP_RISK_OFF 중복 id로
  인한 조용한 무시 버그 수정(SEMI_CLUSTER_CAP_RISK_OFF_MWA로 분리)
- spec/27_bch_calibration_runbook.yaml: current_status_2026_06_21 블록
  신설(단일 진실원천), 기존 05-30 스냅샷은 "역사적, 현재로 인용 금지"로 명시
2026-06-21 20:07:32 +09:00
kjh2064 f99f9821d2 스냅샷 어드민 웹 UI + WBS-7.10 Tabler 테이블 그리드 조회
settings/account_snapshot SQLite를 직접 편집하는 잠금/승인/변경이력
기반 웹 에디터를 추가하고, 2026-06-21 비판적 리뷰에서 요청된 테이블별
그리드 조회 기능(Tabler CDN)을 /tables 경로로 덧붙인다.

- 잠금(lock)·승인(approval)·undo·변경로그 전체 감사 추적
- KIS Collection 대시보드 통합(별도 SQLite, 워크스페이스 DB와 분리)
- WBS-7.10: 워크스페이스/KIS수집/정성매도전략 3개 SQLite, 11개 테이블을
  Tabler 그리드로 조회 — 테이블명은 고정 화이트리스트와 정확히 일치할
  때만 SQL에 사용(SQL 인젝션 방지, 단위테스트로 검증)
2026-06-21 20:06:55 +09:00
kjh2064 da0e1b0f7e 비기계적 매도전략(가치보존) + 위성종목 추천 엔진 추가
매크로·실적·펀더멘털·공매도수급·호가미시구조·대내외 변수 5개 독립
팩터군의 confluence(최소 3/5 합의) 없이는 매도 트리거를 금지하는
정성적 매도판단 엔진과, 보유종목 제외 위성후보 추천 로직을 추가한다.

- 단일 팩터 임계값 돌파만으로는 매도 신호를 생성하지 않음
  (mechanical_sell_prohibited=true)
- 데이터 결측 시 항상 DATA_MISSING/INSUFFICIENT_DATA_NO_ACTION —
  추정값으로 채우지 않음
- KIS 호가10단계·공매도거래비중 + Naver 시세/수급 스크래핑 입력 연동
- SQLite 시계열 저장 + 사후 적중률 자체평가
  (evaluate_qualitative_sell_strategy_accuracy_v1)
- Gitea 일일 스케줄(장마감 후) + 파이프라인 계약 검증 게이트
2026-06-21 20:05:55 +09:00
kjh2064 4cb206a269 KIS Open API 조회전용 연동 + 직접매매 절대금지 안전게이트
매수/매도 주문 및 계좌 잔고조회를 API로 직접 실행하지 않는다는 원칙을
코드 레벨에서 강제하는 안전게이트(governance/rules/06, 07)와 함께,
시세/호가/공매도거래비중 등 조회전용 KIS Open API 연동 및 SQLite
수집 파이프라인을 추가한다.

- kis_api_client_v1: 모든 요청이 _assert_read_only를 통과해야 하며
  /trading/ 경로·주문 TR_ID는 RuntimeError로 즉시 차단
- kis_data_collection_v1: KIS 우선 + Naver 폴백, 네트워크 실패는
  개별 ticker 단위로 흡수(배치 전체 중단 없음)
- data_collection_store_v1 / storage_backend_v1: SQLite 캐노니컬
  저장소, PostgreSQL 전환 대비 백엔드 추상화
- Gitea 영업일 스케줄(2시간 간격) + CI 강제 게이트
  (validate_no_direct_api_trading_v1, validate_kis_api_credentials_v1)
2026-06-21 20:04:44 +09:00
kjh2064 af3fa16416 Merge pull request '[codex] 로드맵 순차 이행 및 릴리스 게이트 정비' (#65) from codex/roadmap-publish into main
Reviewed-on: http://192.168.123.100:8418/KimJaeHyun/myfinance/pulls/65
2026-06-21 15:48:59 +09:00
kjh2064 34f6eebba6 데이터 게이트 진척도 검증 체인 추가 2026-06-18 02:21:13 +09:00
kjh2064 3b5152946a 문서의 섹터 플로우 진척도 정합성 보정 2026-06-18 02:12:12 +09:00
kjh2064 df92405837 섹터 플로우 진행도 문서화 2026-06-18 02:08:10 +09:00
kjh2064 4cda55fcab 섹터 플로우 진척도 추적 추가 2026-06-18 02:04:25 +09:00
kjh2064 318eb87a26 데이터 게이트 검증기와 DAG 연결 2026-06-18 01:57:19 +09:00
kjh2064 d7f9d3a944 릴리스 DAG와 실현 성과 게이트 연결 2026-06-18 01:48:17 +09:00
kjh2064 fee8131d5d 공식 레지스트리와 생성물 동기화 2026-06-18 01:48:00 +09:00
kjh2064 3afca069df 운영 하네스 문서화 2026-06-18 01:47:50 +09:00
kjh2064 782fe74578 feat(quant-engine): 10개 고전 기술전략 갭분석 후 7개 보조신호 채택
사용자 제시 10개 고전 기술전략(골든크로스/모멘텀/52주신고가/연속상승하락/이격도/돌파실패/
강한종가/변동성확장/평균회귀/추세필터)을 기존 엔진과 대조한 갭분석 결과:
- 이미 구현됨: 모멘텀(VELOCITY_V1/RS_MOMENTUM_V1), 이격도·평균회귀(MEAN_REVERSION_GATE_V1)
- 신규 채택 7개: GOLDEN_CROSS_SIGNAL_V1, STRONG_CLOSE_SIGNAL_V1,
  VOLATILITY_EXPANSION_BREAKOUT_V1, FIFTY_TWO_WEEK_HIGH_TRIGGER_V1, CONSECUTIVE_STREAK_V1,
  BREAKOUT_FAILURE_STOP_V1, TREND_FILTER_GATE_V1

AGENTS.md 하드룰(추격매수 방지, anti-late-entry gate 필수통과)에 따라 BUY 방향 신호 전부를
STRATEGY_SCORING의 보조신호로만 편입 — BREAKOUT_QUALITY_GATE_V2/FOLLOW_THROUGH_DAY_CONFIRM_V1/
ANTI_LATE_ENTRY_GATE_V2 게이트 체인을 우회하는 독립 BUY 트리거로는 사용하지 않음.

검증: validate_specs/validate_golden_coverage_100(100%)/validate_calibration_registry_v1/
validate_schema_model_generation_v1/validate_agents_shrink_v1 전부 PASS. golden test 22/22 PASS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 00:29:18 +09:00
kjh2064 aedabdd37b feat(quant-engine): v8.9 제안서 P0-P3 로드맵 채택 — 15개 의사결정 엔진 신규 구현
suggest/quant_investment_engine_v8_9_portfolio_optimizer_canonical_refactored.yaml의
implementation_todo_v8_9(P0~P4) 전체를 spec/tool/golden case 레벨로 구현.

- P0: PORTFOLIO_TRANSITION_UTILITY_V1, SELL_LOT_PARETO_SELECTOR_V1, FORECAST_SIMULATION_ENGINE_V1
- P1: SECTOR_EXPOSURE_GRAPH_V1/LEADER_LIFECYCLE_GATE_V1, EXECUTION_CAPACITY_LADDER_V1, MODEL_GOVERNANCE_KILL_SWITCH_V1
- P2: SCENARIO_SHOCK_MATRIX_V1, TRANSITION_SET_ENUMERATOR_V1, IMMUTABLE_DECISION_LEDGER_V1, EXECUTION_PLAN_COMPILER_V1
- P3: STATE_VECTOR_CONSTRUCTOR_V1, WALK_FORWARD_BOOTSTRAP_V1, TRANSITION_SET_ENUMERATOR_V1(MRC/CVaR 확장),
      REBALANCE_CADENCE_GATE_V1, WEEKLY_LEGACY_TRANSFER_PLAN_V1

기존 regime/cluster 연동 정책 수치(현금방어선, 반도체 cap)는 그대로 유지하고 신규 cap 필드만 추가.
spec/09_decision_flow.yaml과 runtime/active_artifact_manifest.yaml에 전 엔진 배선 완료.
governance/todo/v8_9_p{0,1,2,3}_adoption_plan.yaml에 각 단계 작업 추적 기록.

검증: validate_specs/validate_golden_coverage_100(100%)/validate_calibration_registry_v1/
validate_schema_model_generation_v1/validate_agents_shrink_v1 전부 PASS. golden test 53/53 PASS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 00:06:52 +09:00
kjh2064 aed1eae421 chore: 기준선 sha256 동기화 — sell_priority GAS 재배포 반영
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 00:48:25 +09:00
kjh2064 67799cd355 fix(gas): run_all()에 runSellPriority 단계 추가
기존: sell_priority 시트는 run_all() 완료 후 1분 지연 트리거(cacheAllViews)에서만 갱신
→ run_all() 직후 XLSX 내려받기 시 항상 stale 상태

수정: runDataFeed 완료 직후 runSellPriority를 명시적 단계로 추가
→ run_all() 완료 시점에 sell_priority 시트가 최신 데이터 반영

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 00:42:23 +09:00