---
name: verify-regenerated
description: 재생성된 코드에 대한 회귀 테스트 및 성능 검증 - 자동 실행
type: core
user-invocable: false
---

# 재생성 코드 검증 (Verify Regenerated)

[verify-regenerated 스킬 활성화 - 재생성된 코드에 대한 자동 회귀 테스트 및 성능 검증]

## 목표

명세 기반으로 재생성된 코드에 대해 자동으로 회귀 테스트를 실행하고 기존 코드와 성능을 비교함.
테스트 통과/실패 결과와 성능 벤치마크를 종합하여 검증 리포트를 생성함.

## 활성화 조건

- 코드 재생성 완료 후 자동으로 실행됨
- 사용자가 "코드 검증", "테스트 실행", "verify-regenerated" 명령 시
- sync-spec, resolve-conflict 등의 스킬 완료 후 자동 호출

## 워크플로우

### Phase 1: 회귀 테스트 → Agent: verification-engineer (`/oh-my-claudecode:ultraqa` 활용)

- **TASK**: 재생성 코드에 대해 회귀 테스트 자동 실행
- **EXPECTED OUTCOME**: 모든 테스트 결과 (통과/실패)와 상세 리포트
- **MUST DO**: 
  - 테스트 명령 자동 감지 (package.json의 scripts, pytest.ini, Makefile 등)
  - Unit Test, Integration Test, End-to-End Test 순차 실행
  - 각 테스트별 실행 시간과 결과 수집
  - 실패한 테스트의 상세 에러 메시지 수집
- **MUST NOT DO**: 테스트 실패를 무시하고 성공으로 처리
- **CONTEXT**: 재생성된 파일 목록, 프로젝트 테스트 설정

### Phase 2: 성능 비교 → Agent: verification-engineer (`/oh-my-claudecode:research` 활용)

- **TASK**: 기존 코드 vs 재생성 코드 간 성능 벤치마크 실행
- **EXPECTED OUTCOME**: 응답 시간, 처리량, 메모리 사용량 비교 데이터
- **MUST DO**: 
  - 동일한 입력 데이터로 기존 코드와 재생성 코드 성능 측정
  - 응답 시간, 처리량(TPS), 에러율 측정
  - 메모리 사용량과 CPU 사용률 모니터링
  - 통계적 유의성 확보를 위해 다회 실행
- **MUST NOT DO**: 의미 없는 성능 지표 수집이나 부정확한 측정
- **CONTEXT**: 재생성 전후 코드, 성능 테스트 시나리오

### Phase 3: 검증 결과 보고 (`/oh-my-claudecode:ralph` 활용)

종합적인 검증 리포트를 생성하고 .omc/verification-report.json에 저장:

```json
{
  "verification_id": "verify-20240101-170000",
  "timestamp": "2024-01-01T17:00:00Z",
  "regenerated_files": [
    "src/auth/session.py",
    "src/payment/gateway.py"
  ],
  "test_results": {
    "unit_tests": {
      "total": 45,
      "passed": 43,
      "failed": 2,
      "execution_time": "12.5s",
      "failures": [
        {
          "test": "test_session_expiry_edge_case",
          "error": "AssertionError: Expected 24, got 72"
        }
      ]
    },
    "integration_tests": {
      "total": 12,
      "passed": 12,
      "failed": 0,
      "execution_time": "45.2s"
    }
  },
  "performance_comparison": {
    "src/auth/session.py": {
      "response_time": {
        "before": "15ms",
        "after": "12ms",  
        "improvement": "20%"
      },
      "memory_usage": {
        "before": "2.1MB",
        "after": "1.8MB",
        "improvement": "14%"
      }
    }
  },
  "overall_status": "partial_success",
  "recommendations": [
    "Unit test 실패 2건을 수정해야 합니다",
    "성능은 전반적으로 개선되었습니다"
  ]
}
```

## 출력 형식

