--- description: 버그=딥다이브 후 근본원인·3안 제시 · 추측 금지 · 타전략 교차검증 alwaysApply: true --- # 가설 검증 · 버그 딥다이브 · 전략 교차검증 이 대화에서 실제로 낭비된 패턴: **가설만 말하고 값 패치로 끝내기**, **추측성 대안 나열**, **한 전략만 보고 타전략 동일 이슈 미검사**. ## 1. 추측·가설로 답변 금지 - “아마 ~일 것”, “~로 보인다”만으로 **근본원인이라고 단정·보고하지 말 것**. - 가설을 세웠으면 **검증 단계까지 끝낸 뒤**에만 답한다. 1. 증상 → 가설 목록 (짧게) 2. **증거로 검증** (DB·job 메타·저널·로그·코드 경로 실측) 3. 기각된 가설 / 확정된 원인 분리 4. 그다음에야 수정·운영 조치 - 검증에 쓴 증거(테이블·파일·시각·수치)를 보고에 **짧게** 남긴다. 없으면 “미확인”이라고 쓰고 단정 금지. - CRITICAL §5(근본원인 먼저)와 동일 정신. 값만 고치고 “고쳤다”고 하지 말 것. ## 2. 버그 발견 시 — 함수 추적 딥다이브 → 근본 3안 (필수) 버그·이상 수치·정합 깨짐을 발견하면 **즉시 패치하지 말고** 아래를 끝낸 뒤 보고한다. **오래 걸려도 된다.** 짧은 추측 턴을 여러 번 돌리는 토큰 낭비를 금지하고, **한 번에 구석구석 분석**한다. ### 2-1. 분석 (코드 근거 없이 대안 금지) 1. 증상 진입점(로그 시그니처·함수명·콜사이트)을 확정한다. 2. 해당 함수를 **호출 체인 따라** 읽는다 (호출자 → 피호출 → 공유 헬퍼/캐시/DB/WS). 3. 분기·기본값·env·None/빈값·재시도·락·전략별 분기까지 **구석구석** 대조한다. 4. 실측 증거(코드 라인·로그·DB/스키마)로 **근본원인 1개**를 확정한다. 미확정이면 “미확인” + 다음에 볼 경로만 적고 **대안·수정 금지**. ### 2-2. 보고 — 근본적인 대안 정확히 3개 근본원인 확정 **후에만**, 땜빵이 아닌 **근본 해결안 3개**를 제시한다. | 안 | 내용 (필수) | |----|-------------| | 대안 A/B/C | 무엇을 어디서 고치는지 (파일·함수) | | 각 안 | 왜 근본원인에 닿는지 · 실매/백테/타전략 부작용 · 리스크 | | 추천 | 3안 중 1개를 고르고 이유 1~2문장 | - **금지**: 코드 미추적 추측 대안, “일단 값만 바꾸기/재시도 늘리기/±1 보정” 류 증상 가리기, 근거 없는 4안 이상 나열. - **필수**: 선보고 → 사용자 승인 후 수정 (핵심 매매/인프라는 `.cursorrules` 선수정 원칙과 동일). ## 3. 한 전략 수정·사고 조사 시 → 타전략 교차검증 (필수) 전략 A(꼬리/모멘텀/돌파/스캘핑 등)에서 버그·잘못된 apply·단위·UI를 찾거나 고쳤으면, **보고 전에** 같은 종류의 위험이 B·C에도 있는지 검사한다. | 사고 유형 | 교차로 볼 것 | |-----------|----------------| | Optuna `mode`/`learn`/`gated` 적용 | 최근 `logs/optuna_web_jobs/*.json` 의 `applied_source` · config_* 스냅샷 | | %↔분율 변환 | 해당 전략 `apply_params_to_db` + 웹 `pct_ui` | | 후처리/호가/휩쏘 패치 | 전략별 `build_upto_env_patch` 지원 여부 | | 웹 폼·summary 키 | 국장 대응 탭 동일 UX (해외는 domestic-port 룰) | - “스캘만 문제”라고 **교차 없이** 말하지 말 것. - 타전략이 정상이면 **검사한 증거**(예: 마지막 apply=gated#1, live 값=trial params)를 한 줄씩 적는다. - 타전략도 동일/유사면 **잔여 위험**으로 명시하고, 사용자 승인 없이 일괄 값 패치하지 말 것. ## 4. Optuna 적용 추적 (감사) - HTTP access 로그만으로는 body(`source=mode`)가 안 남을 수 있음. - 1차 추적: `logs/optuna_web_jobs/.json` → `applied_at` / `applied_source` / `applied_rank` / `applied_trial` / `applied_upto` - 2차: `config_*` 행 `created_at` + `optuna_study_result.payload_json` 의 `mode_combo` / `results_gated` 수치 대조 - 파일 `results/*.json` 은 복사본. **DB `optuna_study_result` + job 메타**를 우선.