Commit Graph

68 Commits

Author SHA1 Message Date
kjh2064 ebbd42e4e0 feat(wbs): add execution plan validator and wiring
CI Workflow Lint / validate-ci-workflow-lint (push) Failing after 14s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 24s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-13 00:01:07 +09:00
kjh2064 fbb35c5296 feat(ci): wire dotnet migration roadmap validator
CI Workflow Lint / validate-ci-workflow-lint (push) Failing after 14s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 24s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-12 23:51:32 +09:00
kjh2064 2701f7bba5 fix(ci): skip non-ci reproducible wbs tasks
CI Workflow Lint / validate-ci-workflow-lint (push) Failing after 14s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 21s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1m46s
2026-07-12 23:00:35 +09:00
kjh2064 0f4e589cf1 fix(ci): guard wbs verdict coverage
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
CI Workflow Lint / validate-ci-workflow-lint (push) Failing after 8s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-12 22:51:13 +09:00
kjh2064 7e0d3ad5b0 fix(ci): avoid postgres host port collision
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1m41s
2026-07-12 22:45:54 +09:00
kjh2064 ea9614be13 feat(qe-m3-05): complete scores frontend DOM verification E2E test and fix Gitea CI migration sequence
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 12s
2026-07-12 22:17:45 +09:00
kjh2064 f698880aaa build(harness): integrate TreatWarningsAsErrors into all csproj files and prioritize dotnet tests in CI
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 12s
2026-07-12 21:57:36 +09:00
kjh2064 b0c9776601 feat(qe-m3-01): implement GetBarsAsOf with lookahead bias prevention and complete unit tests
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 9s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
2026-07-12 21:46:38 +09:00
kjh2064 5589a0432b feat(collection): wire KIS collection end-to-end, add price-history pipeline (WBS QE-M0/M1/M2)
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 56s
Critical re-review of the QuantEngine WBS evidence system found several
regressions of the "no fake gates" discipline established by M0, plus a
still-unwired M1 collection path. This closes 10 more WBS tasks
(QE-M1-01..06, QE-M2-01/02/04/05/06 — see spec/60_quant_engine_wbs.yaml)
with real, gate-verified evidence (18/34 total).

M1 — real KIS data now lands in PostgreSQL end-to-end:
- SchedulerService: load ticker universe from GatherTradingData.json instead
  of a hardcoded array; fix a Hangfire scoped-service resolution bug.
- KisDataCollectionOrchestrator: restore logging on the lineage-event write
  path (was a bare `catch {}` swallowing all failures silently); persist
  daily OHLCV bars into quantengine.price_history_daily per run.
- Verified live: POST /api/collection/run -> Hangfire -> orchestrator ->
  KIS mock API -> PostgreSQL, with Playwright DOM/API parity evidence.

M2 — historical price-history pipeline:
- CollectionRepository: SavePriceHistoryDailyAsync (idempotent upsert),
  GetPriceHistorySummaryAsync (per-ticker aggregation) + a new
  DateOnlyTypeHandler registered globally, since Dapper has no built-in
  System.DateOnly support in either direction (write threw
  NotSupportedException, read threw a constructor-mismatch
  InvalidOperationException — found by exercising both paths live).
- tools/validate_price_history_integrity_v1.py: gap-freeness (vs KIS
  trading calendar) + price-sanity gate over collected history.
- Admin Collection page: new "히스토리 현황" summary table +
  GET /api/collection/history-summary, with Playwright evidence.

Governance/gate fixes:
- validate_market_time_series_schema_v1.py mislabeled its own output
  "runtime_database_query": "DATA_GATED" despite never opening a DB
  connection (pure file/regex check) — relabeled "check_scope":
  "STATIC_STRUCTURAL_ONLY" and wired the node into the release DAG so it
  isn't only reachable from ci.yml, matching every other validator.
  Live-data authority for the same claim stays with QE-M2-01's pg_query
  gate (spec/60), documented in spec/64.
- Fixed a WBS log_pattern check (QE-M1-06) that couldn't match its own
  multi-line target; loosened two depends_on edges (QE-M1-05/06,
  QE-M2-04/05) that encoded "needs X verified" when the real requirement
  was only "needs X's code merged."
