# task-443.1 보고서: chain_manager.py ANU_KEY 모듈레벨 크래시 수정

## 작업 내용
`chain_manager.py`의 모듈 레벨에서 `ANU_KEY` 환경변수가 없으면 `raise EnvironmentError`로 크래시하는 문제를 수정.

### 변경 사항
1. **모듈 레벨 크래시 제거** (37-41행): `if not ANU_KEY: raise EnvironmentError` 블록 삭제
2. **`_require_anu_key()` 헬퍼 함수 추가** (147-153행): ANU_KEY 존재 여부를 확인하고 없으면 `EnvironmentError` 발생
3. **함수 내부 키 체크로 이동**:
   - `_register_watchdog_cron()`: 호출 시 `_require_anu_key()` 체크 (create 커맨드)
   - `_remove_watchdog_cron()`: 호출 시 `_require_anu_key()` 체크 (next 커맨드, 체인 완료 시)
4. **테스트 파일 주석 업데이트**: `test_chain_manager.py`의 더미 키 주입 관련 주석을 현행에 맞게 수정

### ANU_KEY 필요/불필요 정리
- 키 불필요: `check`, `list`, `check-stalled`, `update` (읽기/로컬 쓰기만)
- 키 필요: `create` (watchdog cron 등록), `next` (체인 완료 시 watchdog cron 제거)

## 생성/수정 파일
- `/home/jay/workspace/chain_manager.py` (수정)
- `/home/jay/workspace/tests/test_chain_manager.py` (주석 수정)

## 테스트 결과
- pytest: **38 passed** in 0.18s (기존 테스트 전부 통과)
- ANU_KEY 미설정 `check` 커맨드: 크래시 없이 정상 JSON 출력 확인
- ANU_KEY 미설정 `list` 커맨드: 크래시 없이 정상 JSON 출력 확인
- pyright: 0 errors, 0 warnings
- black/isort: 변경 없음 (이미 포맷 준수)

## 버그 유무
없음

## 기존 테스트 이슈
- `tests/test_qc_integration.py`가 `prompts/team_prompts.py`를 import하는데, 이 파일에도 동일한 모듈 레벨 ANU_KEY 크래시가 존재하여 `--test-dir tests` 전체 실행 시 수집 에러 발생
- 본 작업 범위(`chain_manager.py`)와 무관한 기존 문제
- test_runner를 skip하고 수동으로 `test_chain_manager.py` 38/38 PASS 확인

## QC 자동 검증 결과
```json
{
  "task_id": "task-443.1",
  "overall": "PASS",
  "summary": "5 PASS, 4 SKIP",
  "checks": {
    "file_check": "PASS",
    "data_integrity": "PASS",
    "tdd_check": "PASS",
    "pyright_check": "PASS (0 errors)",
    "style_check": "PASS (black: OK, isort: OK)",
    "test_runner": "SKIP (수동 검증: 38/38 PASS)",
    "api_health": "SKIP",
    "schema_contract": "SKIP",
    "scope_check": "SKIP"
  }
}
```

## 비고
Lv.1 단순 수정 작업. 모듈 레벨 크래시를 함수 레벨로 이동하여, 읽기 전용 커맨드가 키 없이도 사용 가능하도록 개선.
`prompts/team_prompts.py`에도 동일한 모듈 레벨 ANU_KEY 크래시가 있으므로 별도 작업으로 수정 권장.
