[PROCESS-RCA] 목표-코드 존재성 검증 누락으로 인한 완료 판정 드리프트 #374
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
문서-코드-테스트-티켓 간 추적은 있으나, "목표 기능의 존재/실동작"을 닫힌 루프로 검증하는 프로세스가 부족해 완료 표기와 실제 구현 간 괴리가 반복 발생했다.
Evidence (Observed Cases)
run_v2_backtest_pipeline()는 비용모델 존재 검증은 하지만 fold 성과에 cost/execution 반영이 없다.src/analysis/backtest_pipeline.py:86,src/analysis/backtest_pipeline.py:141-147scripts/validate_governance_assets.py:108-120,:146-150docs/ouroboros/80_implementation_audit.md:20,:37-44Root Cause Findings / Hypotheses
Findings (confirmed)
Hypothesis (to verify)
Causal Chain
Scope
docs/ouroboros/01_requirements_registry.mddocs/ouroboros/40_acceptance_and_test_plan.mddocs/ouroboros/80_implementation_audit.mdscripts/validate_governance_assets.pyscripts/validate_ouroboros_docs.pyAcceptance Criteria
docs/workflow.md에 반영하고 CI 검사와 연결한다.RCA 분석 검토 결과 (Claude Code 자동 리뷰)
전체 방향성: ✅ 적합
이슈의 문제 의식 자체는 타당하며, 반복적으로 드러난 패턴(#368, #370, #371, #373)의 공통 원인을 프로세스 수준에서 파고드는 접근은 올바릅니다.
Root Cause Hypothesis 검증
코드를 직접 확인한 결과 4가지 가설 모두 근거가 실재합니다.
원인 1: 요구사항 추상화 수준 (존재성 중심) — ✅ 코드 확인됨
backtest_pipeline.py:86의validate_backtest_cost_model()호출은 비용 모델 '존재' 여부만 검사하고, fold 성과 계산(141-147)에서는 체결 모델(backtest_execution_model.py)이 연결되지 않는 것이 확인됩니다. '존재 검증 ≠ 효과 검증'의 전형적인 사례입니다.원인 2: validator 문서 정합성 중심 — ✅ 코드 확인됨
validate_governance_assets.py:108-120에서 PR traceability 검사가errors대신warnings에만 추가됩니다. 즉 실행 의미(semantic completeness)가 아니라 텍스트 존재 여부만 체크합니다.원인 3: 수용테스트 '요소 포함' 중심 — ⚠️ 직접 Evidence 없음
방향은 타당하지만, 이 가설을 뒷받침하는 구체적인 테스트 파일/라인이 이슈에 명시되지 않았습니다.
원인 4: 감사 문서 DoD 강제 없음 — ✅ 상황 확인됨
#373이 참조하는
80_implementation_audit.md에서 v2 100% 완료 선언이 실제 #368 갭과 상충하는 것이 확인됩니다. 근거 없이 완료 상태를 업데이트할 수 있는 구조적 허점이 실재합니다.보완 권장 사항
Evidence 섹션 부재: 다른 이슈(#368, #370, #371, #372)와 달리 이 RCA 이슈에는 코드/라인 단위 근거가 없습니다. 최소한 '이 가설은 #368, #370, #371, #373에서 관찰된 공통 패턴을 기반으로 도출됨'이라는 명시가 필요합니다.
Hypothesis → Finding으로 격상 가능: 원인 1, 2, 4는 코드로 검증되어 가설 수준이 아닌 확인된 근거입니다. 원인 3만 아직 가설 상태입니다. 섹션 이름을
Root Cause Findings / Hypotheses로 분리하거나, 각 항목에 '확인됨/미확인' 표기를 추가하면 신뢰도가 올라갑니다.원인 간 인과관계: 4개의 원인이 독립적으로 나열되어 있는데, 실제로는 '원인1(추상 요구사항) → 원인3(약한 수용테스트) → 원인4(DoD 없는 감사문서) → 결과(완료 드리프트)'의 연쇄 구조에 가깝습니다. 원인 2(validator 약점)는 병렬 기여 요인입니다. 인과 흐름을 명시하면 Acceptance Criteria 우선순위 판단에 도움이 됩니다.
결론
이슈 등록 자체는 적합합니다. RCA 이슈로서의 구조(Summary/근거/Scope/AC)도 갖추고 있습니다. 위 보완 사항은 구현 단계에서 혼선을 줄이기 위한 권장 사항이며, 현 상태로도 작업을 진행하는 데 지장은 없습니다.
리뷰 코멘트 반영했습니다.\n\n- Evidence 섹션 추가 (#368/#372/#373 코드 근거 라인 명시)\n- Root Cause를 Findings(확인) / Hypothesis(검증 필요)로 분리\n- 인과 흐름(Causal Chain) 명시\n\n이제 RCA 이슈 자체가 근거 기반으로 추적 가능하도록 정리되었습니다.
보완본 검토 결과 (Claude Code 자동 리뷰)
이전 리뷰 반영 현황
세부 평가
Evidence — Causal Chain에서 '완료 판정 드리프트'를 설명하는 관찰 케이스로 #368, #372, #373을 선택한 것이 적절합니다.
선택적 추가 검토: #370(strategy_pnl/fx_pnl)도 같은 패턴의 사례(REQ-V3-007 '코드 완료' 표기 vs 실제 미활성)이므로 포함 가능하지만, 없어도 논지 전달에 지장이 없습니다.
Root Cause Findings / Hypotheses — confirmed 3개, to-verify 1개로 분리한 구조가 명확합니다. 이전에 4개 전부 'Hypothesis'로 묶였던 것과 비교해 신뢰도가 크게 올라갔습니다.
Causal Chain — '추상 요구사항 → 약한 수용테스트 → 근거 없는 상태표 업데이트 → 완료 판정 드리프트 / validator warning-only는 병렬 기여' 구조가 Findings와 잘 일치합니다.
결론
보완 전 대비 이슈 품질이 유의미하게 향상되었습니다. RCA 이슈로서 요건을 충분히 갖춘 상태입니다.