- Discovered and fixed admin-pages.spec.ts logging in with the wrong
  seeded password (admin/admin instead of admin/quant123!, per CLAUDE.md)
  — every test in that suite had been silently failing at the login step.

Deferred: QE-M2-03 (2-year backfill) — the KIS mock/VTS token endpoint
started returning 403 after the first successful call this session; looks
like a token-issuance rate limit or credential issue on KIS's side, not a
code defect. Backfilling at scale right now would just generate more 403s,
so left QE-M2-03 PENDING pending KIS account/console verification.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-12 21:07:53 +09:00
kjh2064 ee0787683b ci: package only generated report artifacts
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-12 12:55:42 +09:00
kjh2064 f8d93de299 ci: emit contract-shaped missing-data artifacts
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1m37s
2026-07-12 12:53:28 +09:00
kjh2064 d49e45b308 ci: install dotnet sdk before core tests
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1m23s
2026-07-12 12:36:02 +09:00
kjh2064 15b9840204 ci: regenerate completed WBS verdicts
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 54s
2026-07-12 12:30:44 +09:00
kjh2064 cc001fa263 test: verify market time series schema contract
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 54s
2026-07-12 12:20:44 +09:00
kjh2064 34991eca2d ci: enforce schema model evidence generation
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 16s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 55s
2026-07-12 12:13:02 +09:00
kjh2064 c25e3bee7a ci: install pytest for parallel storage checks
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 54s
2026-07-12 11:39:31 +09:00
kjh2064 129e2ec2d7 ci: parallelize independent validation jobs
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 11s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 22s
2026-07-12 11:14:58 +09:00
kjh2064 4cd1cab466 ci: export isolated Python dependencies
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 20s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Has been skipped
2026-07-12 11:12:19 +09:00
kjh2064 be043a85e3 ci: remove runner venv dependency
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 10s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Has been skipped
2026-07-12 11:11:55 +09:00
kjh2064 7f0c9b9a27 ci: harden Python environment bootstrap
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 7s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Has been skipped
2026-07-12 11:06:07 +09:00
kjh2064 42d45e85fb ci: validate main pushes automatically
Validators (Pull Requests Only) / validate-core (push) Failing after 8s
Validators (Pull Requests Only) / validate-ui-and-storage (push) Has been skipped
2026-07-12 11:03:52 +09:00
kjh2064 e7d1069222 feat: add quant engine WBS verification harness 2026-07-12 10:58:22 +09:00
kjh2064 4023fff0f2 chore: Phase 3a - CI pipeline to PR-only mode
- Removed 'push' trigger from ci.yml
- Now runs validators only on pull_requests
- Main branch validation handled by merge-to-main.yml
- Reduces duplicate validation runs on push

