# task-1916: @validate_worktree_safety 데코레이터 read_only 분기 수정 + 문서 함수명 정정

## 배경
task-1915 전수조사에서 발견된 CRITICAL + INFO 이슈 2건 수정.

## 작업 1 (CRITICAL): 데코레이터 read_only 분기 수정

### 현상
- `test_phase1_integration.py::test_int03_rw_read_no_worktree` 테스트 실패
- `worktree_manager.cmd_create(read_only=True)` 호출 시 `@validate_worktree_safety` 데코레이터가 git 검증을 수행
- /tmp/test-project가 git 저장소가 아니므로 `{"status": "error"}` 반환 → `worktree_path` 키 없음 → KeyError

### 수정 방향
- `@validate_worktree_safety` 데코레이터 내부에서 `read_only=True`인 경우 git 검증을 skip하도록 분기 추가
- 또는 `read_only` 분기를 데코레이터 적용 전에 처리

### 검증 시나리오
1. `pytest tests/integration/test_phase1_integration.py::test_int03_rw_read_no_worktree` → PASS
2. `pytest tests/integration/` → 전체 127건 PASS (0 FAILED)
3. 기존 read_only=False 케이스도 동작 확인 (회귀 없음)

## 작업 2 (INFO): 체크리스트 함수명 정정

### 현상
- 체크리스트 문서에 `_warn_phase_without_explicit_id`로 기재
- 실제 구현 함수명: `_warn_phase_without_task_id`

### 수정
- 시스템3문서 체크리스트에서 함수명을 `_warn_phase_without_task_id`로 정정
- 해당 체크리스트 경로: `memory/plans/cross-verification-workflow/checklist.md` (확인 후 수정)

### 검증 시나리오
- grep으로 `_warn_phase_without_explicit_id`가 문서에 남아있지 않은지 확인
- `_warn_phase_without_task_id`가 dispatch.py에 실제 존재하는지 확인

## 레벨
- critical (통합 테스트 FAIL 복구)
