# task-1005.1 완료 보고서
> 작업: "업무 단위" 개념 정의 — 에이전트 미팅 3사이클 (한정위임)
> 팀: dev4-team (비슈누 팀장)
> 일시: 2026-03-25

---

## SCQA

**S**: 현재 시스템은 "프로젝트"(새 서비스 개발, 독립 git repo)와 "태스크"(단일 실행 단위) 2계층으로 운영되고 있으며, dispatch.py + task-timer + memory 구조가 안정적으로 가동 중이다.

**C**: 책 집필, 광고전략 수립, 유튜브 채널 운영, 세미나 기획 등 프로젝트보다 작지만 태스크보다 큰 중간 규모 업무의 공식 개념이 부재하여, 이런 업무들이 memory/plans/ 디렉토리에 비공식적으로 산재하고 있다. 연결 추적, 진행률 집계, 전용 뷰 제공이 불가능한 상태다.

**Q**: 기존 시스템을 최소 변경하면서 중간 규모 업무를 체계적으로 정의·관리할 수 있는 개념과 구조를 확립할 수 있는가?

**A**: 에이전트 미팅 3사이클(5명 참석, 전원 만장일치)을 통해 **"프로그램(Program)"** 개념을 확정했다. memory/programs/ 디렉토리 신설 + program.json 스키마 정의로 기존 시스템 무변경 원칙을 준수하며, dispatch.py에 --program 옵션 추가만으로 태스크-프로그램 연결이 가능하다. 스펙 문서: `memory/specs/work-unit-definition.md`.

---

## 작업 내용

### 에이전트 미팅 3사이클 진행

**참석자**: 프로메테우스(전략), 크로노스(회고분석), 아테나(UX/UI), 미미르(정보구조), 로키(DA/Devil's Advocate)

**사이클 1 — 초기 의견 수집**
- 5명 참석자가 5대 안건(명칭, 구분 기준, 생명주기, 관리 방식, 시스템 통합)에 대해 독립적으로 의견 제시
- 명칭 4파전: 이니셔티브(프로메테우스) / 캠페인(크로노스) / 미션(아테나) / 프로그램(미미르)
- 로키 핵심 반론: "새 개념 불필요, 태그/라벨 확장으로 충분"

**사이클 2 — 쟁점 집중 토론**
- 로키 반론에 대한 4인 재반박: 태그로는 메타데이터 부착, 집계 신뢰성, 전용 뷰 구현 불가 (구체 케이스 10건+ 제시)
- 로키 3대 대안 평가: 대안1(태그 확장) 부분 인정, 대안2(scale 속성) 계층 미표현, 대안3(parent_task) 타입 오염으로 전원 탈락
- 명칭 캠페인/미션 탈락 → 이니셔티브 vs 프로그램 2파전으로 압축
- 로키 부분 수용: "상위 계층 개념은 필요하나 최소 변경 원칙 적용 필수"

**사이클 3 — 최종 합의 도출**
- 명칭: **프로그램(Program)** 전원 합의 (PMO 표준, 한국어 자연스러움, 네임스페이스 충돌 없음)
- 구현: **독립 디렉토리(memory/programs/)** 전원 합의 (기존 확장/self-join 대비 명확성 우위)
- 생명주기: **5상태(planning→active→paused→completed→archived)** 전원 합의
- 로키 DA 최종 검증: 5항목 중 4항목 완전 통과, 1항목 조건부 통과(linked_projects 수동 동기화 — 현재 블로커 아님)

---

## 합의 결과 요약

### 1. 명칭
- 한국어: 프로그램, 영문: program, 약어: PRG, ID: PRG-{NNN}

### 2. 구분 기준 (3문항 판별)
- Q1: 복수 프로젝트/지속적 업무 포괄? → YES면 프로그램 후보
- Q2: 독립 산출물+완료 시점 명확? → YES면 프로젝트, NO면 프로그램
- Q3: 단일/단기 실행? → YES면 태스크

### 3. 생명주기
- planning → active ↔ paused → completed → archived
- archived는 흡수 상태(일방향)

### 4. 관리 방식
- memory/programs/PRG-{NNN}/ 디렉토리 (program.json + overview.md + progress.md)
- 태스크 파일에 program_id 필드 선택적 추가

### 5. 시스템 통합
- 변경: memory/programs/ 신설, dispatch.py에 --program 옵션 추가
- 무변경: task-timer, chain.py, 기존 프로젝트 구조, task-ID 체계

---

## 산출물

| 파일 | 설명 |
|------|------|
| memory/specs/work-unit-definition.md | 프로그램 정의 스펙 (v1.0) — 합의 기반 |
| memory/reports/task-1005.1.md | 본 보고서 |

---

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **명칭 합의 교착** — 사이클 1에서 4파전 → 사이클 2에서 캠페인/미션 탈락 근거 확보 → 사이클 3에서 프로그램 만장일치
2. **"새 개념 불필요" 반론** — 태그/라벨의 한계(메타데이터 부착 불가, 집계 불신뢰, 전용 뷰 미지원)를 10개+ 구체 케이스로 반박, 로키 수용
3. **구현 방식 분기** — 독립 디렉토리 vs self-join vs 기존 확장 3안을 파일 시스템 맥락으로 번역하여 평가, 독립 디렉토리가 명확성·집계 용이성에서 우위로 합의

### 범위 외 미해결 (1건)
1. **linked_projects 수동 동기화** — 프로젝트 디렉토리명 변경 시 program.json 자동 업데이트 미지원. 범위 외 사유: dispatch.py 수정이 필요하며, 별도 태스크로 구현 필요

---

## 셀프 QC

- [x] 1. 다른 파일 영향: 없음 (신규 스펙 문서 생성만, 기존 파일 무변경)
- [x] 2. 엣지 케이스: 프로그램 없는 태스크(program_id=""), 프로젝트 없는 프로그램(linked_projects=[]) 처리 명시
- [x] 3. 작업 지시 일치: 5대 안건 전체 합의 도출, 3사이클 완료, 스펙+보고서 산출
- [x] 4. 보안: 해당 없음 (개념 정의 작업)
- [x] 5. 테스트: 해당 없음 (코드 변경 없음, 문서 작업)
- [x] 6. 발견 이슈 전부 해결: 3건 자체 해결, 1건 범위 외 사유 명시

---

## 횡단조직 소환 기록

| 에이전트 | 목적 | 시작 | 종료 |
|----------|------|------|------|
| 로키(loki) | 에이전트 미팅 DA 역할 | 12:58:53 | 13:08:30 |