### 검증 완료 리포트
```
🧪 재생성 코드 검증 완료
📅 실행: 2024-01-01 17:00
🔍 검증 대상: 5개 파일

📊 회귀 테스트 결과:

✅ Unit Tests: 43/45 통과 (95.6%) - 12.5초
❌ 실패 2건:
  - test_session_expiry_edge_case: 예상값 24, 실제값 72
  - test_payment_validation: NullPointerException

✅ Integration Tests: 12/12 통과 (100%) - 45.2초
✅ Build Test: 성공 - 8.3초

📈 성능 비교 결과:

🚀 src/auth/session.py:
  응답시간: 15ms → 12ms (20% 향상)
  메모리: 2.1MB → 1.8MB (14% 향상)
  처리량: 850 TPS → 950 TPS (12% 향상)

🚀 src/payment/gateway.py:
  응답시간: 45ms → 38ms (16% 향상)  
  메모리: 5.2MB → 4.8MB (8% 향상)
  에러율: 0.2% → 0.1% (50% 향상)

📋 종합 평가: 부분 성공 ⚠️
✅ 성능: 전반적으로 개선됨
❌ 테스트: 2건 실패로 수정 필요

🛠️ 권장사항:
1. Unit test 실패 2건 즉시 수정
2. session.py의 만료 시간 로직 검토 필요
3. 수정 후 재검증 실행

다음 단계:
[F] 실패 테스트 상세 보기  [R] 재검증 실행  [A] 수정 후 승인  [B] 이전 버전 롤백
```

## 테스트 명령 자동 감지 로직

### 지원 테스트 프레임워크
```javascript
// package.json
"scripts": {
  "test": "jest",
  "test:unit": "jest --testPathPattern=unit",
  "test:integration": "jest --testPathPattern=integration"
}
```

```python  
# pytest.ini, setup.cfg, pyproject.toml
[tool.pytest.ini_options]
testpaths = ["tests"]
```

```makefile
# Makefile
test:
	pytest tests/
	
test-unit:
	pytest tests/unit/
```

### 성능 벤치마크 구현
```python
# 성능 측정 예시
import time
import psutil
import statistics

def benchmark_function(func, inputs, iterations=10):
    times = []
    memory_before = psutil.Process().memory_info().rss
    
    for _ in range(iterations):
        start = time.perf_counter()
        result = func(*inputs)
        end = time.perf_counter()
        times.append(end - start)
    
    memory_after = psutil.Process().memory_info().rss
    
    return {
        'avg_time': statistics.mean(times),
        'memory_delta': memory_after - memory_before,
        'result': result
    }
```

## MUST 규칙

| # | 규칙 |
|---|------|
| 1 | 모든 재생성 코드에 대해 자동으로 회귀 테스트 실행 |
| 2 | 테스트 실패 시 상세한 에러 정보와 수정 방안 제공 |
| 3 | 기존 코드와 재생성 코드의 성능을 동일 조건에서 비교 |
| 4 | 검증 결과를 .omc/verification-report.json에 구조화하여 저장 |
| 5 | 통계적 유의성 확보를 위해 성능 테스트를 다회 실행 |

## MUST NOT 규칙

| # | 금지 사항 |
|---|----------|
| 1 | 테스트 실패를 무시하고 검증 성공으로 처리하는 것 |
| 2 | 성능 비교 시 다른 환경 조건에서 측정하는 것 |
| 3 | 검증 과정에서 원본 코드나 재생성 코드를 수정하는 것 |
| 4 | 부정확하거나 의미 없는 성능 지표를 수집하는 것 |
| 5 | 검증 실패 시 자동으로 코드를 롤백하는 것 (사용자 판단 필요) |

## 검증 체크리스트

- [ ] 재생성된 모든 파일에 대해 회귀 테스트가 실행되었는가?
- [ ] 테스트 명령이 프로젝트 설정에서 올바르게 감지되었는가?
- [ ] 실패한 테스트에 대해 상세한 에러 정보가 수집되었는가?
- [ ] 성능 비교가 동일한 조건에서 수행되었는가?
- [ ] 응답 시간, 메모리 사용량, 처리량이 모두 측정되었는가?
- [ ] 검증 결과가 .omc/verification-report.json에 저장되었는가?
- [ ] 사용자에게 구체적인 다음 단계 옵션이 제공되었는가?
- [ ] 종합 평가(성공/부분성공/실패)가 정확히 판정되었는가?