Next:
- Phase 3b: Group validators for parallel execution
- Phase 4: Secret management validation
- Phase 5: Monitoring & metrics

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-11 20:39:01 +09:00
kjh2064 79f4a45b98 fix(ci): change Synology venv path to home dir and setup python step in deploy workflow
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 8s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Snapshot Admin Deployment / build-and-deploy (push) Failing after 45s
Deploy to Production / Build Release Package (push) Successful in 1m40s
Deploy to Production / Deploy to Production Server (push) Failing after 16s
Deploy to Production / Post-Deployment Checks (push) Has been skipped
2026-06-29 12:15:31 +09:00
kjh2064 78564c5b41 fix(ci): ensure Temp directory and dummy packet json exist to avoid test crashes
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 8s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Deploy to Production / Build Release Package (push) Failing after 19s
Deploy to Production / Deploy to Production Server (push) Has been skipped
Deploy to Production / Post-Deployment Checks (push) Has been skipped
Snapshot Admin Deployment / build-and-deploy (push) Failing after 34s
2026-06-29 11:38:49 +09:00
kjh2064 84ef22e148 fix(ci): replace hardcoded git checkout clone commands with standard actions/checkout
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 8s
Deploy to Production / Build Release Package (push) Failing after 16s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Deploy to Production / Deploy to Production Server (push) Has been skipped
Deploy to Production / Post-Deployment Checks (push) Has been skipped
Snapshot Admin Deployment / build-and-deploy (push) Failing after 33s
2026-06-29 11:15:23 +09:00
kjh2064 99c4885692 deploy workflow and docs
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 4s
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Failing after 6s
Quant Engine CI/CD Pipeline / validate-core (pull_request) Failing after 2m16s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been skipped
2026-06-26 18:07:13 +09:00
kjh2064 9e6e2ded2f feat: .NET 운영 리포트 렌더러와 CI 경로 전환
- operational_report.json/md와 final_decision_packet_v4 생성 경로를 .NET으로 전환했습니다.
- CI, 운영 게이트, 릴리스 DAG, 대시보드의 운영 진입점을 새 경로로 정렬했습니다.
- legacy Python 렌더러는 비운영으로 명시했습니다.
2026-06-26 14:18:03 +09:00
kjh2064 c1e84a387c chore: 워크플로우 및 클라우드 가이드 내 잔여 시놀로지(Synology) 참조 제거
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Failing after 4s
Quant Engine CI/CD Pipeline / validate-core (pull_request) Failing after 2m14s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been skipped
2026-06-26 11:12:50 +09:00
kjh2064 1690510999 Merge pull request '[CHORE] Gitea CI 워크플로우 runs-on 라벨 수정' (#5) from feature/ci-runner-update into main
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 2m14s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Reviewed-on: http://178.104.200.7/kjh2064/QuantEngineByItz/pulls/5
2026-06-25 15:27:16 +09:00
kjh2064 7cce836cc6 chore(ci): update workflow runs-on label to ubuntu-latest
Quant Engine CI/CD Pipeline / validate-core (pull_request) Failing after 2m33s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been cancelled
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Failing after 37s
2026-06-25 15:24:57 +09:00
kjh2064 27730704ae test(validation): 토큰 위생 및 플랫폼 통합 검증 체계 고도화
Snapshot Admin Web Validation / validate-snapshot-admin-smoke (push) Has been cancelled
Snapshot Admin Web Validation / validate-snapshot-admin-full (push) Has been cancelled
Quant Engine CI/CD Pipeline / validate-core (pull_request) Has been cancelled
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been cancelled
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Has been cancelled
2026-06-24 18:06:05 +09:00
kjh2064 2af3681fb9 WBS-7.9: keep push CI on core validation only 2026-06-22 01:47:57 +09:00
kjh2064 cfcf65f822 WBS-7.9: split CI core and ui/storage validation jobs 2026-06-22 01:42:38 +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 3002149fce fix: dry-run mock KIS validation in workflows 2026-06-21 23:22:22 +09:00
kjh2064 610b9b1330 fix: reinstall workflow deps on cached venvs 2026-06-21 23:17:57 +09:00
kjh2064 febd85d95e fix: synology py38 compatibility and KIS validation deps 2026-06-21 23:09:55 +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 0823d1b5a8 fix: CI venv hash-cache + sector exposure renderer + auditor registration
- ci.yml: venv 해시 기반 캐싱 적용 (validate_specs.py md5 기준), requirements.txt 불필요 스텝 제거
- harness_coverage_auditor.py: sector_trend_analysis.py, etf_representative_monitor.py PY_FILES 등록
- render_operational_report.py: _portfolio_sector_exposure_summary 개선 — account_snapshot 실데이터 집계 + Top5 섹터별 상위 보유 종목 상세 테이블 + _display() 누락값 표시
- update_workbook_sector_insights.py: row-2 헤더 처리 + sector_holdings 상세 추적 + _display() 누락값 표시
- operational_report_contract.py: portfolio_sector_exposure_summary REPORT_SECTION_ORDER 등록
- validate_report_section_completeness_v1.py: 동일 섹션 추가
- build_architecture_boundaries_v2.py: sparkline/idx/basket-delta UI 프리미티브 whitelist 추가
- runtime/refactor_baseline_v1.yaml: 엔트로피 베이스라인 갱신 (1692 files, gate=PASS)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 21:16:32 +09:00
kjh2064 ea172633bb fix(ci): Notify PR Result 에서 always() 제거 — act_runner v0.2.11 job failure 오보 수정
Synology act_runner v0.2.11에서 push 이벤트 시
'if: always() && github.event_name == pull_request'
조건이 스텝을 failure로 잘못 처리해 job conclusion이 failure로 오보됨.

실제 CI는 모든 검증 단계 통과(Job succeeded) 했으나 API가 failure 반환.
always() 제거로 push 이벤트에서 스텝이 정상적으로 skip 처리됨.
PR 이벤트에서만 알림 발송 (실패 시 알림 없음은 허용 가능한 트레이드오프).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 09:57:34 +09:00
kjh2064 d20e6dce35 ci: Validate Behavioral Coverage 스텝 제거
B03(run_formula_golden_cases_v2.py, numpy 필요)과
B04(run_gas_golden_parity.js, Node.js 필요)의 결과물이
CI 환경(ARMv7l, numpy 불가)에 존재하지 않아 항상 FAIL.
로컬에서만 실행 가능한 스텝이므로 CI에서 제거.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 22:37:48 +09:00
kjh2064 fb8833b66e ci: node_modules 영구 캐시 추가 (package-lock.json 해시 기반)
매 CI 실행마다 npm install 5분 소요 문제 해결:
- /volume1/gitea/node_cache/<lock-hash>/node_modules 에 캐시 저장
- 캐시 히트 시 symlink로 즉시 연결 (~1초)
- package-lock.json 변경 시에만 재설치
- 오래된 캐시 자동 정리 (최근 3개 유지)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 22:12:48 +09:00
kjh2064 30f6814fcf ci: ARMv7l 제약 반영 — 순수Python 검증 게이트로 재편
DS216j 32-bit ARM 환경 제약:
- numpy/pandas: 공식 휠 없음(PyPI/piwheels/conda-forge 모두)
- gcc: 미설치, 소스 빌드 불가

CI 역할 재정의:
- 코드 구조 검증 게이트 (pyyaml, openpyxl만 설치)
- validate_specs / formula_registry / golden_coverage / behavioral_coverage / harness_auditor
- numpy 의존 스텝(ingest, release_dag, bundle) 제거 → 로컬 실행

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 21:54:10 +09:00
kjh2064 393e4df27c ci: numpy/pandas ARM 설치를 micromamba(conda-forge)로 전환
32-bit ARM(armv7l) + Python 3.8 조합은 공식 pip 휠 없음:
- PyPI: manylinux aarch64만 제공 (64-bit)
- piwheels: cp38 armv7l 휠 없음 (cp311+ 만 제공)
- 소스 빌드: gcc 미설치로 불가

해결: micromamba(linux-32) + conda-forge
- conda-forge는 armv7l 네이티브 바이너리 제공
- /volume1/gitea/micromamba, /volume1/gitea/conda_py38 영구 저장

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 21:50:36 +09:00
kjh2064 d5121753e3 ci: ARM venv 설치 piwheels 사용 및 설치 완료 체크 강화
- numpy 먼저 설치 → pandas oldest-supported-numpy 1.17.3 소스빌드 방지
- piwheels.org ARM 사전빌드 휠로 소스 컴파일 없이 설치
- 버전 핀 완화: numpy>=1.20 / pandas>=1.5 (ARM 휠 가용 버전 수용)
- venv 체크: pip 존재 여부 → numpy/pandas import 가능 여부로 변경

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 21:39:31 +09:00
kjh2064 acc279d69e ci: Configure Runtime Paths 스텝 내 PATH 인라인 export 추가
npm shebang(#!/usr/bin/env node)이 현재 스텝 PATH를 참조하므로
$GITHUB_PATH 외에 export PATH=/usr/local/bin:$PATH 인라인 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 21:34:31 +09:00
kjh2064 1fda3ca0d2 ci: 시놀로지 설치 경로 직접 참조로 변경 (설치 단계 제거)
- Python: /usr/bin/python3 (3.8.12) 고정 사용
- Node.js: /usr/local/bin 을 PATH에 추가 (v18.18.2 appstore 설치)
- Python deps: /volume1/gitea/python_venv 영구 venv로 최초 1회만 설치
- 이후 CI 실행은 venv 재사용 → pip 재설치 단계 불필요

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 21:27:25 +09:00
kjh2064 b6ef6dfd74 ci: numpy 빌드 호환성을 위해 Cython<3.0 으로 버전 제한 추가 2026-06-13 20:56:27 +09:00
kjh2064 d8a8917c55 ci: 파이프라인에서 인라인 stub 생성을 제거하고 환경 레벨 가이드로 우회 2026-06-13 20:46:51 +09:00