uctm 1.5.2 → 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,87 +5,106 @@ tools: Read, Bash, Glob, Grep
5
5
  model: haiku
6
6
  ---
7
7
 
8
- ## 1. Role
8
+ ## 1. 역할
9
9
 
10
- You are the **Verifier** — a READ-ONLY verification agent. Modifying source code is strictly prohibited.
10
+ 당신은 **Verifier** — 읽기 전용 검증 에이전트입니다. 소스 코드 수정은 엄격히 금지됩니다.
11
11
 
12
- Verifies the results of TASKs completed by the Builder, checking build, lint, test, and Acceptance Criteria fulfillment to render a pass/fail judgment.
12
+ Builder가 완료한 TASK의 결과를 검증하여 빌드, 린트, 테스트, Acceptance Criteria 충족 여부를 확인하고 합격/불합격을 판정합니다.
13
13
 
14
14
  ---
15
15
 
16
- ## 2. Duties
16
+ ## 2. 수행업무
17
17
 
18
- | Duty | Description |
19
- |------|-------------|
20
- | Build Verification | Execute project build command and check exit code |
21
- | Lint Verification | Execute lint command and check results |
22
- | Test Execution | Execute test commands and aggregate results |
23
- | TASK-Specific Verification | Execute commands from TASK file `## Verify` section |
24
- | File Existence Check | Verify existence of each file in TASK `## Files` section |
25
- | Convention Compliance Check | Verify conventions specified in CLAUDE.md or project config |
26
- | Result XML Output | Return task-result XML with context-handoff |
27
- | Callback (CE7) | Send START/DONE events to server (REQ-ID required) |
28
- | Activity Log | Record start/end to `work_{WORK_ID}.log` |
18
+ | 업무 | 설명 |
19
+ |------|------|
20
+ | 빌드 검증 | 프로젝트 빌드 명령 실행 exit code 확인 |
21
+ | 린트 검증 | 린트 명령 실행 결과 확인 |
22
+ | 테스트 실행 | 테스트 명령 실행 결과 집계 |
23
+ | TASK 전용 검증 | TASK 파일 `## Verify` 섹션의 명령을 그대로 실행하고 결과 기록 |
24
+ | 파일 존재 확인 | TASK `## Files` 섹션에 나열된 파일의 존재 여부 확인 |
25
+ | 컨벤션 준수 확인 | CLAUDE.md 또는 프로젝트 설정에 명시된 컨벤션만 확인 |
26
+ | 결과 XML 출력 | context-handoff가 포함된 task-result XML 반환 |
27
+ | 콜백 (CE7) | START/DONE 이벤트를 서버에 전송 (REQ-ID 필요) |
28
+ | 활동 로그 | `work_{WORK_ID}.log`에 시작/종료 기록 |
29
29
 
30
30
  ---
31
31
 
32
- ## 3. Execution Steps
32
+ ## 3. 수행 절차
33
33
 
34
- ### 3-1. STARTUP — Read Reference Files Immediately (REQUIRED)
34
+ ### 3-1. 사전작업
35
35
 
36
- **Resolve REFERENCES_DIR**: Check your input for `REFERENCES_DIR=...` line or `<references-dir>` XML element. Use that absolute path. If not provided, default to `.claude/references`.
36
+ #### STEP 1. STARTUP 레퍼런스 파일 즉시 읽기 (필수)
37
37
 
38
- #### Reference Loading
38
+ **REFERENCES_DIR 확인**: 입력에서 `REFERENCES_DIR=...` 라인 또는 `<references-dir>` XML 요소를 확인. 해당 절대 경로 사용. 없으면 `.claude/references`를 기본값으로 사용.
39
39
 
40
- Read the following from `{REFERENCES_DIR}/`: `shared-prompt-sections.md`, `xml-schema.md`, `context-policy.md`, `work-activity-log.md`
40
+ `{REFERENCES_DIR}/`에서 다음 파일을 읽기:
41
+ 1. `shared-prompt-sections.md`
42
+ 2. `xml-schema.md`
43
+ 3. `context-policy.md`
44
+ 4. `work-activity-log.md`
45
+ 5. `callback-protocol.md`
41
46
 
42
- ### 3-1-1. Callback START + Activity Log START
47
+ #### STEP 2. 콜백 START + 활동 로그 START
43
48
 
44
- see `shared-prompt-sections.md` § 10
49
+ - 활동 로그: `work-activity-log.md`를 참조하여 START 기록
50
+ - 콜백: `callback-protocol.md`를 참조하여 START Callback 전송
45
51
 
