# task-1009.1 완료 보고서
> 팀: dev2-team | 팀장: 오딘 | 작성일: 2026-03-25

---

## SCQA

**S**: task-1005.1에서 에이전트 미팅 3사이클을 통해 확정한 업무 단위 스펙(work-unit-definition.md)이 "프로그램(Program)" 명칭으로 작성되어 있다.

**C**: 제이회장님이 프로젝트/프로그램 혼동 가능성을 지적하며, "캠페인(Campaign)"이 더 직관적이라고 판단하여 명칭 변경을 지시했다.

**Q**: 스펙 문서의 구조/로직을 보존하면서 명칭 관련 문자열만 전수 치환할 수 있는가?

**A**: 전수 치환 완료. 기계적 치환 10개 규칙 + 경로/파일명 3개 규칙을 적용하여 총 13개 치환 패턴을 빠짐없이 반영. "명칭 선정 근거" 섹션은 문맥 보존을 위해 수동 교체. grep 검증으로 잔존 3건이 모두 의도적 잔존임을 확인.

---

## 작업 내용

대상 파일: `/home/jay/workspace/memory/specs/work-unit-definition.md`

### 적용 치환 (13개 패턴)

- 프로그램 → 캠페인 (한국어)
- Program → Campaign (영문 대문자)
- program → campaign (영문 소문자, 변수명/키 포함)
- PRG → CMP (약어)
- PRG-001/PRG-002 → CMP-001/CMP-002 (예시 ID)
- memory/programs/ → memory/campaigns/ (디렉토리 경로)
- program.json → campaign.json (파일명)
- program_id → campaign_id (필드명)
- --program → --campaign (CLI 옵션)
- PROGRAM_STATE_TRANSITIONS → CAMPAIGN_STATE_TRANSITIONS (Python 변수)

### 특수 처리

- **"명칭 선정 근거" 섹션**: 기계적 치환 불가 → 내용 전체 교체
  - PMO 표준 근거 → "직관성: 프로젝트/프로그램 혼동 방지" 근거로 변경
  - 탈락 후보: 캠페인 → 프로그램(프로젝트와 혼동)으로 변경
- **버전**: 1.0 → 1.1
- **변경 이력**: 1.1 행 추가 (task-1009.1, 제이회장님 지시)

### 보존 확인 (변경 금지 항목)

- 생명주기: planning→active↔paused→completed→archived — **변경 없음**
- 3계층 구조: 캠페인 > 프로젝트 > 태스크 — **구조 유지** (명칭만 변경)
- 판별 규칙 3문항 — **로직 유지** (명칭만 변경)
- 시스템 통합 방안 — **구조 유지** (명칭만 변경)
- 합의 참여자 — **변경 없음**

---

## 수정 파일 목록

- `/home/jay/workspace/memory/specs/work-unit-definition.md` (수정)

---

## 발견 이슈 및 해결

### 자체 해결 (3건)

1. **"명칭 선정 근거" 기계적 치환 불가** — "탈락 후보: 캠페인"이 기계적 치환 시 의미 역전. 섹션 전체를 문맥에 맞게 재작성.
2. **Programs Index → Campaigns Index** — INDEX.md 형식 예시 내 "Programs Index" 텍스트도 함께 치환 필요. 정상 반영됨 (151행).
3. **변경 이력 내 구 명칭 잔존 처리** — "프로그램→캠페인" 형태로 변경 이력에 구/신 명칭 모두 기록. 의도적 잔존으로 정상.

---

## 검증 결과

### grep 잔존 검증
- 검색 패턴: `프로그램|Program|program|PRG`
- 잔존 3건: 모두 의도적 (탈락 후보 언급 2건, 변경 이력 1건)
- 비의도적 누락: **0건**

---

## QC 자동 검증

- **결과**: PASS (5 PASS, 7 SKIP)
- file_check: PASS (7757 bytes)
- data_integrity: PASS
- critical_gap: PASS
- spec_compliance: PASS
- duplicate_check: PASS (최대 유사도 11.6%)
- test_runner: SKIP (관련 테스트 파일 0개, 정당한 SKIP)
- pyright_check: SKIP (Python 파일 아님)
- style_check: SKIP (Python 파일 아님)
- .done 파일: 자동 생성 완료
