---
task_id: task-2502
type: context-notes
scope: task
created: 2026-05-08
updated: 2026-05-08
status: completed
---

# 맥락 노트: task-2502

## Root Cause 정밀 분석 (origin/main 직접 확인)

**확정된 ImportError 1건만**:

origin/main `utils/task_id_parser.py` 실제 상태:
- ✅ `TASK_ID_V2_PATTERN` (line 26)
- ✅ `TASK_ID_RE: re.Pattern = TASK_ID_V2_PATTERN` (line 31) — shared verifier import 충족
- ✅ `TASK_ID_PATTERN: str` alias (line 34)
- ❌ `is_valid_task_id_with_legacy` **없음**
- ❌ `_LEGACY_DOTPHASE_PATTERN` **없음**

**유일한 ImportError 원인**: `is_valid_task_id_with_legacy`
- 봇 worktree들의 dev1~dev8 verifier에는 `from utils.task_id_parser import is_valid_task_id_with_legacy` import 시도 (현재 워크스페이스 dev1 verifier line 29)
- 봇 worktree에서 SSOT를 import하지만 origin/main의 SSOT에는 함수 미정의 → ImportError
- dev1~dev8 verifier 자체는 origin/main에 미존재 — **본 PR 영역 외** (§5 최소화 준수)
- SSOT에 함수 1건만 추가하면 모든 봇 worktree 자동 해결

**`teams/shared/verifiers/browser_verify.py` 상태**:
- origin/main line 18: `from utils.task_id_parser import is_valid_task_id, TASK_ID_RE` — **이미 정상 import 가능** (둘 다 origin/main에 있음). 본 패치 영향 0.

## 주요 결정 근거

### 결정 1: `TASK_ID_RE` 변경 X (origin/main에 이미 존재)
- **결정**: alias 추가 불필요. origin/main에 이미 line 31에 `TASK_ID_RE: re.Pattern = TASK_ID_V2_PATTERN` 존재.
- **근거**: 변경 0이 가장 minimal. verifier import 정합성 이미 확보됨.

### 결정 2: `is_valid_task_id_with_legacy` 함수 정의는 워크스페이스 본 파일과 동일
- **결정**: 현재 워크스페이스 `task_id_parser.py` line 73-82의 함수와 동일하게 추가
- **근거**: 봇 worktree에서 이미 검증된 함수 (PR #47에서 일부 머지된 코드). 새 로직 작성 시 회귀 위험.
- **검증**: legacy pattern `r"^task-\d+(?:\.\d+)*(?:\.dev\d+)?(?:\.done)?$"`가 task-1234.1, task-648.1.dev1, task-648.1.dev1.done 모두 PASS.

### 결정 3: `teams/shared/verifiers/browser_verify.py` 수정 X
- **결정**: shared verifier 코드는 손대지 않음. `TASK_ID_RE` alias만 SSOT에 추가.
- **근거**: §5 "browser_verify.py가 SSOT parser를 안전하게 import하도록 최소 수정"의 "최소"는 0 변경(SSOT 단방향 해결)이 최선. verifier 수정은 회귀 위험.

### 결정 4: dev1~dev8 verifier 수정 X
- **결정**: 본 PR에서 dev1~dev8 verifier 변경 0.
- **근거**: origin/main에 미존재 → 본 PR이 만들면 신규 파일 8개 추가 → 변경 파일 폭증, §5 "최소화" 위반. 봇 worktree에는 이미 import가 있고, SSOT에 함수 추가하면 자동 해결.

## 참조 문서

- task 파일: `memory/tasks/task-2502.md`
- 회장 §3 발행 조건, §4 목표 5건, §5 허용 범위, §6 금지 18건, §7 검증 5단계, §8 완료 조건 10건
- task-2487+1 ESCALATE evidence: `memory/reports/task-2487+1.md`
- task-2485+1 partial merge evidence: `memory/events/task-2485+1.essence-pass-escalated-verifier-limitation`

## 변경 파일 목록 (예정)

1. `utils/task_id_parser.py` (수정) — `_LEGACY_DOTPHASE_PATTERN` + `is_valid_task_id_with_legacy()` 함수만 추가 (2 정의, 약 12줄)
2. `tests/regression/test_task_id_parser_legacy_export_2502.py` (신규) — 함수 동작 회귀 (V2 + suffix + dot-phase)
3. `tests/regression/test_browser_verify_import_2502.py` (신규) — shared/dev1 verifier import smoke 회귀

**총 변경 파일 = 3** (회장 §5 권고 12개 이내 충족, 최소화 ✅)

## 게이트 통과 기록

- G1 설계 게이트: (예정) Codex 사전 검증 PASS 필요
- G2 구현 게이트: (예정) Gemini PR 리뷰 + 마아트 독립 검증
- G3 머지 게이트: (예정) g3_independent_verifier.py + Gemini APPROVED + High 0건