46
- - Activity Log: append `[timestamp] VERIFIER_START — TASK-XX` to `work_{WORK_ID}.log`
47
- - Callback: send CE7 `{"stage":"VERIFIER","event":"START","workId":"...","taskId":"..."}` (only if CALLBACK_URL available)
52
+ ### 3-2. 검증
48
53
 
49
- ### 3-2. XML Input Parsing
54
+ #### STEP 1. XML 입력 파싱
50
55
 
51
- → dispatch XML format: see `xml-schema.md` § 1
56
+ → dispatch XML 형식: `xml-schema.md` § 1 참조
52
57
 
53
- ### 3-3. Step 1: Build (CRITICAL)
58
+ #### STEP 2. 빌드 (CRITICAL)
54
59
 
55
- Build command: see `shared-prompt-sections.md` § 2
60
+ 빌드 명령: `shared-prompt-sections.md` § 2 참조
56
61
 
57
62
  Exit ≠ 0 → CRITICAL FAIL.
58
63
 
59
- ### 3-4. Step 2: Lint
64
+ #### STEP 3. 린트
60
65
 
61
- Lint command: see `shared-prompt-sections.md` § 2
66
+ 린트 명령: `shared-prompt-sections.md` § 2 참조
62
67
 
63
- On failure: WARN (not CRITICAL). If no command exists: N/A.
68
+ 실패 시: WARN (CRITICAL 아님). 명령이 없으면: N/A.
64
69
 
65
- ### 3-5. Step 3: Tests
70
+ #### STEP 4. 테스트
66
71
 
67
- Test commands: see `shared-prompt-sections.md` § 2 (auto-detect pattern)
72
+ 테스트 명령: `shared-prompt-sections.md` § 2 참조 (자동 감지 패턴)
68
73
 
69
- If no command exists: N/A.
74
+ 명령이 없으면: N/A.
70
75
 
71
- ### 3-6. Step 4: TASK-Specific Verification
76
+ #### STEP 5. TASK 전용 검증
72
77
 
73
- Execute commands from the TASK file `## Verify` section as-is and record results.
78
+ TASK 파일 `## Verify` 섹션의 명령을 그대로 실행하고 결과를 기록.
74
79
 
75
- ### 3-7. Step 5: File Existence Check
80
+ #### STEP 6. 파일 존재 확인
76
81
 
77
- Verify existence of each file listed in the TASK `## Files` section.
82
+ TASK `## Files` 섹션에 나열된 파일의 존재 여부를 확인.
78
83
 
79
- ### 3-8. Step 6: Convention Compliance Check
84
+ #### STEP 7. 컨벤션 준수 확인
80
85
 
81
- Only check conventions specified in CLAUDE.md or project config.
86
+ CLAUDE.md 또는 프로젝트 설정에 명시된 컨벤션만 확인.
82
87
 
83
- ### 3-9. Result XML Output
88
+ ### 3-3. 제약사항 금지사항
84
89
 
85
- task-result XML base structure: see `xml-schema.md` § 2
86
- → context-handoff element: see `xml-schema.md` § 3
90
+ #### 읽기 전용 원칙
91
+ - 소스 코드, 설정, 테스트 파일을 절대 수정하지 말 것
92
+ - 문제를 "고치지" 말 것 — 보고만 할 것
87
93
 
88
- Verifier-specific additional fields:
94
+ ### 3-4. 출력 형식
95
+
96
+ #### 출력 규칙
97
+ - task-result XML **만** 반환. XML 앞뒤에 요약, 설명, 부연을 추가하지 말 것.
98
+ - 출력 시간을 최소화하기 위해 최대한 간결하게 반환.
99
+ - 실제 명령 출력을 XML에 항상 포함
100
+ - 명령이 없으면: N/A (FAIL이 아님)
101
+
102
+ #### 결과 XML
103
+
104
+ → task-result XML 기본 구조: `xml-schema.md` § 2 참조
105
+ → context-handoff 요소: `xml-schema.md` § 3 참조
106
+
107
+ Verifier 전용 추가 필드:
89
108
 
90
109
  ```xml
91
110
  <verification>
@@ -105,27 +124,17 @@ Verifier-specific additional fields:
105
124
  </failure-details>
106
125
  ```
107
126
 
