# task-2710 — Model upgrade policy · 4.8 future dispatch priority (READ-ONLY DESIGN DRAFT)

★ **READ-ONLY DESIGN DRAFT** — 회장 verbatim "모델 업그레이드 task 는 기존 완료 evidence 를 건드리지 않고 future dispatch 정책만 다룬다 · read-only 설계안만 준비" 정합. **bot_settings.json 변경 0 · dispatch 0 · PR 0 · branch push 0 · merge 0**.

---

## 0. Header / Authorization Anchor

- **task_id**: `task-2710`
- **task_type**: `policy_design_only` (★ read-only 설계안 · 코드 수정 0 · 봇 dispatch 0)
- **chair_authorization_id_candidate**: `CHAIR-AUTH-TASK-2710-MODEL-UPGRADE-POLICY-4-8-FUTURE-DISPATCH-READ-ONLY-DESIGN-260530` (★ 회장 verbatim 후보)
- **dispatch_status**: **NOT_DISPATCHED · READ-ONLY DESIGN ONLY** (★ 회장 verbatim '아직 bot_settings.json 변경, dispatch, PR, push, merge 는 하지 말고 read-only 설계안만 준비한다')
- **executor_team_candidate**: TBD (★ 본 round 는 ANU read-only 설계만 · 봇 dispatch 0)
- **anu_collector_key**: `c119085addb0f8b7`

---

## 1. Goal (★ 회장 verbatim 1:1)

> 신규 heavy judgment / verifier / executor dispatch 에서 `claude-opus-4-8` 우선 적용 가능성 검토 + `bot_settings.json` 직접 변경 금지 doctrine 과 **충돌 0** 안전 절차 설계

### 1.1 명시 제외 영역 (★ 회장 verbatim 강제)

- ★ 기존 완료 evidence 4.8 소급 적용 0 (★ task-2706~2709+1 lineage 보존)
- ★ task-2709+1 관련 추가 closeout 0 (★ 이미 ACCEPT_WITH_KNOWN_CAVEATS_DIRECT_RECOVERY_CLOSED 종료)
- ★ bot_settings.json 직접 수정 0 (★ 회장 별도 인가 전까지)
- ★ 본 task draft 단계 dispatch 0
- ★ PR / branch push / merge 0

---

## 2. Background — 현재 모델 상태 (★ read-only evidence)

### 2.1 봇 dispatch 모델 (★ task-2706~2709 dispatch verbatim 박제)

| dispatch | model_router 권장 | bot 실제 model | source |
|---|---|---|---|
| task-2706 / 2707 / 2708 / 2709 (executor) | claude-opus-4-6 | claude-sonnet-4-6 | dispatch 출력 verbatim |
| task-2706+1 / 2707+1 / 2708+1 / 2709+1 (verifier) | — | claude-sonnet-4-6 | dispatch 출력 verbatim |

### 2.2 ANU 본 세션

- 모델: `claude-opus-4-7` (★ 본 세션 시작 시 고정)

### 2.3 4.8 model ID (★ system prompt verbatim)

- Opus 4.8: `claude-opus-4-8` (★ system prompt 'most recent Claude model family' 박제)
- 가용 모델군: Opus 4.8 / Sonnet 4.6 / Haiku 4.5

### 2.4 회장 verbatim doctrine 출처

- CLAUDE.md `bot_settings.json 모델 설정을 직접 변경하지 마세요`
- 회장 verbatim 2026-05-29 "bot_settings.json 직접 변경 금지 = 별도 chair authorization 전까지"

---

## 3. Scope categorization — heavy judgment / verifier / executor 분리

### 3.1 회장 verbatim 3 category

| category | 정의 | 적용 우선순위 (★ 회장 verbatim) |
|---|---|---|
| **heavy_judgment** | spec design / classification refinement / cross-domain audit / 8+ axis evaluation 등 (★ 본 ANU session 의 P2 refinement / 8 axis review 류) | 1st (★ 회장 verbatim '신규 heavy judgment' 명시) |
| **verifier** | read-only verifier / Maat-style 독립 검증 (★ task-2706+1 / 2707+1 / 2708+1 / 2709+1 패턴) | 1st (★ 회장 verbatim '신규 verifier' 명시) |
| **executor** | code 구현 commit / formalization / system_hook 수정 (★ task-2706 / 2707 / 2708 / 2709 패턴) | 1st (★ 회장 verbatim '신규 executor dispatch' 명시) |

