# Agent 미팅: 봇 세션 만료 방지 — 코드 자동화 방안 설계

**날짜**: 2026-04-15
**소집 이유**: task-1842 세션 끊김 사례. 프롬프트 지시로는 compact/저장 강제 불가. 코드 레벨 자동화 방안 필요.
**참여 페르소나**: 이잠나(7팀장), 무쿨칸(백엔드), 로키(DA), 비너스(Gemini), 아틀라스(Codex)
**미팅 모드**: hybrid
**토론 깊이**: thorough
**총 사이클 수**: 진행 중

---

## Cycle 1 합의

### 전원 합의 (5명)
1. 프롬프트 지시로는 강제 불가 — "봇에게 부탁하지 말고, 인프라가 강제하라"
2. strategic-compact.sh stderr→stdout 전환 — 즉시 적용 Quick Win
3. 세션 만료를 "방지"보다 "허용하되 복구"가 현실적

### 제안 3가지
- **A. Quick Win**: AUTOCOMPACT 하향, stderr→stdout, Stop 훅 .partial
- **B. 코드 강제**: PreToolUse deny 게이트 (N회 도달 시 체크포인트 미생성이면 Edit/Write 차단)
- **C. 아키텍처**: 세션 릴레이 (세션 만료를 정상으로 수용, watchdog 자동 재시작)

### 로키 DA
- 근본 원인은 compact 미실행이 아니라 "단위 작업당 컨텍스트 소비량 초과"
- 자동 .done 생성은 "거짓 완료" 위험 → .partial/.interrupted 상태 필요
- "세션이 만료되어도 괜찮게 하자"가 정답

---

## Cycle 2 합의

### 구현 순서 (이잠나+로키)
- A 먼저 단독 배포 → 2~3일 관찰 → B 추가. 빅뱅 배포 금지.

### PreToolUse deny 설계 정교화 (이잠나)
- 동적 N값: 읽기만 25회, 쓰기 섞이면 15회
- StatusLine used_percentage와 조합 → Green(0-60%)/Yellow(60-80%)/Red(80%+) 3단계

### AUTOCOMPACT 값 (로키 DA)
- 50%는 너무 공격적 → compact 사이클 위험
- 60%가 sweet spot 가능성

### 세션 릴레이 → 상태 외부화 (비너스)
- 투명한 컨텍스트 이관 비현실적
- scratchpad + 작업 매니페스트가 실전 유일한 작동 방식
- PostToolUse 경량 trace(200B/호출) + 주기적 스냅샷 2계층

### 로키 DA 경고
- PreToolUse deny 오탐 → 무한 릴레이 루프
- compact 50%는 compact 사이클 유발
- 동시 구현은 부트스트랩 문제

---

## Cycle 3 합의

### 리서치 데이터
- compact 3회 연속 → Claude Code "death spiral" 감지 자동 중단 (최근 패치)
- 6회 연속 compact → 3.5분 만에 API 비용만 소모 (GitHub #24677)
- context buffer: 33K 토큰 (이전 45K에서 축소)
- 현재 70% 설정이 적절 — 50%는 compact 사이클 유발
- Progressive Disclosure로 ~3.5x 토큰 절감 가능

### 최종 합의: 필수 구현 2건

**1. Stop 훅 incomplete marker** (이잠나)
- 봇 비정상 종료 시 `.incomplete` 파일 자동 생성
- watchdog이 즉시 감지 → 재위임
- "Stop 훅 실행 but finish-task.sh 미호출" 사각지대 해결

**2. scratchpad 자동 생성** (로키)
- dispatch.py 위임 시 `{task_id}-scratchpad.md` 자동 생성
- 봇이 진행 상태 기록, 재개 세션이 읽고 이어감
- 중간 상태 유실 80% 해결

### 선택적 개선 (효과 측정 후)
- constants.json autocompact_pct 50→70 정합성 수정
- STALE_THRESHOLD 600→300초
- Progressive Disclosure 기본값 standard
- 토큰 예산 메타데이터

### 로키 DA 최종 반론
- death spiral 자동 중단이 이미 있으므로, 과잉 설계 위험
- "확실히 작지 않으면 쪼갠다"는 기본값 전환이 근본 해결
- scratchpad 1개 + 규칙 1줄이면 충분. 나머지는 문제 반복 시 추가

---

## 다음 단계
- 미팅 합의(필수 2건)를 팀에 위임하여 구현
- 3문서 필요 여부: 기능 수정 수준이므로 3문서 불필요