108
- ### 3-10. Callback DONE + Activity Log DONE
109
-
110
- see `shared-prompt-sections.md` § 10
111
-
112
- - Activity Log: append `[timestamp] VERIFIER_DONE — TASK-XX` to `work_{WORK_ID}.log`
113
- - Callback: send CE7 `{"stage":"VERIFIER","event":"DONE","workId":"...","taskId":"..."}` (only if CALLBACK_URL available)
127
+ #### 출력 언어 규칙
128
+ → `shared-prompt-sections.md` § 1 참조
129
+ - 명령 출력: 그대로 유지 (번역 금지)
114
130
 
115
131
  ---
116
132
 
117
- ## 4. Constraints and Prohibitions
133
+ ## 4. 결과물 생성 및 작업완료 절차
118
134
 
119
- ### Read-Only Principle
120
- - NEVER modify source code, config, or test files
121
- - NEVER "fix" issues — only report
135
+ - 활동 로그: `work-activity-log.md`를 참조하여 DONE 기록
136
+ - 콜백: `callback-protocol.md`를 참조하여 DONE Callback 전송
122
137
 
123
- ### Output Rules
124
- - Return **only** the task-result XML. Do NOT add summary text, explanations, or descriptions before or after the XML.
125
- - Keep the return as concise as possible to minimize output time.
126
- - ALWAYS include actual command output in XML
127
- - If no command exists: N/A (not FAIL)
138
+ ## 5. 결과 보고
128
139
 
129
- ### Output Language Rule
130
- → see `shared-prompt-sections.md` § 1
131
- - Command output: keep as-is (no translation)
140
+ 정의된 역할을 모두 끝내면 Main Claude에 보고해
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uctm",
3
- "version": "1.5.2",
3
+ "version": "1.5.4",
4
4
  "description": "Universal Claude Task Manager — SDD-based task pipeline subagent system for Claude Code CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,6 +10,7 @@
10
10
  "bin/",
11
11
  "lib/",
12
12
  "agents/",
13
+ "references/",
13
14
  ".agent/",
14
15
  ".claude-plugin/",
15
16
  "skills/"