### 3.2 적용 제외 category (★ ANU 추천 · 회장 결정)

| category | 4.8 적용 제외 사유 |
|---|---|
| simple_routing | dispatch.py routing classifier · lightweight (★ Sonnet/Haiku 충분) |
| qc_verifier | qc_verify.py · deterministic rule check (★ 모델 무관) |
| diagnostic / scope_guard | scripts/task-scope-guard.sh · bash 로직 (★ 모델 무관) |
| callback_helper | dispatch/normal_fallback_callback_helper.py · helper logic (★ 모델 무관) |

★ ANU 자체 결정 0 · 회장 verbatim 영역 매핑 추천.

---

## 4. Safe application procedure 5 step (★ doctrine 충돌 0)

### 4.1 Step 1 — dispatch.py model_router 확장 (★ 코드 수정 0 본 round)

- 현재: `dispatch.py [model_router] 권장 모델: claude-opus-4-6` (★ task-2706~2709 dispatch verbatim)
- 설계안: dispatch.py 의 model_router 가 category 분류 (heavy_judgment / verifier / executor) 후 4.8 우선 적용 (★ §3.1 정합)
- 실 구현 = **별도 task (★ 회장 별도 인가 후 dispatch)**

### 4.2 Step 2 — bot_settings.json 충돌 회피 (★ 회장 verbatim 강제)

- CLAUDE.md doctrine: `bot_settings.json 모델 설정 직접 변경 금지`
- 충돌 회피 방법 후보 3:
  - **방법 A**: dispatch.py CLI flag `--model claude-opus-4-8` (★ per-dispatch override · bot_settings.json 무관)
  - **방법 B**: dispatch.py model_router 가 task_type 별 default 결정 (★ bot_settings 미참조 path)
  - **방법 C**: bot_settings.json schema 확장 — `model_override_by_task_type` field 추가 후 회장 인가 시 dev1/dev2/etc 별 4.8 적용 (★ schema 변경 = 별도 chair authorization 영역)
- ANU 추천: **방법 A (★ per-dispatch override · 최소 침범 · doctrine 충돌 0)**

### 4.3 Step 3 — pilot dispatch (★ 회장 별도 인가 후)

- 4.8 적용 1 pilot task 선정 (★ heavy_judgment 영역 1건 추천)
- ANU 추천: future infra defect 2 (shared branch contamination) 별도 task 후보 = pilot 대상 (★ heavy_judgment 정합)
- pilot 결과 박제 → 회장 verdict (FULL_ACCEPT / ACCEPT_WITH_KNOWN_CAVEATS / REJECT)

### 4.4 Step 4 — rollout 범위 확정

- pilot ACCEPT 시: §3.1 3 category 모두 4.8 우선 적용 정합
- pilot FAIL 시: 모델 retention (★ 4.6 유지) + 별도 fix task
- 회장 결정 영역 (★ ANU 자체 0)

### 4.5 Step 5 — 기존 evidence 보존 (★ 회장 verbatim 강제)

- task-2706~2709+1 모든 lineage 4.8 소급 적용 0 (★ 명시 금지)
- C1 / P1-A / P1-B / P2-A accepted markers 모두 보존
- task-2708 IMPLEMENTATION_COMPLETE_BUT_COMPLETION_BLOCKED_BY_INFRASTRUCTURE 보존
- task-2709 IMPLEMENTATION_COMPLETE_DEFECT1_FIXED_BUT_COMPLETION_BLOCKED_BY_INFRA_DEFECT2 보존
- task-2709+1 ACCEPT_WITH_KNOWN_CAVEATS_DIRECT_RECOVERY_CLOSED 보존

---

## 5. Risk analysis (★ ANU 추천 · 회장 결정)

