# 실행 모드 4종 — 판별 · 전달 · 기동 범위 `SKILL.md` §Phase 1·2 에서 분리한 상세 규약. 모드 이름은 **`초기` / `이어서` / `부분` / `전면`** 이며 이 문자열 그대로 팀원에게 전달한다. ## 판별 (Phase 1) `_workspace/`(**저장소 루트 기준**. Ubisam 하네스의 `docs/[Ubisam산출물]/_workspace/`와 다른 곳)의 **분석 산출물 `01`~`06` 존재 여부**로 판별한다 — 폴더 존재만 보면 채점·로그 파일만 있어도 오판정한다. **두 축을 각각 본 뒤 교차한다** — ① 산출물 `01`~`06`이 있는가 ② 요청이 전체인가 특정 영역인가. 한 축만 보면 오판정한다. | ① 산출물 상태 | ② 요청 | 모드 | 동작 | |---|---|---|---| | 하나도 없음 | 전체 / 특정 영역 **무관** | **`초기`** | Phase 2부터 전원 기동. 폴더가 있어도, 특정 영역만 요청받았어도 만들 것이 없으므로 전원이다 | | 일부만 있음 | 전체 | **`이어서`** | 있는 것 재사용, **없는 것만 생성**, 이동 없음 | | 일부·전부 있음 | 특정 영역("아키텍처만 다시") | **`부분`** | **지목된 에이전트를 다시 돌린다.** 나머지는 재사용, 이동 없음 | | 무관 | **"처음부터 다시" 명시** | **`전면`** | 기존을 `_workspace_prev/`로 이동. ②가 ①을 덮는 유일한 행 | > **①이 "하나도 없음"이면 ②를 보지 않고 `초기`다.** 산출물 0건인데 "아키텍처만 다시"를 받으면 > `부분`처럼 보이지만, 재사용할 것이 없으므로 `초기`로 처리하고 사용자에게 그 사실을 알린다. > 반대로 **`전면`은 ②가 우선**한다 — "처음부터 다시"는 산출물 상태와 무관한 명시적 지시다. > > 맨 "전체 분석"은 최초 실행과 같은 발화라 **이동 근거가 아니다** — 되돌리기 어려우니 확인 후 옮긴다. > `_workspace_prev/` 이동은 **오케스트레이터만** 한다. 팀원은 모드를 "재사용할지" 판단에만 쓴다 > (에이전트 정의 6종에 같은 금지문이 있다 — 한쪽만 고치지 말 것). > > **`생략` 으로 적었는데 해당 산출물 파일이 실제로 없으면** 그 에이전트는 생략 대상이 아니다. > 원장을 `진행중` 으로 고치고 기동한다 — 파일 존재 판정(§생략의 파급 2)이 성립하지 않기 때문이다. ## 기동 범위 (Phase 2) **기동 대상을 줄이는 기준은 모드마다 다르다**(아래 §모드별 기준 표). `이어서` 는 **담당 산출물이 이미 있으면** 띄우지 않으며 **에이전트 3인 전원이 대상이다**: | 에이전트 | 담당 산출물 | 전부 있으면 | |---|---|---| | `ptop-lead` | `01` | 생략 | | `build-devops-engineer` | `04`·`05`·`06` | 생략 | | `ptop-developer` | `02`·`03` | 생략 — 판단 시점만 Phase 3다 (`SKILL.md` §Phase 3 "developer 자신을 생략하는 경우") | 모드가 바꾸는 것이 이동 여부뿐이면 "있는 것 재사용, 없는 것만 생성"이라는 정의가 지켜지지 않는다. ⚠ **`부분`은 기준이 다르다 — 산출물 유무가 아니라 "지목됐는가"다.** `부분`은 지목된 에이전트를 **다시 돌리는** 모드라, 산출물이 있다는 이유로 생략하면 **재기동 대상이 곧 생략 대상이 되어 아무도 기동되지 않는다.** `부분`에서는 지목된 에이전트를 반드시 띄우고, 지목되지 않은 에이전트만 재사용한다(그쪽이 `생략` 이다). `초기`·`전면` 은 전원 기동이며 생략이 없다. | 모드 | 기동하지 않는 조건 | |---|---| | `초기` · `전면` | 없음 (전원 기동) | | `이어서` | 담당 산출물이 **이미 있음** | | `부분` | **지목되지 않음** (산출물 유무 무관) | ## 생략의 파급 (Phase 3·4) **생략된 에이전트는 완료 알림을 보내지 않는다.** 알림을 기다리면 무기한 대기한다. > **`생략` 은 모드가 아니라 "이번 실행에서 기동하지 않음"을 뜻한다.** `이어서`에서 산출물이 > 이미 있어 건너뛴 경우와 **`부분`에서 지목되지 않은 경우 둘 다** 여기에 해당한다. > 상태 enum 정의부 → `data-protocol.md` §진행 원장. 1. 기동하지 않는 에이전트를 `_progress.md`에 **`생략 — 이전 산출물 재사용`** 으로 먼저 기록한다. 2. Phase 3·4는 그 에이전트를 **알림 대기 없이 파일 존재만으로 완료 판정**한다. 3. 생략된 에이전트는 Phase 4의 "살아 있는" 대상이 **아니다** — 교차 확인 질문을 보내지 않는다. 4. 그 산출물에는 `SKILL.md` §후속 작업의 **재사용 stale 문구**를 남긴다. > 기동 대상을 늘리거나 줄이는 규칙을 고치면 **위 3개 소비처(Phase 2 기동 · Phase 3 완료 판정 · > Phase 4 교차 질문)를 같은 편집에서 확인**한다 (`docs/harness-ptop.md` §소비처 확인 의무).