# SDD: 분석 대상 결정과 실행 스냅샷 ## 위치 - Milestone: [Milestone 문서](../../../phase/error-intelligence/milestones/analysis-target-selection.md) - Phase: [PHASE.md](../../../phase/error-intelligence/PHASE.md) ## 상태 [승인됨] ## SDD 잠금 - 상태: 해제 - 사용자 리뷰: 없음 - 잠금 항목: - 없음 ## 문제 / 비목표 - 문제: 설정 변경과 동시 실행 중에도 어떤 저장소·운영 환경을 왜 선택했는지 재현 가능해야 한다. - 비목표: - 추론 기반 대상 탐색 - 다중 저장소 수정 - 운영 환경 쓰기 ## Source of Truth | 영역 | 기준 | 메모 | |------|------|------| | Roadmap | [Milestone 문서](../../../phase/error-intelligence/milestones/analysis-target-selection.md) | 선택·스냅샷 기능 범위 | | Code | `internal/platform/database/migrations/`, `internal/domain/remediation/` | 규칙과 실행 스냅샷 | | External Provider | 저장소 기준 리비전 조회 경계 | 리비전 값만 스냅샷에 보존 | | User Decision | 없음 | 일치·우선순위·실패 기준이 확정됨 | ## State Machine | 상태 | 진입 조건 | 다음 상태 | 근거 | |------|-----------|-----------|------| | 선택 대기 | 오류 묶음이 분석 후보가 됨 | 대상 선택됨 | 첫 일치 활성 규칙과 유효한 연결 | | 선택 대기 | 일치 규칙 또는 유효 대상이 없음 | 선택 실패 | `target_selection` 표준 실패 | | 대상 선택됨 | 기준 리비전 확인 성공 | 실행 스냅샷 생성 | 수정 작업과 대상 이력 트랜잭션 | | 대상 선택됨 | 기준 리비전 확인 실패 | 선택 실패 | 저장소 조회 실패 원인 | ## Interface Contract - 계약 원문: 없음 - 입력: - 조직·프로젝트·입력 출처와 오류 source 필드 - 활성 분석 대상 규칙 - 출력: - 저장소 ID, 기준 리비전과 읽기 전용 운영 환경 ID 목록 - 선택 규칙 ID 또는 표준 실패 - 금지: - LLM으로 규칙 순서 변경 - 실행 생성 뒤 대상 스냅샷 덮어쓰기 - 다른 조직·프로젝트 대상 연결 ## Acceptance Scenarios | ID | Milestone Task | Given | When | Then | |----|----------------|-------|------|------| | S01 | `match-rule` | 여러 활성 규칙이 일치함 | 대상을 선택함 | 숫자가 가장 낮은 우선순위의 첫 규칙이 선택됨 | | S02 | `validate-target` | 규칙 대상이 비활성 또는 다른 프로젝트임 | 대상을 검증함 | 선택이 거부되고 분석이 시작되지 않음 | | S03 | `no-target-failure` | 일치 규칙이 없음 | 선택을 수행함 | `target_selection` 실패가 사용자에게 보고 가능하게 저장됨 | | S04 | `resolve-revision` | 저장소 기준 가지가 존재함 | 리비전을 조회함 | 불변 리비전 식별자가 반환됨 | | S05 | `create-run` | 대상과 리비전이 유효함 | 수정 작업을 생성함 | 저장소·리비전·운영 환경 스냅샷이 한 번 저장됨 | | S06 | `selection-tests` | 실행 생성 후 규칙이 변경됨 | 기존 실행을 조회함 | 원래 스냅샷이 유지되고 새 설정 영향이 없음 | ## Evidence Map | Scenario | Required Evidence | `agent-task` 연결 | 완료 Evidence 기대 | |----------|-------------------|------------------|---------------------------| | S01 | 규칙 우선순위 단위 검사 | `agent-task/m-analysis-target-selection/...` | `match-rule` 완료 근거 | | S02 | 조직·프로젝트 FK 및 상태 검사 | `agent-task/m-analysis-target-selection/...` | `validate-target` 완료 근거 | | S03 | 표준 실패 저장 통합 검사 | `agent-task/m-analysis-target-selection/...` | `no-target-failure` 완료 근거 | | S04 | 저장소 경계 리비전 검사 | `agent-task/m-analysis-target-selection/...` | `resolve-revision` 완료 근거 | | S05 | 수정 작업 원자성 DB 검사 | `agent-task/m-analysis-target-selection/...` | `create-run` 완료 근거 | | S06 | 스냅샷 불변성 통합 검사 | `agent-task/m-analysis-target-selection/...` | `selection-tests` 최종 검증 | ## Cross-repo Dependencies - 없음 ## Drift Check - [x] Milestone 기능 Task와 Acceptance Scenario가 일치한다. - [x] Evidence Map이 code-review와 `complete.log`에서 검증 가능하다. - [x] 외부 계약 원문을 SDD에 복제하지 않았다. - [x] 사용자 리뷰가 필요한 항목이 없다. ## 사용자 리뷰 이력 - 없음 ## 작업 컨텍스트 - 표준선: 명시 규칙의 결정성과 실행 입력 revision 보존을 우선한다. - 후속 SDD: [IOP 분석 실행 연동](../../remediation-automation/iop-analysis-orchestration/SDD.md)