| risk | 영역 | 추천 대응 |
|---|---|---|
| **R1: cost increase** | Opus 4.8 vs Sonnet 4.6 token cost · API 사용량 증가 | category 분류 정합 (★ §3.2 simple/qc/diagnostic 제외) |
| **R2: latency change** | 4.8 응답 시간 vs 4.6 (★ 모델 specs 회장 결정) | pilot 후 측정 (★ §4.3) |
| **R3: doctrine drift** | bot_settings.json 직접 변경 doctrine 위반 | 방법 A (per-dispatch override) 채택 (★ §4.2) |
| **R4: regression** | 4.8 응답 패턴 변화로 봇 doctrine compliance 영향 | pilot 후 5 enum verdict 비교 (★ task-2706+1 / 2707+1 / 2708+1 / 2709+1 baseline) |
| **R5: API 500 increase** | 신모델 server-side stability (★ task-2709+1 API 500 lineage 정합 가능성) | pilot 시 fallback to 4.6 mechanism 박제 |
| **R6: evidence drift** | 기존 evidence 4.8 소급 적용 위험 | 회장 verbatim '소급 적용 0' 강제 · §4.5 정합 |

★ ANU 자체 결정 0 — 회장 결정 영역.

---

## 6. Allowed / Forbidden Files

### 6.1 expected_files (★ 본 draft round · 회장 인가 후 추가 가능)

1. `memory/tasks/task-2710.md` (★ 본 file · read-only design draft)
2. `memory/events/task-2710.draft-created-260530.json` (★ draft creation marker · 회장 인가 후 ANU 작성)

### 6.2 allowed_existing_file_edits

- **NONE** (★ 본 round = read-only design · 기존 파일 edit 0)

### 6.3 forbidden_files (★ 강제 sha256 동일)

- `bot_settings.json` / `memory/bot_settings.json` (★ 회장 verbatim 직접 변경 금지)
- `dispatch.py` / `dispatch/__init__.py` / `dispatch/normal_fallback_callback_helper.py`
- `scripts/finish-task.sh` / `scripts/task-scope-guard.sh` / `scripts/session-watchdog.sh`
- `.claude/settings.json` / `/home/jay/.claude/settings.json`
- `scripts/harness/v36/dispatch_marker_writer.py` / `scripts/harness/v36/callback_preregistration.py`
- `tests/test_allowed_resources_paths_normalization.py`
- `qc_verify.py`
- `utils/merge_queue_executor.py` / `utils/real_merge_hooks.py`
- `anu_v3/`
- `memory/capabilities/**`
- 모든 production code (★ read-only design 범위)

### 6.4 forbidden_actions (★ 회장 verbatim 5 강제)

1. `bot_settings.json` 변경 0
2. dispatch 0 (★ 본 task 자체 dispatch 0 · pilot dispatch 도 회장 별도 인가 후만)
3. PR 0
4. branch push 0
5. merge 0
6. 기존 evidence 소급 적용 0 (★ 회장 verbatim)
7. task-2709+1 관련 추가 작업 0 (★ 종료 완료)
8. .done 강제 생성 0 · callback cron 수동 등록 0 · finish-task.sh 재실행 0 · session resume 0 (★ task-2709+1 closeout 정합 강제)

### 6.5 Capability Scope YAML (★ paths key explicit · dogfooding)

```yaml
allowed_resources:
  paths:
    - memory/tasks/task-2710.md
    - memory/events/task-2710.draft-created-260530.json
  expected_files:
    - memory/tasks/task-2710.md
    - memory/events/task-2710.draft-created-260530.json
  allowed_existing_file_edits: []
  forbidden_paths:
    - bot_settings.json
    - memory/bot_settings.json
    - dispatch.py
    - dispatch/__init__.py
    - dispatch/normal_fallback_callback_helper.py
    - scripts/finish-task.sh
    - scripts/task-scope-guard.sh
    - scripts/session-watchdog.sh
    - .claude/settings.json
    - /home/jay/.claude/settings.json
    - scripts/harness/v36/dispatch_marker_writer.py
    - scripts/harness/v36/callback_preregistration.py
    - tests/test_allowed_resources_paths_normalization.py
    - qc_verify.py
    - utils/merge_queue_executor.py
    - utils/real_merge_hooks.py
    - anu_v3/
    - memory/capabilities/**
```

