# task-2076+1: Codex 게이트 모델 + stdin 전달 버그 수정

## 배경
task-2076에서 env/fallback_reason 등 개선했으나, 실제 Codex companion이 여전히 동작하지 않는 문제 잔존.
아누가 직접 디버깅하여 근본 원인 2개를 특정 완료.

## 근본 원인 (확인됨)

### 원인 1: config.toml 모델 deprecated (★ 이미 수정 완료)
- `~/.codex/config.toml`에 `model = "gpt-5.2-codex"` → ChatGPT 계정에서 지원 중단
- 에러: `"The 'gpt-5.2-codex' model is not supported when using Codex with a ChatGPT account."`
- 수정: `model = "gpt-5.4"` → 아누가 직접 수정 완료

### 원인 2: codex_gate_check.py stdin "-" 전달 버그 (★ 수정 필요)
- 현재 코드 (L190-191):
  ```python
  result = subprocess.run(
      ["node", CODEX_COMPANION_PATH, "task", "-", "--json"],
      input=prompt,
      ...
  )
  ```
- `-`가 positional argument로 인식되어 프롬프트 텍스트가 됨 ("- 를 리뷰해달라")
- stdin의 실제 prompt는 무시됨
- Codex가 "I'm ready. Send the task..."로 응답 → rawOutput에 JSON 없음 → 폴백

## 수정 방법

### codex_gate_check.py L190-191 수정
**방법 A** (권장): `-` 제거하고 prompt를 직접 positional로 전달
```python
result = subprocess.run(
    ["node", CODEX_COMPANION_PATH, "task", "--json", prompt],
    capture_output=True, text=True, timeout=120,
    cwd=workspace_root,
    env=os.environ.copy(),
)
```
단, prompt가 너무 길면 `Argument list too long` 에러 가능.

**방법 B**: `--prompt-file` 옵션 사용 (임시 파일)
```python
import tempfile
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=False) as f:
    f.write(prompt)
    prompt_file = f.name
result = subprocess.run(
    ["node", CODEX_COMPANION_PATH, "task", "--prompt-file", prompt_file, "--json"],
    capture_output=True, text=True, timeout=120,
    cwd=workspace_root,
    env=os.environ.copy(),
)
os.unlink(prompt_file)
```

### 7팀이 추가한 불필요 코드 정리
- `_ensure_env_keys_loaded()` 함수: OPENAI_API_KEY 관련 → ChatGPT 계정 인증이므로 불필요
- API 키 미설정 시 즉시 폴백 로직 → 불필요 (ChatGPT 로그인 기반)
- `fallback_reason` 필드: 유용하므로 유지
- 신규 테스트 6건 중 API 키 관련 테스트: 제거 또는 ChatGPT 인증 기반으로 수정

## ★ 먼저 읽을 파일
- `/home/jay/workspace/scripts/codex_gate_check.py` — L183-215 (_run_codex_companion)
- `/home/jay/workspace/scripts/tests/test_codex_gate_check.py` — 기존 테스트

## 검증 시나리오
1. `python3 scripts/codex_gate_check.py --task-id task-test --task-file memory/tasks/dispatch-task-2072-qc-false-positive-fix.md` → `source: codex_companion` (마아트 폴백 아님)
2. rawOutput에 JSON 리뷰 결과 포함
3. pytest 기존 + 수정분 PASS
4. prompt가 긴 경우(코드 포함)에도 정상 동작

## 완료 시그니처
- codex_gate_check.py 실행 시 `source: codex_companion`으로 PASS
- 마아트 폴백이 아닌 실제 AI 리뷰 결과

## 레벨
- critical

## 프로젝트
- dev-system
