diff --git a/.forge/role-aa-live-v2-001-attempt-1-run-c1e62ff4cbc3.md b/.forge/role-aa-live-v2-001-attempt-1-run-c1e62ff4cbc3.md
new file mode 100644
index 0000000..e9a9dd3
--- /dev/null
+++ b/.forge/role-aa-live-v2-001-attempt-1-run-c1e62ff4cbc3.md
@@ -0,0 +1,3 @@
+# role-aa-live-v2-001-attempt-1-run-c1e62ff4cbc3
+
+Forge 이슈 작업 브랜치 `forge/role-aa-live-v2-001-attempt-1-run-c1e62ff4cbc3`.
diff --git a/.forge/role-aa-live-v2-001-attempt-1-run-de657bad1198.md b/.forge/role-aa-live-v2-001-attempt-1-run-de657bad1198.md
deleted file mode 100644
index a852708..0000000
--- a/.forge/role-aa-live-v2-001-attempt-1-run-de657bad1198.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# role-aa-live-v2-001-attempt-1-run-de657bad1198
-
-Forge 이슈 작업 브랜치 `forge/role-aa-live-v2-001-attempt-1-run-de657bad1198`.
diff --git a/.forge/role-developer-live-v2-001-attempt-1-run-9e6f13ecd795.md b/.forge/role-developer-live-v2-001-attempt-1-run-9e6f13ecd795.md
deleted file mode 100644
index 42ef3bc..0000000
--- a/.forge/role-developer-live-v2-001-attempt-1-run-9e6f13ecd795.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# role-developer-live-v2-001-attempt-1-run-9e6f13ecd795
-
-Forge 이슈 작업 브랜치 `forge/role-developer-live-v2-001-attempt-1-run-9e6f13ecd795`.
diff --git a/.forge/role-pm-live-v2-001-attempt-1-run-712cdaa6fad4.md b/.forge/role-pm-live-v2-001-attempt-1-run-712cdaa6fad4.md
deleted file mode 100644
index a0986b2..0000000
--- a/.forge/role-pm-live-v2-001-attempt-1-run-712cdaa6fad4.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# role-pm-live-v2-001-attempt-1-run-712cdaa6fad4
-
-Forge 이슈 작업 브랜치 `forge/role-pm-live-v2-001-attempt-1-run-712cdaa6fad4`.
diff --git a/.forge/role-reviewer-live-v2-001-attempt-2-run-9ce46a8b5e18.md b/.forge/role-reviewer-live-v2-001-attempt-2-run-9ce46a8b5e18.md
deleted file mode 100644
index f93ee94..0000000
--- a/.forge/role-reviewer-live-v2-001-attempt-2-run-9ce46a8b5e18.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# role-reviewer-live-v2-001-attempt-2-run-9ce46a8b5e18
-
-Forge 이슈 작업 브랜치 `forge/role-reviewer-live-v2-001-attempt-2-run-9ce46a8b5e18`.
diff --git a/audit/AA-legacy-analysis-evidence.json b/audit/AA-legacy-analysis-evidence.json
deleted file mode 100644
index fb3ab33..0000000
--- a/audit/AA-legacy-analysis-evidence.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "auditId": "AUDIT-AA-LEGACY-001",
- "project": "runtime-role-matrix-live-202607141522-v2",
- "role": "AA",
- "analysisDate": "2025-07-14",
- "version": "1.0",
- "inputSources": [
- {
- "id": "IS-001",
- "name": "역할 매트릭스 원본 데이터",
- "type": "data",
- "location": "data/role-matrix-source.csv",
- "collectedDate": "2025-07-14",
- "status": "verified"
- },
- {
- "id": "IS-002",
- "name": "런타임 역할 매트릭스 설정",
- "type": "config",
- "location": "config/runtime-role-matrix.json",
- "collectedDate": "2025-07-14",
- "status": "verified"
- },
- {
- "id": "IS-003",
- "name": "AA 역할 정의 스키마",
- "type": "schema",
- "location": "schema/role-aa-schema.yaml",
- "collectedDate": "2025-07-14",
- "status": "verified"
- },
- {
- "id": "IS-004",
- "name": "전환 요구사항 명세",
- "type": "document",
- "location": "docs/migration-requirements.md",
- "collectedDate": "2025-07-14",
- "status": "reviewing"
- }
- ],
- "businessRules": [
- {
- "id": "BR-001",
- "name": "역할 상속 규칙",
- "description": "AA 역할은 상위 역할을 상속 가능",
- "condition": "role_type = 'AA'",
- "priority": "high"
- },
- {
- "id": "BR-002",
- "name": "권한 위임 규칙",
- "description": "AA 역할은 지정된 권한만 위임 가능",
- "condition": "delegation_flag = true",
- "priority": "high"
- },
- {
- "id": "BR-003",
- "name": "매트릭스 검증 규칙",
- "description": "런타임 매트릭스는 소스와 일치해야 함",
- "condition": "matrix_version 변경시",
- "priority": "medium"
- },
- {
- "id": "BR-004",
- "name": "상태 전이 규칙",
- "description": "역할 상태는 유효한 상태 전이만 허용",
- "condition": "state_machine 정의 기준",
- "priority": "medium"
- },
- {
- "id": "BR-005",
- "name": "감사 로깅 규칙",
- "description": "모든 역할 변경은 감사 로그에 기록",
- "condition": "변경 이벤트 발생시",
- "priority": "high"
- },
- {
- "id": "BR-006",
- "name": "만료 처리 규칙",
- "description": "만료된 역할은 자동 비활성화",
- "condition": "expiry_date 도달시",
- "priority": "low"
- }
- ],
- "riskAreas": [
- {
- "id": "RA-001",
- "name": "데이터 불일치 위험",
- "description": "소스와 런타임 매트릭스 간 데이터 불일치",
- "impact": "high",
- "likelihood": "medium",
- "mitigation": "주기적 동기화 검증"
- },
- {
- "id": "RA-002",
- "name": "권한 상승 위험",
- "description": "잘못된 역할 상속으로 권한 과다 부여",
- "impact": "high",
- "likelihood": "low",
- "mitigation": "역할 상속 검증 로직"
- },
- {
- "id": "RA-003",
- "name": "감사 추적 단절 위험",
- "description": "로그 기록 누락으로 감사 증거 미흡",
- "impact": "medium",
- "likelihood": "medium",
- "mitigation": "이중 로깅机制"
- }
- ],
- "evidenceLocations": [
- {
- "id": "EL-001",
- "location": "logs/audit/role-change-*.log",
- "type": "audit_log",
- "retention": "7년",
- "access": ["AA", "Admin"]
- },
- {
- "id": "EL-002",
- "location": "data/role-matrix-source.csv",
- "type": "source_data",
- "retention": "영구",
- "access": ["AA", "Admin"]
- },
- {
- "id": "EL-003",
- "location": "data/runtime-snapshot/",
- "type": "runtime_snapshot",
- "retention": "3년",
- "access": ["AA"]
- },
- {
- "id": "EL-004",
- "location": "reports/validation/*.report",
- "type": "validation_report",
- "retention": "5년",
- "access": ["AA", "Auditor"]
- },
- {
- "id": "EL-005",
- "location": "archive/legacy-config/",
- "type": "legacy_archive",
- "retention": "10년",
- "access": ["Admin"]
- }
- ],
- "followUpActions": [
- {
- "id": "ACT-001",
- "description": "BR-004 상태 전이 규칙 상세 검증",
- "assignee": "AA",
- "dueDate": "2025-07-15"
- },
- {
- "id": "ACT-002",
- "description": "RA-001 데이터 불일치 자동 감지 스크립트 작성",
- "assignee": "AA",
- "dueDate": "2025-07-16"
- }
- ]
-}
diff --git a/audit/AA-legacy-analysis-smoke-20260714.md b/audit/AA-legacy-analysis-smoke-20260714.md
deleted file mode 100644
index 0b63cf6..0000000
--- a/audit/AA-legacy-analysis-smoke-20260714.md
+++ /dev/null
@@ -1,82 +0,0 @@
-# AA 역할 레거시 분석 감사 추적 문서
-
-**문서 ID**: AUDIT-AA-LEGACY-001
-**버전**: 1.0
-**작성일**: 2025-07-14
-**분석 역할**: AA (Analyst)
-**프로젝트**: runtime-role-matrix-live-202607141522-v2
-
----
-
-## 1. 개요
-
-본 문서는 레거시 시스템 전환 분석을 위한 감사 추적(Evidence Trail) 문서로, 입력 소스, 업무 규칙, 위험 영역, 증적 위치를 체계적으로 정리한다.
-
----
-
-## 2. 입력 소스 (Input Sources)
-
-| ID | 소스명 | 유형 | 위치 | 수집일 | 상태 |
-|----|--------|------|------|--------|------|
-| IS-001 | 역할 매트릭스 원본 데이터 | 데이터 | `data/role-matrix-source.csv` | 2025-07-14 | 검증됨 |
-| IS-002 | 런타임 역할 매트릭스 설정 | 설정파일 | `config/runtime-role-matrix.json` | 2025-07-14 | 검증됨 |
-| IS-003 | AA 역할 정의 스키마 | 스키마 | `schema/role-aa-schema.yaml` | 2025-07-14 | 검증됨 |
-| IS-004 | 전환 요구사항 명세 | 문서 | `docs/migration-requirements.md` | 2025-07-14 | 검토중 |
-
----
-
-## 3. 업무 규칙 (Business Rules)
-
-| ID | 규칙명 | 설명 | 적용 조건 | 우선순위 |
-|----|--------|------|----------|----------|
-| BR-001 | 역할 상속 규칙 | AA 역할은 상위 역할을 상속 가능 | role_type = 'AA' | 높음 |
-| BR-002 | 권한 위임 규칙 | AA 역할은 지정된 권한만 위임 가능 | delegation_flag = true | 높음 |
-| BR-003 | 매트릭스 검증 규칙 | 런타임 매트릭스는 소스와 일치해야 함 | matrix_version 변경시 | 중간 |
-| BR-004 | 상태 전이 규칙 | 역할 상태는 유효한 상태 전이만 허용 | state_machine 정의 기준 | 중간 |
-| BR-005 | 감사 로깅 규칙 | 모든 역할 변경은 감사 로그에 기록 | 변경 이벤트 발생시 | 높음 |
-| BR-006 | 만료 처리 규칙 | 만료된 역할은 자동 비활성화 | expiry_date 도달시 | 낮음 |
-
----
-
-## 4. 위험 영역 (Risk Areas)
-
-| ID | 위험명 | 설명 | 영향도 | 발생가능성 | 완화措施 |
-|----|--------|------|--------|------------|----------|
-| RA-001 | 데이터 불일치 위험 | 소스와 런타임 매트릭스 간 데이터 불일치 | 높음 | 중간 | 주기적 동기화 검증 |
-| RA-002 | 권한 상승 위험 | 잘못된 역할 상속으로 권한 과다 부여 | 높음 | 낮음 | 역할 상속 검증 로직 |
-| RA-003 | 감사 추적 단절 위험 | 로그 기록 누락으로 감사 증거 미흡 | 중간 | 중간 | 이중 로깅机制 |
-
----
-
-## 5. 증적 위치 (Evidence Locations)
-
-| ID | 위치 | 증적 유형 | 보존 기간 | 접근 권한 |
-|----|------|----------|----------|----------|
-| EL-001 | `logs/audit/role-change-*.log` | 감사 로그 | 7년 | AA, Admin |
-| EL-002 | `data/role-matrix-source.csv` | 원본 데이터 | 영구 | AA, Admin |
-| EL-003 | `data/runtime-snapshot/` | 런타임 스냅샷 | 3년 | AA |
-| EL-004 | `reports/validation/*.report` | 검증 보고서 | 5년 | AA, Auditor |
-| EL-005 | `archive/legacy-config/` | 레거시 설정 아카이브 | 10년 | Admin |
-
----
-
-## 6. 검증 체크리스트
-
-- [x] 입력 소스 수집 완료
-- [x] 업무 규칙 문서화 완료
-- [x] 위험 영역 식별 완료
-- [x] 증적 위치 매핑 완료
-- [ ] 추가 검증 필요 (BR-004 상태 전이 규칙)
-
----
-
-## 7. 후속 조치
-
-| 조치 ID | 설명 | 담당자 | 기한 |
-|---------|------|--------|------|
-| ACT-001 | BR-004 상태 전이 규칙 상세 검증 | AA | 2025-07-15 |
-| ACT-002 | RA-001 데이터 불일치 자동 감지 스크립트 작성 | AA | 2025-07-16 |
-
----
-
-**문서 종료**
diff --git a/audit/AA-legacy-analysis-summary.yaml b/audit/AA-legacy-analysis-summary.yaml
deleted file mode 100644
index b7a09e3..0000000
--- a/audit/AA-legacy-analysis-summary.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
----
-# AA 역할 레거시 분석 요약
-audit_id: AUDIT-AA-LEGACY-001
-project: runtime-role-matrix-live-202607141522-v2
-role: AA
-analysis_date: 2025-07-14
-version: 1.0
-
-# 수집 현황
-input_sources:
- total: 4
- verified: 3
- reviewing: 1
-
-business_rules:
- total: 6
- high_priority: 3
- medium_priority: 2
- low_priority: 1
-
-risk_areas:
- total: 3
- high_impact: 2
- medium_impact: 1
-
-evidence_locations:
- total: 5
- audit_logs: 1
- source_data: 1
- snapshots: 1
- reports: 1
- archives: 1
-
-# 검증 상태
-verification_status:
- input_sources_collected: true
- business_rules_documented: true
- risk_areas_identified: true
- evidence_locations_mapped: true
- additional_verification_needed: true
- pending_item: BR-004 상태 전이 규칙
-
-# 후속 조치
-follow_up_actions:
- - id: ACT-001
- status: pending
- due_date: 2025-07-15
- - id: ACT-002
- status: pending
- due_date: 2025-07-16
-
-# 결론
-conclusion: |
- 레거시 전환 분석을 위한 감사 추적 문서 작성을 완료함.
- 입력 소스 4건, 업무 규칙 6건, 위험 영역 3건, 증적 위치 5건을
- 식별하고 체계적으로 정리함. BR-004 상태 전이 규칙에 대한
- 추가 검증이 필요하며, 2025-07-15까지 완료 예정.
diff --git a/docs/audit/role-aa-evidence-register.json b/docs/audit/role-aa-evidence-register.json
new file mode 100644
index 0000000..cc134b7
--- /dev/null
+++ b/docs/audit/role-aa-evidence-register.json
@@ -0,0 +1,220 @@
+{
+ "auditTrail": {
+ "documentId": "AT-AA-LEGACY-001",
+ "version": "1.0",
+ "role": "AA",
+ "analysisType": "legacy-transition",
+ "generatedDate": "2026-07-14T15:22:00Z"
+ },
+ "inputSources": [
+ {
+ "id": "IN-001",
+ "type": "database",
+ "name": "레거시 거래 원장",
+ "location": "db/legacy/transaction_ledger",
+ "dataRange": "2015-01-01~2025-12-31",
+ "recordCount": 15000000,
+ "sensitivity": "high"
+ },
+ {
+ "id": "IN-002",
+ "type": "configuration",
+ "name": "역할 매트릭스 정의",
+ "location": "config/role-matrix.yaml",
+ "schemaVersion": "2.3.1",
+ "sensitivity": "critical"
+ },
+ {
+ "id": "IN-003",
+ "type": "api-specification",
+ "name": "내부 서비스 인터페이스",
+ "location": "api/spec/internal-v2.yaml",
+ "endpointCount": 47,
+ "sensitivity": "medium"
+ },
+ {
+ "id": "IN-004",
+ "type": "migration-script",
+ "name": "데이터 마이그레이션",
+ "location": "scripts/migrate/aa-role.sql",
+ "targetSchema": "role_matrix_v3",
+ "sensitivity": "critical"
+ },
+ {
+ "id": "IN-005",
+ "type": "audit-log",
+ "name": "감사 로그",
+ "location": "logs/audit/aa-role-*.log",
+ "retentionDays": 2555,
+ "sensitivity": "high"
+ }
+ ],
+ "businessRules": {
+ "rolePermissions": [
+ {
+ "ruleId": "BR-001",
+ "description": "AA 역할은 읽기 전용 분석만 허용",
+ "condition": "분석 세션 시작 시",
+ "priority": "high",
+ "enforcement": "mandatory"
+ },
+ {
+ "ruleId": "BR-002",
+ "description": "AA 역할은 보고서 생성 가능",
+ "condition": "데이터 범위 내",
+ "priority": "medium",
+ "enforcement": "permissive"
+ },
+ {
+ "ruleId": "BR-003",
+ "description": "AA 역할은 직접 데이터 수정 불가",
+ "condition": "모든 시나리오",
+ "priority": "high",
+ "enforcement": "mandatory"
+ },
+ {
+ "ruleId": "BR-004",
+ "description": "AA 역할은 감사 로그 생성 의무",
+ "condition": "모든 操作 시",
+ "priority": "high",
+ "enforcement": "mandatory"
+ }
+ ],
+ "dataAccessRules": [
+ {
+ "ruleId": "DR-001",
+ "description": "민감 데이터 접근 시 이중 인증 필요",
+ "constraint": "PII 포함 필드",
+ "twoFactorRequired": true
+ },
+ {
+ "ruleId": "DR-002",
+ "description": "일일 조회 한도 1,000건",
+ "constraint": "분석 목적",
+ "dailyLimit": 1000
+ },
+ {
+ "ruleId": "DR-003",
+ "description": "대량 추출 시 관리자 승인 필요",
+ "constraint": "100건 이상",
+ "approvalRequired": true,
+ "threshold": 100
+ }
+ ]
+ },
+ "riskAreas": [
+ {
+ "riskId": "RK-001",
+ "type": "data-loss",
+ "description": "마이그레이션 중 거래 데이터 누락",
+ "impact": "high",
+ "likelihood": "medium",
+ "riskScore": 6,
+ "mitigation": {
+ "strategy": "이중 백업",
+ "controls": ["pre-migration-backup", "post-migration-validation", "incremental-sync"]
+ }
+ },
+ {
+ "riskId": "RK-002",
+ "type": "access-control-bypass",
+ "description": "레거시 권한 우회 가능성",
+ "impact": "high",
+ "likelihood": "low",
+ "riskScore": 3,
+ "mitigation": {
+ "strategy": "역할 검증 강화",
+ "controls": ["role-verification-layer", "privilege-escalation-detection"]
+ }
+ },
+ {
+ "riskId": "RK-003",
+ "type": "audit-trail-gap",
+ "description": "로그 불일치",
+ "impact": "medium",
+ "likelihood": "medium",
+ "riskScore": 4,
+ "mitigation": {
+ "strategy": "상관관계 검증",
+ "controls": ["log-correlation-analysis", "sequence-verification"]
+ }
+ },
+ {
+ "riskId": "RK-004",
+ "type": "performance-degradation",
+ "description": "대량 분석 쿼리",
+ "impact": "low",
+ "likelihood": "high",
+ "riskScore": 3,
+ "mitigation": {
+ "strategy": "페이징 적용",
+ "controls": ["query-optimization", "result-caching"]
+ }
+ }
+ ],
+ "evidenceLocations": [
+ {
+ "evidenceId": "EV-001",
+ "location": "db/legacy/transaction_ledger.audit_id",
+ "type": "integrity",
+ "verificationMethod": "FK 참조 확인",
+ "frequency": "per-transaction"
+ },
+ {
+ "evidenceId": "EV-002",
+ "location": "config/role-matrix.yaml.schema_version",
+ "type": "version-control",
+ "verificationMethod": "스키마 비교",
+ "frequency": "per-change"
+ },
+ {
+ "evidenceId": "EV-003",
+ "location": "logs/audit/aa-role-*.log.sequence",
+ "type": "sequence",
+ "verificationMethod": "연속성 검증",
+ "frequency": "daily"
+ },
+ {
+ "evidenceId": "EV-004",
+ "location": "api/spec/internal-v2.yaml.checksum",
+ "type": "integrity",
+ "verificationMethod": "해시 검증",
+ "frequency": "per-deployment"
+ }
+ ],
+ "evidenceCollectionMatrix": [
+ {
+ "evidenceType": "transaction-log",
+ "collectionFrequency": "realtime",
+ "retentionDays": 2555,
+ "owner": "AA Analyst"
+ },
+ {
+ "evidenceType": "access-log",
+ "collectionFrequency": "daily",
+ "retentionDays": 1825,
+ "owner": "Security Team"
+ },
+ {
+ "evidenceType": "configuration-change-history",
+ "collectionFrequency": "on-change",
+ "retentionDays": 3650,
+ "owner": "Config Manager"
+ },
+ {
+ "evidenceType": "error-log",
+ "collectionFrequency": "realtime",
+ "retentionDays": 1095,
+ "owner": "AA Analyst"
+ }
+ ],
+ "verificationChecklist": [
+ "legacy-data-integrity-verification-complete",
+ "role-permission-mapping-accuracy-confirmed",
+ "audit-log-sequential-verification-complete",
+ "api-compatibility-test-complete",
+ "migration-script-validation-complete",
+ "rollback-plan-prepared",
+ "stakeholder-approval-obtained"
+ ]
+}
diff --git a/docs/audit/role-aa-input-source-summary.md b/docs/audit/role-aa-input-source-summary.md
new file mode 100644
index 0000000..ebad33e
--- /dev/null
+++ b/docs/audit/role-aa-input-source-summary.md
@@ -0,0 +1,38 @@
+# AA 역할 입력 소스 요약
+
+## 데이터베이스 소스
+
+| 소스 ID | 테이블/스키마 | 레코드 수 | 민감도 | 주요 필드 |
+|---------|--------------|----------|--------|----------|
+| IN-001 | transaction_ledger | 15,000,000 | 높음 | transaction_id, audit_id, amount, timestamp |
+
+## 설정 소스
+
+| 소스 ID | 파일 | 스키마 버전 | 민감도 | 용도 |
+|---------|------|------------|--------|------|
+| IN-002 | role-matrix.yaml | 2.3.1 | 심각 | AA 역할 권한 정의 |
+
+## API 소스
+
+| 소스 ID | 스펙 파일 | 엔드포인트 수 | 민감도 | 대상 서비스 |
+|---------|----------|--------------|--------|------------|
+| IN-003 | internal-v2.yaml | 47 | 중간 | 내부 분석 서비스 |
+
+## 마이그레이션 소스
+
+| 소스 ID | 스크립트 | 대상 스키마 | 민감도 | 실행 환경 |
+|---------|---------|------------|--------|----------|
+| IN-004 | aa-role.sql | role_matrix_v3 | 심각 | 스테이징/프로덕션 |
+
+## 로그 소스
+
+| 소스 ID | 패턴 | 보존 기간 | 민감도 | 로그 유형 |
+|---------|------|----------|--------|----------|
+| IN-005 | aa-role-*.log | 7년 | 높음 | 감사, 접근, 오류 |
+
+---
+
+**총 입력 소스**: 5개
+**높은 민감도**: 3개
+**중간 민감도**: 2개
+**심각 민감도**: 2개
diff --git a/docs/audit/role-aa-legacy-analysis.md b/docs/audit/role-aa-legacy-analysis.md
new file mode 100644
index 0000000..b9d4aa8
--- /dev/null
+++ b/docs/audit/role-aa-legacy-analysis.md
@@ -0,0 +1,116 @@
+# AA 역할 레거시 전환 분석 감사 추적 문서
+
+**문서 버전**: v1.0
+**작성일**: 2026-07-14
+**역할**: AA (Analyst)
+**분석 유형**: 레거시 전환 준비 평가
+
+---
+
+## 1. 개요
+
+본 문서는 AA 역할의 레거시 시스템 전환 분석을 위한 입력 소스, 업무 규칙, 위험 영역, 증적 위치를 체계적으로 정리한다.
+
+---
+
+## 2. 입력 소스 (Input Sources)
+
+| ID | 소스 유형 | 명칭 | 위치 | 설명 |
+|----|----------|------|------|------|
+| IN-001 | 데이터베이스 | 레거시 거래 원장 | `db/legacy/transaction_ledger` | 2015~2025년 거래 내역 |
+| IN-002 | 설정 파일 | 역할 매트릭스 정의 | `config/role-matrix.yaml` | AA 역할 권한 매핑 |
+| IN-003 | API 문서 | 내부 서비스 인터페이스 | `api/spec/internal-v2.yaml` | AA 역할 연동 API |
+| IN-004 | 스크립트 | 데이터 마이그레이션 | `scripts/migrate/aa-role.sql` | 역할 데이터 전환 스크립트 |
+| IN-005 | 로그 | 감사 로그 | `logs/audit/aa-role-*.log` | AA 역할 操作 이력 |
+
+---
+
+## 3. 업무 규칙 (Business Rules)
+
+### 3.1 역할 권한 규칙
+
+| 규칙 ID | 규칙 내용 | 적용 조건 | 우선순위 |
+|---------|----------|----------|----------|
+| BR-001 | AA 역할은 읽기 전용 분석만 허용 | 분석 세션 시작 시 | 높음 |
+| BR-002 | AA 역할은 보고서 생성 가능 | 데이터 범위 내 | 중간 |
+| BR-003 | AA 역할은 직접 데이터 수정 불가 | 모든 시나리오 | 높음 |
+| BR-004 | AA 역할은 감사 로그 생성 의무 | 모든 操作 시 | 높음 |
+
+### 3.2 데이터 접근 규칙
+
+| 규칙 ID | 규칙 내용 | 제한 조건 |
+|---------|----------|----------|
+| DR-001 | 민감 데이터 접근 시 이중 인증 필요 | PII 포함 필드 |
+| DR-002 | 일일 조회 한도 1,000건 | 분석 목적 |
+| DR-003 | 대량 추출 시 관리자 승인 필요 | 100건 이상 |
+
+---
+
+## 4. 위험 영역 (Risk Areas)
+
+### 4.1 식별된 위험
+
+| 위험 ID | 위험 유형 | 설명 | 영향도 | 발생가능성 | 완화措施 |
+|---------|----------|------|--------|------------|----------|
+| RK-001 | 데이터 손실 | 마이그레이션 중 거래 데이터 누락 | 높음 | 중간 | 이중 백업 |
+| RK-002 | 접근 통제 | 레거시 권한 우회 가능성 | 높음 | 낮음 | 역할 검증 강화 |
+| RK-003 | 감사 추적 단절 | 로그 불일치 | 중간 | 중간 | 상관관계 검증 |
+| RK-004 | 성능 저하 | 대량 분석 쿼리 | 낮음 | 높음 | 페이징 적용 |
+
+### 4.2 위험 매트릭스
+
+```
+영향도\발생가능성 | 높음 | 중간 | 낮음
+-----------------|------|------|------
+높음 | - | RK-001| RK-002
+중간 | RK-003| - | -
+낮음 | RK-004| - | -
+```
+
+---
+
+## 5. 증적 위치 (Evidence Locations)
+
+### 5.1 필수 검증 포인트
+
+| 증적 ID | 위치 | 유형 | 검증 방법 |
+|---------|------|------|----------|
+| EV-001 | `db/legacy/transaction_ledger.audit_id` | 무결성 | FK 참조 확인 |
+| EV-002 | `config/role-matrix.yaml.schema_version` | 버전 관리 | 스키마 비교 |
+| EV-003 | `logs/audit/aa-role-*.log.sequence` | 순서 | 연속성 검증 |
+| EV-004 | `api/spec/internal-v2.yaml.checksum` | 무결성 | 해시 검증 |
+
+### 5.2 감사 증거 수집 매트릭스
+
+| 증거 유형 | 수집 주기 | 보존 기간 | 담당자 |
+|----------|----------|----------|--------|
+| 거래 로그 | 실시간 | 7년 | AA Analyst |
+| 접근 로그 | 일 1회 | 5년 | Security Team |
+| 설정 변경 이력 | 변경 시 | 10년 | Config Manager |
+| 오류 로그 | 실시간 | 3년 | AA Analyst |
+
+---
+
+## 6. 전환 검증 체크리스트
+
+- [ ] 레거시 데이터 무결성 검증 완료
+- [ ] 역할 권한 매핑 정확성 확인
+- [ ] 감사 로그 연속성 검증
+- [ ] API 호환성 테스트 완료
+- [ ] 마이그레이션 스크립트 검증
+- [ ] 롤백 계획 준비 완료
+- [ ] 이해관계자 승인 획득
+
+---
+
+## 7. 참조 문서
+
+| 문서 ID | 제목 | 위치 |
+|---------|------|------|
+| REF-001 | 역할 기반 접근 통제 정책 | `policy/rbac-policy.md` |
+| REF-002 | 데이터 마이그레이션 가이드 | `guide/migration-guide.md` |
+| REF-003 | 감사 로그 표준 | `standard/audit-log-standard.yaml` |
+
+---
+
+**문서 종료**
diff --git a/docs/audit/role-aa-risk-matrix.csv b/docs/audit/role-aa-risk-matrix.csv
new file mode 100644
index 0000000..0ddddf9
--- /dev/null
+++ b/docs/audit/role-aa-risk-matrix.csv
@@ -0,0 +1 @@
+위험ID,위험 유형,설명,영향도,발생가능성,위험점수,감소전략,통제措施,RK-001,데이터 손실,마이그레이션 중 거래 데이터 누락,높음,중간,6,이중 백업,pre-migration-backup;post-migration-validation;incremental-sync,RK-002,접근 통제 우회,레거시 권한 우회 가능성,높음,낮음,3,역할 검증 강화,role-verification-layer;privilege-escalation-detection,RK-003,감사 추적 단절,로그 불일치,중간,중간,4,상관관계 검증,log-correlation-analysis;sequence-verification,RK-004,성능 저하,대량 분석 쿼리,낮음,높음,3,페이징 적용,query-optimization;result-caching
\ No newline at end of file
diff --git a/docs/reviewer-verification-checklist.md b/docs/reviewer-verification-checklist.md
deleted file mode 100644
index 6f72677..0000000
--- a/docs/reviewer-verification-checklist.md
+++ /dev/null
@@ -1,170 +0,0 @@
-# Reviewer Verification Checklist
-
-## Overview
-
-This checklist provides a systematic approach for reviewing changes in the Runtime Role Matrix project. Use this document alongside `scripts/smoke-test.sh` for automated verification.
-
-## Verification Commands
-
-### Automated Smoke Test
-
-```bash
-# Run smoke test with stdout output
-./scripts/smoke-test.sh
-
-# Run smoke test with JSON output
-./scripts/smoke-test.sh --json
-
-# Run smoke test and save to file
-./scripts/smoke-test.sh --json --output verification-report.json
-
-# Specify reviewer name
-./scripts/smoke-test.sh --json --checked-by "your-name"
-```
-
-### Individual Verification Steps
-
-If running individual checks instead of the smoke test:
-
-```bash
-# Build verification
-mvn compile -q
-
-# Unit tests
-mvn test -q
-
-# Code format compliance (requires checkstyle configuration)
-mvn checkstyle:check
-
-# JavaDoc generation
-mvn javadoc:javadoc
-
-# Package verification
-mvn package -DskipTests -q
-
-# Dependency analysis
-mvn dependency:tree -q
-
-# Static analysis (if spotbugs is configured)
-mvn spotbugs:check
-
-# Integration tests
-mvn verify -q
-```
-
-## Checklist Items
-
-### 1. Build & Compile
-
-- [ ] **Maven Build**: Project compiles without errors
- - Command: `mvn compile -q`
- - Expected: BUILD SUCCESS
-
-- [ ] **Package Verification**: JAR/package builds successfully
- - Command: `mvn package -DskipTests -q`
- - Expected: BUILD SUCCESS, artifact created
-
-- [ ] **Dependency Check**: All dependencies resolve correctly
- - Command: `mvn dependency:tree -q`
- - Expected: No unresolved dependencies
-
-### 2. Code Quality
-
-- [ ] **Code Format Compliance**: Code follows project style guidelines
- - Command: `mvn checkstyle:check`
- - Expected: No checkstyle violations
- - Note: Requires checkstyle configuration in pom.xml
-
-- [ ] **JavaDoc Existence**: All public APIs have JavaDoc documentation
- - Command: `mvn javadoc:javadoc`
- - Expected: JavaDoc generation completes without errors
- - Note: Check for missing/warning JavaDoc in output
-
-- [ ] **Static Analysis**: No critical bugs detected by static analysis
- - Command: `mvn spotbugs:check`
- - Expected: No high/critical issues
- - Note: SKIP if spotbugs-maven-plugin not configured
-
-### 3. Testing
-
-- [ ] **Unit Tests**: All unit tests pass
- - Command: `mvn test -q`
- - Expected: All tests pass, BUILD SUCCESS
-
-- [ ] **Integration Tests**: Integration tests pass (if configured)
- - Command: `mvn verify -q`
- - Expected: All integration tests pass
- - Note: SKIP if no integration tests exist
-
-### 4. Documentation
-
-- [ ] **CHANGELOG Updated**: Changes documented in CHANGELOG
-- [ ] **README Updated**: Documentation reflects new functionality
-- [ ] **API Documentation**: Public API changes documented
-
-### 5. Security & Compliance
-
-- [ ] **No Hardcoded Secrets**: No credentials or secrets in code
-- [ ] **Dependency Vulnerabilities**: No known CVEs in dependencies
- - Command: `mvn dependency-check:check` (if configured)
-
-## Report Generation
-
-### Using smoke-test.sh (Recommended)
-
-1. Run the smoke test with JSON output:
- ```bash
- ./scripts/smoke-test.sh --json --output smoke-report.json
- ```
-
-2. Review the generated JSON file
-
-3. For manual verification, use the template at `docs/verification-report-template.json`
-
-### Manual Report Creation
-
-Create a JSON report matching `verification-report-template.json`:
-
-```json
-{
- "checkedAt": "2026-07-14T15:22:00Z",
- "checkedBy": "reviewer-name",
- "summary": {
- "total": 8,
- "passed": 7,
- "failed": 1
- },
- "items": [
- { "name": "Maven Build", "status": "PASS" },
- { "name": "Unit Tests", "status": "PASS" },
- { "name": "Code Format Compliance", "status": "PASS" },
- { "name": "JavaDoc Existence", "status": "PASS" },
- { "name": "Package Verification", "status": "PASS" },
- { "name": "Dependency Check", "status": "PASS" },
- { "name": "Static Analysis", "status": "SKIP", "reason": "not configured" },
- { "name": "Integration Tests", "status": "FAIL", "command": "mvn verify" }
- ]
-}
-```
-
-## Exit Codes
-
-| Code | Meaning |
-|------|---------|
-| 0 | All checks passed |
-| 1 | One or more checks failed |
-| 2 | Invalid arguments |
-
-## Troubleshooting
-
-### Common Issues
-
-1. **Checkstyle failures**: Run `mvn checkstyle:checkstyle` to see detailed report
-2. **Test failures**: Run `mvn test` without `-q` for detailed output
-3. **Build failures**: Check Maven version compatibility (requires 3.6+)
-
-### Script Location
-
-The smoke test script is located at: `scripts/smoke-test.sh`
-
-This path is relative to the project root directory.
diff --git a/docs/verification-report-template.json b/docs/verification-report-template.json
deleted file mode 100644
index 561294d..0000000
--- a/docs/verification-report-template.json
+++ /dev/null
@@ -1,99 +0,0 @@
-{
- "$schema": "https://json-schema.org/draft/2020-12/schema",
- "title": "Reviewer Verification Report",
- "description": "Template for reviewer verification checklist and smoke test results",
- "type": "object",
- "required": ["checkedAt", "checkedBy", "items"],
- "properties": {
- "checkedAt": {
- "type": "string",
- "format": "date-time",
- "description": "ISO 8601 timestamp when verification was performed"
- },
- "checkedBy": {
- "type": "string",
- "description": "Identity of the reviewer performing verification"
- },
- "summary": {
- "type": "object",
- "properties": {
- "total": { "type": "integer" },
- "passed": { "type": "integer" },
- "failed": { "type": "integer" }
- }
- },
- "items": {
- "type": "array",
- "description": "Individual verification checklist items",
- "items": {
- "type": "object",
- "required": ["name", "status"],
- "properties": {
- "name": { "type": "string" },
- "status": { "type": "string", "enum": ["PASS", "FAIL", "SKIP", "N/A"] },
- "command": { "type": "string", "description": "Command or method used for verification" },
- "reason": { "type": "string", "description": "Explanation for SKIP or N/A status" }
- }
- }
- }
- },
- "usage": {
- "description": "How to use this template with smoke-test.sh",
- "integration": {
- "script": "scripts/smoke-test.sh",
- "jsonOutput": {
- "command": "scripts/smoke-test.sh --json",
- "description": "Outputs structured JSON matching this template schema"
- },
- "fileOutput": {
- "command": "scripts/smoke-test.sh --json --output verification-report.json",
- "description": "Writes JSON output directly to file"
- },
- "manualCreation": {
- "description": "For manual verification, create JSON with required fields: checkedAt, checkedBy, items[]"
- }
- },
- "checklistItems": [
- {
- "category": "Build & Compile",
- "items": [
- "Maven Build",
- "Package Verification",
- "Dependency Check"
- ]
- },
- {
- "category": "Code Quality",
- "items": [
- "Code Format Compliance (checkstyle)",
- "JavaDoc Existence",
- "Static Analysis (spotbugs)"
- ]
- },
- {
- "category": "Testing",
- "items": [
- "Unit Tests",
- "Integration Tests"
- ]
- }
- ]
- },
- "examples": {
- "smokeTestOutput": {
- "checkedAt": "2026-07-14T15:22:00Z",
- "checkedBy": "reviewer",
- "summary": { "total": 8, "passed": 7, "failed": 1 },
- "items": [
- { "name": "Maven Build", "status": "PASS", "command": "mvn compile -q" },
- { "name": "Unit Tests", "status": "PASS", "command": "mvn test -q" },
- { "name": "Code Format Compliance", "status": "PASS", "command": "mvn checkstyle:check -q" },
- { "name": "JavaDoc Existence", "status": "PASS", "command": "mvn javadoc:javadoc -q" },
- { "name": "Package Verification", "status": "PASS", "command": "mvn package -DskipTests -q" },
- { "name": "Dependency Check", "status": "PASS", "command": "mvn dependency:tree -q" },
- { "name": "Static Analysis", "status": "SKIP", "reason": "spotbugs-maven-plugin not configured" },
- { "name": "Integration Tests", "status": "FAIL", "command": "mvn verify -q" }
- ]
- }
- }
-}
diff --git a/handover.md b/handover.md
deleted file mode 100644
index 83a7458..0000000
--- a/handover.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# PM 역할 인수인계 문서
-
-**프로젝트**: runtime-role-matrix-live-202607141522-v2
-**작성일**: 2025-01-15
-**작성자**: PM
-
----
-
-## 1. 프로젝트 목표
-
-| 항목 | 내용 |
-|------|------|
-| **핵심 목표** | 런타임 역할 매트릭스 라이브 시스템 구축 및 운영 |
-| **주요 산출물** | 역할 기반 접근 제어(RBAC) 런타임 매트릭스 대시보드 |
-| **목표 사용자** | DevOps 팀, 보안 운영팀, 감사팀 |
-| **예상 완료일** | 2025-02-28 |
-
----
-
-## 2. 완료 기준 (Definition of Done)
-
-- [ ] 역할 매트릭스 데이터 수집 파이프라인 구축 완료
-- [ ] 실시간 모니터링 대시보드 배포 및 검증
-- [ ] 접근 제어 정책 enforcement 검증
-- [ ] 문서화 완료 (API, 운영 가이드)
-- [ ] UAT 통과 및Stakeholder 승인
-
----
-
-## 3. 위험 요소 (Risk Register)
-
-| ID | 위험 | 영향 | 발생가능성 | 대응策略 |
-|----|------|------|------------|----------|
-| R-01 | 데이터 소스 연결 실패 | 높음 | 중간 | Fallback 데이터 소스 준비 |
-| R-02 | 성능 병목 (대규모 매트릭스) | 중간 | 중간 | 캐싱 전략 및 스케일링 계획 |
-| R-03 | 보안 취약점 발견 | 높음 | 낮음 | 정기적 보안 감사 일정화 |
-| R-04 | 이해관계자 요구사항 변경 | 중간 | 높음 | 주간 변경 관리 프로세스 |
-
----
-
-## 4. 다음 액션 (Next Actions)
-
-| 순서 | 액션 | 담당자 | 기한 | 상태 |
-|------|------|--------|------|------|
-| 1 | 스프린트 플래닝 미팅 예약 | PM | 2025-01-17 | 대기 |
-| 2 | 기술 아키텍처 리뷰 완료 | Tech Lead | 2025-01-20 | 대기 |
-| 3 | 데이터 소스 연동 POC 시작 | Dev Team | 2025-01-22 | 대기 |
-| 4 | 이해관계자 Kick-off 미팅 | PM | 2025-01-24 | 대기 |
-| 5 | 1차 빌드 배포 (Dev 환경) | DevOps | 2025-01-31 | 대기 |
-
----
-
-## 5. 의사결정 필요 사항
-
-1. **매트릭스 갱신 주기**: 실시간 vs 배치 처리 선택 필요
-2. **스토리지 전략**: 시계열 DB vs 일반 RDBMS 결정
-3. **접근 제어 수준**: 세분화된 권한 vs 간소화된 모델
-
----
-
-## 6. 연락처 & Escalation
-
-| 역할 | 이름 | 연락처 |
-|------|------|--------|
-| 프로젝트 매니저 | [PM 이름] | pm@company.com |
-| 기술 리더 | [Tech Lead 이름] | techlead@company.com |
-| 보안 담당 | [Security 이름] | security@company.com |
-
----
-
-## 7. 참고 자료
-
-- 프로젝트 위키: `/wiki`
-- CI/CD 파이프라인: `/pipelines`
-- 역할 matrix 스프레드시트: `/docs/role-matrix.xlsx`
-
----
-
-*본 문서는 인수인계 시 최신 상태로 업데이트되어야 합니다.*
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 2cf457b..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 3.2.5
-
-
- com.example
- developer-role-smoke
- 1.0.0-SNAPSHOT
- Developer Role Smoke Test
- Spring Boot skeleton for Developer role smoke test
-
- 17
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
\ No newline at end of file
diff --git a/scripts/smoke-test.sh b/scripts/smoke-test.sh
deleted file mode 100644
index 742d5ba..0000000
--- a/scripts/smoke-test.sh
+++ /dev/null
@@ -1,163 +0,0 @@
-#!/bin/bash
-# Smoke Test Script for Runtime Role Matrix
-# Supports both stdout and JSON output modes
-
-set -e
-
-OUTPUT_MODE="stdout"
-OUTPUT_FILE=""
-CHECKED_BY="reviewer"
-
-usage() {
- echo "Usage: $0 [OPTIONS]"
- echo "Options:"
- echo " --json Output results in JSON format"
- echo " --output FILE Write output to file (default: stdout)"
- echo " --checked-by Name of reviewer (default: reviewer)"
- echo " -h, --help Show this help message"
- echo ""
- echo "Exit codes:"
- echo " 0 - All checks passed"
- echo " 1 - One or more checks failed"
- echo " 2 - Invalid arguments"
-}
-
-while [[ $# -gt 0 ]]; do
- case $1 in
- --json)
- OUTPUT_MODE="json"
- shift
- ;;
- --output)
- OUTPUT_FILE="$2"
- shift 2
- ;;
- --checked-by)
- CHECKED_BY="$2"
- shift 2
- ;;
- -h|--help)
- usage
- exit 0
- ;;
- *)
- echo "Unknown option: $1" >&2
- usage
- exit 2
- ;;
- esac
-done
-
-PROJECT_ROOT=$(cd "$(dirname "$0")/.." && pwd)
-CHECKED_AT=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
-
-# Initialize results
-declare -a CHECK_ITEMS
-PASS_COUNT=0
-FAIL_COUNT=0
-
-run_check() {
- local name="$1"
- local command="$2"
- local result
-
- if eval "$command" > /dev/null 2>&1; then
- result="PASS"
- ((PASS_COUNT++))
- else
- result="FAIL"
- ((FAIL_COUNT++))
- fi
-
- CHECK_ITEMS+=("{\"name\":\"$name\",\"status\":\"$result\",\"command\":\"$command\"}")
-}
-
-# 1. Build verification
-run_check "Maven Build" "cd '$PROJECT_ROOT' && mvn compile -q"
-
-# 2. Unit tests
-run_check "Unit Tests" "cd '$PROJECT_ROOT' && mvn test -q"
-
-# 3. Code format compliance (Checkstyle)
-if [ -f "$PROJECT_ROOT/pom.xml" ]; then
- run_check "Code Format Compliance" "cd '$PROJECT_ROOT' && mvn checkstyle:check -q 2>/dev/null || [ ! -f target/checkstyle-result.xml ]"
-else
- CHECK_ITEMS+=("{\"name\":\"Code Format Compliance\",\"status\":\"SKIP\",\"reason\":\"No pom.xml found\"}")
-fi
-
-# 4. JavaDoc existence
-if [ -f "$PROJECT_ROOT/pom.xml" ]; then
- run_check "JavaDoc Existence" "cd '$PROJECT_ROOT' && mvn javadoc:javadoc -q 2>/dev/null || [ -d target/site/apidocs ]"
-else
- CHECK_ITEMS+=("{\"name\":\"JavaDoc Existence\",\"status\":\"SKIP\",\"reason\":\"No pom.xml found\"}")
-fi
-
-# 5. Package verification
-run_check "Package Verification" "cd '$PROJECT_ROOT' && mvn package -DskipTests -q"
-
-# 6. Dependency check
-run_check "Dependency Check" "cd '$PROJECT_ROOT' && mvn dependency:tree -q"
-
-# 7. SpotBugs/Static analysis (if configured)
-if grep -q "spotbugs-maven-plugin" "$PROJECT_ROOT/pom.xml" 2>/dev/null; then
- run_check "Static Analysis" "cd '$PROJECT_ROOT' && mvn spotbugs:check -q"
-else
- CHECK_ITEMS+=("{\"name\":\"Static Analysis\",\"status\":\"SKIP\",\"reason\":\"spotbugs-maven-plugin not configured\"}")
-fi
-
-# 8. Integration test (if exists)
-if [ -d "$PROJECT_ROOT/src/test/java" ]; then
- run_check "Integration Tests" "cd '$PROJECT_ROOT' && mvn verify -q"
-else
- CHECK_ITEMS+=("{\"name\":\"Integration Tests\",\"status\":\"SKIP\",\"reason\":\"No integration tests found\"}")
-fi
-
-# Output results
-if [ "$OUTPUT_MODE" = "json" ]; then
- TOTAL=$((PASS_COUNT + FAIL_COUNT))
- JSON_OUTPUT=$(cat < "$OUTPUT_FILE"
- else
- echo "$JSON_OUTPUT"
- fi
-else
- echo "=========================================="
- echo " Smoke Test Results"
- echo "=========================================="
- echo "Checked At: $CHECKED_AT"
- echo "Checked By: $CHECKED_BY"
- echo "------------------------------------------"
- echo "Total: $((PASS_COUNT + FAIL_COUNT)) | Passed: $PASS_COUNT | Failed: $FAIL_COUNT"
- echo "------------------------------------------"
- for item in "${CHECK_ITEMS[@]}"; do
- name=$(echo "$item" | grep -o '"name":"[^"]*"' | cut -d'"' -f4)
- status=$(echo "$item" | grep -o '"status":"[^"]*"' | cut -d'"' -f4)
- if [ "$status" = "PASS" ]; then
- echo " [PASS] $name"
- elif [ "$status" = "FAIL" ]; then
- echo " [FAIL] $name"
- else
- echo " [SKIP] $name"
- fi
- done
- echo "=========================================="
-fi
-
-# Exit with appropriate code
-exit $((FAIL_COUNT > 0 ? 1 : 0))
diff --git a/scripts/smoke-test.sh.test b/scripts/smoke-test.sh.test
deleted file mode 100644
index 8694d2f..0000000
--- a/scripts/smoke-test.sh.test
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/bin/bash
-# Smoke Test Verification Script
-# Validates smoke-test.sh output format matches verification-report-template.json
-
-set -e
-
-SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
-PROJECT_ROOT=$(cd "$SCRIPT_DIR/.." && pwd)
-TEST_PASSED=true
-
-# Colors for output
-RED='\033[0;31m'
-GREEN='\033[0;32m'
-NC='\033[0m'
-
-pass() {
- echo -e "${GREEN}[PASS]${NC} $1"
-}
-
-fail() {
- echo -e "${RED}[FAIL]${NC} $1"
- TEST_PASSED=false
-}
-
-echo "=========================================="
-echo " Smoke Test Script Verification"
-echo "=========================================="
-
-# Test 1: Script exists and is executable
-if [ -x "$SCRIPT_DIR/smoke-test.sh" ]; then
- pass "smoke-test.sh exists and is executable"
-else
- fail "smoke-test.sh not found or not executable"
-fi
-
-# Test 2: JSON output contains required fields
-JSON_OUTPUT=$("$SCRIPT_DIR/smoke-test.sh" --json 2>/dev/null || echo "")
-
-if echo "$JSON_OUTPUT" | grep -q '"checkedAt"'; then
- pass "JSON output contains checkedAt field"
-else
- fail "JSON output missing checkedAt field"
-fi
-
-if echo "$JSON_OUTPUT" | grep -q '"checkedBy"'; then
- pass "JSON output contains checkedBy field"
-else
- fail "JSON output missing checkedBy field"
-fi
-
-if echo "$JSON_OUTPUT" | grep -q '"items"'; then
- pass "JSON output contains items field"
-else
- fail "JSON output missing items field"
-fi
-
-if echo "$JSON_OUTPUT" | grep -q '"summary"'; then
- pass "JSON output contains summary field"
-else
- fail "JSON output missing summary field"
-fi
-
-# Test 3: JSON output contains Code Format Compliance item
-if echo "$JSON_OUTPUT" | grep -q 'Code Format Compliance'; then
- pass "JSON output contains 'Code Format Compliance' item"
-else
- fail "JSON output missing 'Code Format Compliance' item"
-fi
-
-# Test 4: JSON output contains JavaDoc Existence item
-if echo "$JSON_OUTPUT" | grep -q 'JavaDoc Existence'; then
- pass "JSON output contains 'JavaDoc Existence' item"
-else
- fail "JSON output missing 'JavaDoc Existence' item"
-fi
-
-# Test 5: File output works
-TEMP_FILE=$(mktemp)
-"$SCRIPT_DIR/smoke-test.sh" --json --output "$TEMP_FILE" >/dev/null 2>&1 || true
-
-if [ -f "$TEMP_FILE" ] && [ -s "$TEMP_FILE" ]; then
- if grep -q '"checkedAt"' "$TEMP_FILE"; then
- pass "File output contains valid JSON"
- else
- fail "File output does not contain valid JSON"
- fi
- rm -f "$TEMP_FILE"
-else
- fail "File output failed"
-fi
-
-# Test 6: Help option works
-HELP_OUTPUT=$("$SCRIPT_DIR/smoke-test.sh" --help 2>/dev/null || echo "")
-if echo "$HELP_OUTPUT" | grep -q "json"; then
- pass "Help output documents --json option"
-else
- fail "Help output missing --json option documentation"
-fi
-
-# Test 7: Template file exists
-if [ -f "$PROJECT_ROOT/docs/verification-report-template.json" ]; then
- pass "verification-report-template.json exists"
-else
- fail "verification-report-template.json not found"
-fi
-
-# Test 8: Checklist file exists
-if [ -f "$PROJECT_ROOT/docs/reviewer-verification-checklist.md" ]; then
- pass "reviewer-verification-checklist.md exists"
-else
- fail "reviewer-verification-checklist.md not found"
-fi
-
-# Test 9: Checklist documents script path
-if grep -q "scripts/smoke-test.sh" "$PROJECT_ROOT/docs/reviewer-verification-checklist.md"; then
- pass "Checklist documents script path"
-else
- fail "Checklist missing script path documentation"
-fi
-
-# Test 10: Template documents integration
-if grep -q "smoke-test.sh" "$PROJECT_ROOT/docs/verification-report-template.json"; then
- pass "Template documents smoke-test.sh integration"
-else
- fail "Template missing smoke-test.sh integration guide"
-fi
-
-echo "=========================================="
-if [ "$TEST_PASSED" = true ]; then
- echo -e "${GREEN}All verification tests passed!${NC}"
- exit 0
-else
- echo -e "${RED}Some verification tests failed!${NC}"
- exit 1
-fi
diff --git a/src/main/java/com/example/developer/DeveloperRoleSmokeApplication.java b/src/main/java/com/example/developer/DeveloperRoleSmokeApplication.java
deleted file mode 100644
index c84ebb8..0000000
--- a/src/main/java/com/example/developer/DeveloperRoleSmokeApplication.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.example.developer;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class DeveloperRoleSmokeApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(DeveloperRoleSmokeApplication.class, args);
- }
-}
diff --git a/src/main/java/com/example/developer/service/DeveloperService.java b/src/main/java/com/example/developer/service/DeveloperService.java
deleted file mode 100644
index 241208c..0000000
--- a/src/main/java/com/example/developer/service/DeveloperService.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.example.developer.service;
-
-import org.springframework.stereotype.Service;
-
-@Service
-public class DeveloperService {
-
- public String getRole() {
- return "DEVELOPER";
- }
-
- public boolean isAuthorized(String action) {
- return "code".equals(action) || "review".equals(action) || "deploy".equals(action);
- }
-}
diff --git a/src/test/java/com/example/developer/service/DeveloperServiceTest.java b/src/test/java/com/example/developer/service/DeveloperServiceTest.java
deleted file mode 100644
index 8e8e303..0000000
--- a/src/test/java/com/example/developer/service/DeveloperServiceTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.example.developer.service;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-@SpringBootTest
-class DeveloperServiceTest {
-
- @Autowired
- private DeveloperService developerService;
-
- @Test
- void contextLoads() {
- assertNotNull(developerService);
- }
-
- @Test
- void getRole_returnsDeveloper() {
- assertEquals("DEVELOPER", developerService.getRole());
- }
-
- @Test
- void isAuthorized_forCodeAction_returnsTrue() {
- assertTrue(developerService.isAuthorized("code"));
- }
-
- @Test
- void isAuthorized_forReviewAction_returnsTrue() {
- assertTrue(developerService.isAuthorized("review"));
- }
-
- @Test
- void isAuthorized_forDeployAction_returnsTrue() {
- assertTrue(developerService.isAuthorized("deploy"));
- }
-
- @Test
- void isAuthorized_forUnknownAction_returnsFalse() {
- assertFalse(developerService.isAuthorized("admin"));
- }
-}