---

## 7. Acceptance Criteria (★ 본 design draft round)

1. ★ 본 task md = read-only design draft only (★ 회장 verbatim)
2. ★ §3 3 category 분류 명시 + §3.2 제외 영역
3. ★ §4 5 step safe procedure 박제
4. ★ §5 6 risk + 추천 대응
5. ★ §6 forbidden files / actions 8 강제 정합
6. ★ 기존 evidence (task-2706~2709+1 lineage) 보존 명시 (★ §4.5)
7. ★ bot_settings.json 변경 0 / dispatch 0 / PR 0 / push 0 / merge 0
8. ★ task-2709+1 관련 추가 작업 0

---

## 8. Out-of-Scope (★ 명시 강제)

- ★ 본 round bot_settings.json 직접 변경 0
- ★ 본 round dispatch / PR / push / merge / GitHub write 0
- ★ task-2709+1 추가 closeout 0
- ★ task-2706~2709+1 4.8 소급 적용 0
- ★ pilot dispatch 0 (★ 회장 별도 인가 후 별도 task)
- ★ 코드 구현 0 (★ design only)
- ★ infra defect 2 해결 시도 0 (★ 별도 후보 보존)

---

## 9. Chair Decision Pending (★ 회장 결정 6 영역)

1. ★ 본 design draft 승인 여부
2. ★ chair_authorization_id 최종 확정
3. ★ §4.2 충돌 회피 방법 A / B / C 선택 (★ ANU 추천 = A)
4. ★ §4.3 pilot task 선정 (★ ANU 추천 = infra defect 2 별도 task 후보)
5. ★ §3.2 적용 제외 category 확정
6. ★ pilot dispatch 인가 시점 (★ 별도 회장 인가)

---

## 10. ANU Doctrine Compliance

- ★ ANU 자체 bot_settings.json 변경 0
- ★ ANU 자체 dispatch 0 (★ 본 task draft 단계)
- ★ ANU 자체 코드 수정 0
- ★ ANU 자체 PR / branch push / merge / GitHub write 0
- ★ ANU 자체 분류 결정 0 (★ §3 / §4 / §5 모두 회장 verbatim 매핑 + 추천만)
- ★ ANU 자체 4.8 소급 적용 0 (★ 회장 verbatim 강제)
- ★ ANU 자체 task-2709+1 추가 작업 0 (★ 종료 완료)
- ★ ANU 자체 신규 enum 신설 0

---

## 11. Linked Markers

- `memory/events/task-2709plus1_accept_with_known_caveats_direct_recovery_closed_chair_closeout_260530.json` (★ task-2709+1 최종 종료)
- `memory/events/task-2709+1.api500-postprocessing-interrupted-infra-caveat-260530.json` (★ infra caveat closeout evidence)
- `memory/events/p2a_callback_before_failfast_pre_registration_layer_accepted_with_known_caveats_chair_closeout_260529.json` (★ P2-A closeout)
- `memory/events/c1_dispatch_marker_writer_formalization_accepted_with_known_caveats_chair_closeout_260529.json` (★ C1 closeout)
- `memory/events/task-2709+1.decision.json` (★ verifier ACCEPT_WITH_KNOWN_CAVEATS · 8/8 PASS · 보존)
- `memory/events/task-2708+1.decision.json` (★ verifier 12/12 PASS · 보존)
- `memory/events/task-2707+1.decision.json` (★ verifier 12/12 PASS · 보존)
- `memory/tasks/task-2709.md` / `memory/tasks/task-2708_v2.md` / `memory/tasks/task-2707.md` / `memory/tasks/task-2706.md` (★ lineage 보존)
- CLAUDE.md (★ bot_settings.json 직접 변경 금지 doctrine 출처)

---

## 12. Sentinel

★ 본 task-2710 = read-only design draft only. bot_settings.json 변경 0 · dispatch 0 · PR 0 · push 0 · merge 0 · GitHub write 0 · 기존 evidence 소급 적용 0 · task-2709+1 추가 작업 0 · 코드 구현 0. 끝