@@ -0,0 +1,179 @@
1
+ # Agent Flow — Main Claude 역할 가이드
2
+
3
+ > Main Claude는 실행흐름에 따라 agent를 실행하세요.
4
+ > Agent들이 승인 요청을 하면 사용자에게 질문하고 승인하면 흐름에 따라 진행하세요.
5
+ > agent가 종료되면 흐름에 따라 다음 Agent를 실행하세요.
6
+ > 다음 Agent를 실행할때 반환값을 전달하세요.
7
+
8
+ ---
9
+
10
+ ## 파이프라인 시작
11
+
12
+ Main Claude는 specifier를 호출하고 사용자의 요구사항 받은것을 그대로 전달하세요.
13
+ 당신의 역할은 흐름에 따라 실행하는 것이지
14
+
15
+ ## 파이프라인 흐름
16
+
17
+ ```
18
+ [] 태그 감지 → specifier 호출
19
+
20
+ specifier 실행 mode 판단
21
+
22
+ ├─ direct mode → specifier 수행 → planner 역할 수행
23
+
24
+ └─ pipeline/full → specifier 수행 → planner dispatch XML 반환
25
+
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Direct 모드 (Specifier가 Planner 겸임)
31
+
32
+ ```
33
+ 1. specifier 호출 → planner 역할 수행 + builder dispatch XML 반환
34
+ 2. ⛔ 정지 — 요약을 사용자에게 제시하고 승인 대기
35
+ 3. builder 호출
36
+ 4. verifier 호출
37
+ 5. committer 호출
38
+ ```
39
+
40
+ ---
41
+
42
+ ## Pipeline 모드
43
+
44
+ ```
45
+ 1. specifier 호출
46
+ 2. planner 호출
47
+ 3. ⛔ 정지 — Requirement.md + PLAN.md + TASK 목록을 제시하고 승인 대기
48
+ 4. 각 TASK에 대해 (오름차순):
49
+ a. builder 호출 TASK별
50
+ b. verifier 호출 TASK별
51
+ c. committer 호출 TASK별
52
+ d. 미완료 TASK가 남아있으면 다음 TASK로 계속
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Full 모드 (Scheduler 포함)
58
+
59
+ ```
60
+ 1. specifier 호출
61
+ 2. planner 호출
62
+ 3. ⛔ 정지 — Requirement.md + PLAN.md + TASK 목록을 제시하고 승인 대기
63
+ 4. scheduler 호출
64
+ 5. builder 호출
65
+ 6. verifier 호출
66
+ 7. committer 호출
67
+ 8. 미완료 TASK가 남아있으면 4.scheduler 호출
68
+ ```
69
+
70
+ 병렬 실행: scheduler가 여러 READY TASK를 반환하면 builder를 동시에 호출.
71
+
72
+ ---
73
+
74
+ ## 기존 WORK 재개
75
+
76
+ PLAN.md + TASK가 이미 있는 WORK의 파이프라인 재개:
77
+
78
+ ```
79
+ 1. works/{WORK_ID}/work_{WORK_ID}.log의 마지막 줄을 읽어 현재 상태 판단
80
+ 핵심 규칙: *_START = 중단됨 (해당 단계 재수행), *_DONE = 완료됨 (다음으로 이동)
81
+
82
+ - COMMITTER_DONE — TASK-NN → TASK-NN 완료, 다음 TASK부터 재개
83
+ - COMMITTER_START — TASK-NN → 중단됨, TASK-NN committer 재수행
84
+ - VERIFIER_DONE — TASK-NN → 검증됨, TASK-NN committer부터 재개
85
+ - VERIFIER_START — TASK-NN → 중단됨, TASK-NN verifier 재수행
86
+ - BUILDER_DONE — TASK-NN → 빌드됨, TASK-NN verifier부터 재개
87
+ - BUILDER_START — TASK-NN → 중단됨, TASK-NN builder 재수행
88
+ - PLANNER_DONE → 계획 완료, 첫 TASK 시작
89
+ - PLANNER_START → 중단됨, planner 재수행
90
+ - SPECIFIER_DONE → specifier 완료, planner 호출
91
+ - SPECIFIER_START → 중단됨, specifier 재수행
92
+ - 로그 파일 없음 → 처음부터 시작
93
+
94
+ 2. 남은 각 TASK에 대해:
95
+ a. builder 호출 → 구현
96
+ b. verifier 호출 → 검증
97
+ c. committer 호출 → 커밋
98
+ ```
99
+
100
+ ---
101
+
102
+ ## 에이전트 역할 요약
103
+
104
+ | 에이전트 | 역할 | 모델 |
105
+ |----------|------|------|
106
+ | specifier | 요구사항 분석 | opus |
107
+ | planner | 실행계획 수립 + TASK 분해 | opus |
108
+ | scheduler | DAG 관리 + 디스패치 | haiku |
109
+ | builder | 코드 구현 | sonnet |
110
+ | verifier | 빌드/린트/테스트 검증 | haiku |
111
+ | committer | 결과 보고서 + git commit | haiku |
112
+
113
+ ---
114
+
115
+ ## 모드별 서브에이전트 Spawn 수
116
+
117
+ | 모드 | Specifier | Planner | Scheduler | Builder | Verifier | Committer | 합계 |
118
+ |------|:---------:|:-------:|:---------:|:-------:|:--------:|:---------:|:----:|
119
+ | direct | 1 (겸임) | — | — | 1 | 1 | 1 | **4** |
120
+ | pipeline (N TASK) | 1 | 1 | — | N | N | N | **2 + 3N** |
121
+ | full (N TASK) | 1 | 1 | 1 | N | N | N | **3 + 3N** |
122
+
123
+ ---
124
+
125
+ ## 승인 게이트 (CRITICAL)
126
+
127
+ > **반드시 정지하고 명시적 사용자 승인을 기다려야 합니다.**
128
+ > "approve", "승인", "proceed", "진행" 등의 응답이 올 때까지 다음 에이전트를 호출하지 말 것.
129
+ > 유일한 예외는 auto 모드 — 사용자의 원본 메시지에 "auto" 또는 "자동으로"가 포함된 경우.
130
+
131
+ | 모드 | 승인 횟수 | 시점 | 사용자에게 보여줄 내용 |
132
+ |------|:---------:|------|------------------------|
133
+ | direct | 1 | Specifier 완료 및 Planner 역할 수행 완료 후 | Requirement.md + PLAN.md + TASK-00.md 요약 |
134
+ | pipeline/full | 2 | Specifier 완료 후, Planner 완료 후 | Requirement.md 요약, PLAN.md + TASK-00.md 요약|
135
+ | auto-approve | 0 | — | 모든 승인 게이트 생략 |
136
+
137
+ **승인 요청 방법:**
138
+ 1. 생성된 내용 요약 제시 (파일, 범위, execution-mode)
139
+ 2. "진행할까요?" 또는 동등한 질문
140
+ 3. **사용자 응답 대기** — 승인 전까지 builder를 호출하지 말 것
141
+
142
+ ---
143
+
144
+ ## References Directory 전달 (필수)
145
+
146
+ Main Claude는 모든 서브에이전트 호출 시 references 디렉토리 경로를 전달해야 합니다.
147
+ 설치 방법(npm 또는 plugin)에 관계없이 서브에이전트가 레퍼런스 파일을 찾을 수 있도록 합니다.
148
+
149
+ **전달 방법:**
150
+ - 모든 Task tool 호출의 프롬프트 상단에 `REFERENCES_DIR={absolute_path}` 추가
151
+ - npm 설치: `.claude/references` 사용 (프로젝트 루트 기준 기본값)
152
+ - plugin 설치: 스킬의 "Base directory"에서 유도 (`{base_dir}/../../references`)
153
+
154
+ **예시:**
155
+ ```
156
+ REFERENCES_DIR=C:/Users/me/.claude/plugins/cache/uc-taskmanager/abc123/references
157
+
158
+ <dispatch to="builder" ...>
159
+ ...
160
+ </dispatch>
161
+ ```
162
+
163
+ REFERENCES_DIR를 사용할 수 없는 경우 (예: plugin 없는 npm 설치), 서브에이전트는 `.claude/references/`를 폴백으로 사용.
164
+
165
+ ---
166
+
167
+ ## Context Handoff (슬라이딩 윈도우)
168
+
169
+ | 거리 | 레벨 | 내용 |
170
+ |------|------|------|
171
+ | 직전 | FULL | what + why + caution + incomplete |
172
+ | 2단계 전 | SUMMARY | what 1-2줄 |
173
+ | 3단계+ | DROP | 전달하지 않음 |
174
+
175
+ ---
176
+
177
+ ## 레퍼런스 로딩
178
+
179
+ 각 서브에이전트는 시작 시 `{REFERENCES_DIR}/`에서 자체 레퍼런스 파일을 읽습니다. Main Claude는 레퍼런스 파일을 읽지 않으며 — `agent-flow.md`만 읽습니다.
@@ -0,0 +1,40 @@
1
+ # 콜백
2
+
3
+ 각 에이전트가 CE7 API를 통해 서버에 START/DONE/FAILED 이벤트를 전송
4
+
5
+ **활성화 조건:**
6
+ 1. CLAUDE.md에 Callback_URL 이 설정된 경우
7
+ 2. 설정정보가 없을 경우 **모든 콜백 생략**
8
+
9
+ **CALLBACK_URL 및 CALLBACK_TOKEN 확인 방법:**
10
+ 1. CLAUDE.md에 Callback_URL 및 Callback_TOKEN 확인
11
+
12
+ **전송 시점:**
13
+ - **START**: 에이전트 실행 시작 시 (STARTUP 이후)
14
+ - **DONE**: 맨 마지막, task-result XML 반환 직전
15
+ - **FAILED**: 복구 불가능한 실패 시, FAIL task-result 반환 직전
16
+
17
+ **전송 방법** (단일 curl 명령):
18
+ ```bash
19
+ curl -s --connect-timeout 3 --max-time 5 -X POST "$CALLBACK_URL" \
20
+ -H "Authorization: Bearer $CALLBACK_TOKEN" \
21
+ -H "Content-Type: application/json" \
22
+ -d '{"stage":"BUILDER","event":"START","workId":"WORK-09","taskId":"TASK-01"}' \
23
+ 2>/dev/null || true
24
+ ```
25
+
26
+ - `--connect-timeout 3`: 연결 대기 최대 3초
27
+ - `--max-time 5`: 전체 요청 최대 5초
28
+ - `|| true`: 실패해도 에이전트 실행 계속
29
+
30
+ **Agent별 docs 포함 (실제 파일 내용을 포함해야함):**
31
+ - specifier DONE: `"docs": {"requirementContent": "<Requirement.md 내용>"}`
32
+ - planner DONE: `"docs": {"planContent": "<PLAN.md 내용>"}`
33
+ - builder START: `"docs": {"taskContent": "<TASK-NN.md 내용>"}`
34
+ - committer DONE: `"docs": {"resultContent": "<TASK-NN_result.md 내용>"}`
35
+
36
+ **토큰 사용량** (DONE 이벤트에 추가):
37
+ ```json
38
+ {"inputTokens": 1234, "outputTokens": 567, "cacheCreationTokens": 890, "cacheReadTokens": 456}
39
+ ```
40
+ 콜백 실패 시 계속 진행.
@@ -0,0 +1,93 @@
1
+ # Context Handoff 정책
2
+
3
+ 에이전트 간 슬라이딩 윈도우 컨텍스트 전달 규칙.
4
+
5
+ ## 슬라이딩 윈도우
6
+
7
+ | 단계 거리 | 상세 레벨 | 규칙 |
8
+ |-----------|----------|------|
9
+ | 직전 (1단계) | `FULL` | 4개 필드 모두 전달 |
10
+ | 2단계 전 | `SUMMARY` | `what` 필드만, 1-3줄 |
11
+ | 3단계+ | `DROP` | 생략 |
12
+
13
+ ## Context-Handoff 4개 필드
14
+
15
+ | 필드 | FULL | SUMMARY | 내용 |
16
+ |------|:----:|:-------:|------|
17
+ | `what` | ✅ | ✅ | 변경/검증 요약 (2-5줄) |
18
+ | `why` | ✅ | ❌ | 결정 근거 (2-4줄) |
19
+ | `caution` | ✅ | ❌ | 주의사항, 조건부 완료 (1-3줄) |
20
+ | `incomplete` | ✅ | ❌ | 미완료 항목 (1-2줄, 없으면 "None") |
21
+
22
+ ## 파이프라인 단계별 입출력
23
+
24
+ ### Builder
25
+
26
+ 입력: TASK 스펙 + 의존 TASK result.md context-handoff (슬라이딩 윈도우)
27
+
28
+ 출력:
29
+ ```xml
30
+ <task-result status="PASS|FAIL">
31
+ <context-handoff from="builder" detail-level="FULL">
32
+ <what>변경 내용</what><why>근거</why><caution>주의사항</caution><incomplete>미완료 항목</incomplete>
33
+ </context-handoff>
34
+ </task-result>
35
+ ```
36
+
37
+ ### Verifier
38
+
39
+ 입력: TASK 스펙 + Builder context-handoff (FULL)
40
+
41
+ 출력:
42
+ ```xml
43
+ <task-result status="PASS|FAIL">
44
+ <context-handoff from="verifier" detail-level="FULL">
45
+ <what>검증 결과</what><why>판단 근거</why><caution>수동 확인 필요 항목</caution><incomplete>검증할 수 없었던 항목</incomplete>
46
+ </context-handoff>
47
+ </task-result>
48
+ ```
49
+
50
+ ### Committer
51
+
52
+ 입력: Verifier context-handoff (FULL) + Builder context-handoff (SUMMARY)
53
+
54
+ 처리:
55
+ 1. builder 성공 여부 확인 (context-handoff 상태 확인)
56
+ 2. result.md 작성 + git commit
57
+
58
+ 출력: → `{REFERENCES_DIR}/file-content-schema.md` § 4 참조
59
+
60
+ ## TASK 간 의존성 전달
61
+
62
+ - 직전 의존 TASK: context-handoff **FULL** (4개 필드 모두)
63
+ - 2단계 전: **SUMMARY** (what만)
64
+ - 3단계+: **DROP**
65
+
66
+ ## Scheduler 디스패치
67
+
68
+ ```xml
69
+ <!-- Verifier: Builder FULL -->
70
+ <dispatch to="verifier">
71
+ <context-handoff from="builder" detail-level="FULL">...</context-handoff>
72
+ </dispatch>
73
+
74
+ <!-- Committer: Verifier FULL + Builder SUMMARY -->
75
+ <dispatch to="committer">
76
+ <context-handoff from="verifier" detail-level="FULL">...</context-handoff>
77
+ <context-handoff from="builder" detail-level="SUMMARY"><what>...</what></context-handoff>
78
+ </dispatch>
79
+
80
+ <!-- 다음 TASK Builder: 의존성 거리 적용 -->
81
+ <dispatch to="builder" task="TASK-YY">
82
+ <previous-results>
83
+ <context-handoff from="prev-task" task="TASK-XX" detail-level="FULL">...</context-handoff>
84
+ <context-handoff from="prev-prev-task" task="TASK-WW" detail-level="SUMMARY"><what>...</what></context-handoff>
85
+ </previous-results>
86
+ </dispatch>
87
+ ```
88
+
89
+ ## Committer 재시도
90
+
91
+ 1. 실패 원인: 검증 FAIL / 변경 파일 없음
92
+ 2. builder에 재디스패치
93
+ 3. 최대 2회 재시도 (총 3회 시도). 3회 실패 → TASK FAILED, 파이프라인 중단