# task-2505 — composite ③ (횡단조직 복합) dispatch.py 확장

- 작업 유형: **dispatch layer extension (composite ③ category code support)**
- 작업 레벨: **Lv.3+** (코드 구현 + 회귀 테스트 + 페르소나 합성 로직)
- 담당: **TBD (회장 결정 — 헤르메스 dev1 또는 다그다 dev3 또는 다른 dev팀)**
- 우선순위: ★ blocking-after-task-2504
- Track: **dispatch_layer_hardening / composite_three_types_enforcement**
- 일시: 2026-05-08
- 선행: task-2503 머지 + task-2504 머지 후 (Merge Topology Gate 영향 영역)
- 상태: **회장 승인 대기** — 발사 미진행

## ⚠️ 본 task의 본질 — 회장 직접 정의 (2026-05-08T11:43)

> composite 작업은 3가지 경우의 수가 있고, 그 중 ③ "개발팀 물리봇 + 여러 팀, 횡단조직 agent 복합"은 현재 dispatch.py 코드에 미구현 상태. 본 task는 ③ 카테고리를 정식 지원하는 코드 확장.

## 회장 정의 composite 3종 (참조)

| # | 패턴 | 주관 | 코드 지원 |
|---|---|---|---|
| ① | 물리봇 + 논리적 팀 1개 그대로 | 논리적 팀장 | ✅ `--team marketing` |
| ② | 물리봇 + 논리적 팀 agent 복합 (2~3개) | composite 임시 팀장 | ✅ `--composite marketing,design` |
| ③ | 물리봇 + 여러 팀 + **횡단조직 agent** 복합 | composite 임시 팀장 | ❌ 미구현 (본 task가 추가) |

상세 박제: `memory/feedback_composite_three_types_260508.md`

## Merge Topology Gate 7 metadata (의무 준수)

```yaml
expected_files:
  - "utils/composite_constants.py"  # COMPOSITE_ALLOWED_TEAMS 확장
  - "utils/composite_personas.py"  # 신규 (횡단조직 agent 페르소나 정의)
  - "dispatch/core.py"  # _dispatch_composite() 확장
  - "prompts/team_prompts.py"  # build_composite_prompt() ③ 분기
  - "tests/regression/test_composite_three_types_2505.py"  # 신규
  - "memory/specs/composite-team-system.md"  # ③ 명세 추가

risk_area: "dispatch_layer / composite_dispatch_routing / cross_cutting_agent_persona"

dependency: ["task-2503.merged", "task-2504.merged"]  # task-2504(Merge Topology Gate dispatch.py integration) 머지 후 진행. dispatch.py 동시 수정 충돌 회피

parallel_policy: "serial_only"  # dispatch.py / composite_constants.py 수정 — 다른 dispatch 변경 작업과 병렬 금지

merge_queue_position: 5  # task-2503=1, task-2497=2, task-2498=3, task-2504=4, task-2505=5

stale_recheck_required: true  # main에 dispatch.py 변경 머지 시 재검증 의무

cherry_pick_allowed: false  # 회장 정책
```

## 구현 범위 (예비 — 회장 검토 후 확정)

### Phase 1: 횡단조직 agent SSOT 정의
- `utils/composite_personas.py` 신규
- 횡단조직 agent ID + 페르소나 메타데이터 정의
  - `loki` (보안팀장 / DA / redteam)
  - `maat` (QC센터장 / QC매니저)
  - 기타 횡단조직 agent (조직도 기반 추가)
- 페르소나 합성 가능 조합 정의 (예: `loki + maat = QC/검증 composite ③`)

### Phase 2: dispatch.py 확장
- `COMPOSITE_ALLOWED_TEAMS`를 확장 가능 구조로 변경
  - 옵션 A: dict로 변경 — `{"logical": {marketing, design, ...}, "cross_cutting": {loki, maat, ...}}`
  - 옵션 B: 별도 set 추가 — `COMPOSITE_CROSS_CUTTING_AGENTS = frozenset({loki, maat, ...})`
- `_validate_composite_teams()`를 `_validate_composite_members()`로 일반화
- `_dispatch_composite()` ③ 분기 추가
  - 횡단조직 agent 검출 시 → 페르소나 합성 모드 활성화
  - 가용 dev팀 물리봇 선택 + 페르소나 강제 프롬프트 주입

### Phase 3: 페르소나 합성 프롬프트 빌더
- `build_composite_prompt()`에 ③ 분기 추가
- 횡단조직 agent 페르소나를 임시팀장 프롬프트 헤더에 주입
- "dev 본인 페르소나 OFF + 횡단조직 페르소나 ON" 강제 명시
- HANDOFF_REQUIRED_FIELDS 확장: ③ 카테고리용 핸드오프 필드 정의 (예: `frozenset({loki, maat}) → ["검증 항목", "발견된 헛점", "개선 권고"]`)

### Phase 4: argparse 변경
- `--composite` 인자 의미 확장 — logical team + cross-cutting agent 혼합 허용
- 예: `--composite "loki,maat"` (③ 카테고리), `--composite "marketing,design,loki"` (③ 카테고리 — logical + cross-cutting 혼합)
- 검증: 최소 2개, 최대 3~4개 (회장 결정 사안)

### Phase 5: 회귀 테스트
- ① 기존 logical team 단일 dispatch 회귀 0건 (`--team marketing`)
- ② 기존 logical team 복합 dispatch 회귀 0건 (`--composite marketing,design`)
- ③ 신규 횡단조직 복합 dispatch 통과 (`--composite loki,maat`)
- ③ 혼합 dispatch 통과 (`--composite marketing,design,loki`)
- 페르소나 강제 프롬프트 검증 (dev 페르소나 OFF + 횡단조직 페르소나 ON 명시 포함)
- HANDOFF_REQUIRED_FIELDS 확장 검증

## allowed_resources

```yaml
allowed_resources:
  read_only_paths:
    - "memory/tasks/task-2505*"
    - "memory/feedback/feedback_composite_three_types_260508.md"
    - "memory/feedback/feedback_composite_for_verification.md"
    - "memory/specs/composite-team-system.md"
    - "memory/organization-structure.json"
    - "memory/org-details/**.json"
    - "utils/composite_constants.py"
    - "dispatch/core.py"
    - "prompts/team_prompts.py"
    - ".env.keys"
  paths:
    - "memory/tasks/task-2505*"
    - "memory/reports/task-2505*"
    - "memory/events/task-2505*"
    - "memory/plans/tasks/task-2505/**"
    - "utils/composite_personas.py"  # 신규
    - "memory/specs/composite-team-system.md"  # ③ 명세 추가
  workflow_paths:
    - "utils/composite_constants.py"
    - "utils/composite_personas.py"  # 신규
    - "dispatch/core.py"
    - "prompts/team_prompts.py"
    - "tests/regression/test_composite_three_types_2505.py"  # 신규
  forbidden_paths:
    - ".secrets/**"
    - ".github/workflows/**"
    - "scripts/auto_merge.py"
    - "scripts/finish-task.sh"
    - "memory/events/task-2487+1*"
    - "memory/events/task-2497*"
    - "memory/events/task-2498*"
    - "memory/events/task-2494*"
    - "memory/events/task-2503*"
    - "memory/events/task-2504*"
    - "dashboard/**"
    - "report_parser.py"
    - "tests/poc/**"
    - "tools/poc/**"
    - "memory/poc/**"
  forbidden_actions:
    - admin_override
    - required_ci_bypass
    - manual_done_creation
    - existing_pr_force_push
    - existing_pr_close_or_delete
    - pr_52_modification
    - pr_49_50_51_modification
    - task_2497_2498_2494_rerun_interference
    - task_2503_phase_1_interference  # task-2503 Phase 1 동시 진행 시 dispatch.py 충돌 회피
    - task_2504_interference  # task-2504 Merge Topology Gate dispatch.py integration과 충돌 회피
    - auto_cherry_pick_implementation
    - auto_merge_mixing
    - dashboard_intrusion
    - report_parser_modification
    - rebase
    - workspace_full_sync
    - token_value_logging
```

## 완료 조건

1. ✅ `utils/composite_personas.py` 신규 (횡단조직 agent 페르소나 SSOT)
2. ✅ `COMPOSITE_ALLOWED_TEAMS` 확장 (logical + cross-cutting)
3. ✅ `_dispatch_composite()` ③ 분기 동작
4. ✅ `build_composite_prompt()` 페르소나 강제 프롬프트 합성
5. ✅ argparse `--composite` 확장 (혼합 허용)
6. ✅ HANDOFF_REQUIRED_FIELDS ③ 카테고리 확장
7. ✅ 회귀 테스트 5건 ALL PASS (① 회귀 / ② 회귀 / ③ 신규 / 혼합 / 페르소나 검증)
8. ✅ Merge Topology Gate 자기참조 PASS
9. ✅ CI 11/11 SUCCESS
10. ✅ Gemini fresh evidence 확보
11. ✅ task-2503 / task-2504 / 기타 dispatch.py 작업과 충돌 0건

## Phase 단계별 진행

- Phase 1: composite_personas.py SSOT 작성 + 회장 검토
- Phase 2: dispatch.py 확장 + composite_constants.py 갱신
- Phase 3: build_composite_prompt() 확장
- Phase 4: argparse 변경 + 통합 검증
- Phase 5: 회귀 테스트 + Merge Topology Gate 자기참조

## 시스템 3문서 참조

- 정책 본체: `memory/feedback/feedback_composite_three_types_260508.md`
- 기존 ① / ② 명세: `memory/specs/composite-team-system.md`
- 시스템 청사진: `/home/jay/.claude/projects/-home-jay--cokacdir-workspace-autoset/memory/system_bot_orchestration_blueprint_260506.md`
- Phase B 통합 항목: `memory/orchestration/phase_b_integration_items_260507.md`

## 보고

- SCQA 4섹션
- Phase 단계별 결과
- composite 3종 통합 검증 (① 회귀 / ② 회귀 / ③ 신규)
- 페르소나 합성 evidence (예시 프롬프트 출력)
- 회귀 테스트 결과
- Merge Topology Gate 자기참조 PASS evidence
- 헤르메스/아누 통합 요약 경유, 회장 직접 장문 보고 X

## 후행 (회장 결정 사안)

- task-2505 머지 후 task-2494-rejudge 같은 ③ 카테고리 task를 페르소나 강제 프롬프트 우회 없이 정식 dispatch 가능
- 향후 모든 QC/검증/감사 작업은 ③ 카테고리로 정식 dispatch
- `feedback_composite_for_verification.md` 정책 갱신 (③ 카테고리 명시 + dispatch 명령 예시 추가)

## 회장 승인 대기

본 task는 spec 작성만 완료. **발사는 회장 명시 승인 후**. 회장 통합 명령에 따라 task-2503 Phase 1 결과 + task-2504 진행 상태 확인 후 발사 시점 결정 필요.
