# 세션 요약: task-2702

## 기본 정보
- 작업 ID: task-2702
- 팀: dev2-team
- 생성 시각: 20260528T101129
- 토큰 사용량: 15,943,376 / 200,000 (7971.7%)
- 레벨: CRITICAL

## 원래 작업 설명
# task-2702 — DAEMON_SOURCE_FILE_FLAPPING_ROOT_CAUSE_AND_WRITE_PATH_FIX (회장 verbatim 2026-05-28 · 메타 1차 종료선의 유일한 blocker)

- Level: **Lv.3 infrastructure** (★ 회장 verbatim · 진단 우선 · 최소 차단 패치 한정 · source/test 파일 손상 숨김 금지)
- type: **coding** (★ 회장 verbatim)
- 담당: **dev2-team Odin 오딘** (★ 회장 verbatim 지정 · bot key fedf78d1d09509f5)
- chair_authorization_id: **`CHAIR-AUTH-TASK-2702-DAEMON-SOURCE-FILE-FLAPPING-ROOT-CAUSE-FIX-20260528-JJONGS-IMPLEMENT-001`** (★ 회장 verbatim 발급 확정)
- 완료 목표: **`DAEMON_SOURCE_FILE_FLAPPING_BLOCKED_WRITE_PATH_SEPARATED`**
- 상태: **`TASK_2702_DAEMON_SOURCE_FILE_FLAPPING_FIX_AUTHORIZED`** / **`not META_INFRA_CLOSED_UNTIL_10MIN_STABILITY_PASS`** (★ 회장 verbatim)

## ★ 단일 목적 (회장 verbatim)

`utils/replacement_pr_runner.py`(정본 718줄) 와 `tests/regression/test_replacement_pr_runner_2510.py`(정본 493줄)가 실시간으로 **0바이트 truncate ↔ 복원 flapping** 중이다. 이 2개 파일을 쓰는 **daemon/hook/watcher 를 찾아 write path 를 workspace 외부 또는 ignored state 경로로 분리**하는 것이 목표다. **이 작업 외 추가 메타 개선은 금지한다.**

## ★ 작업 순서 (회장 verbatim · 엄수 — 이 4단계로만 제한)

1. **read-only 진단** — flapping writer 후보를 mutating 없이 관측·식별
2. **원인 writer 특정** — 어떤 daemon/hook/watcher 가 언제·왜 두 파일을 truncate/재기록하는지 확정 (추측 금지·증거 기반)
   - ★ **원인을 특정하지 못하면 추정 패치 금지** → `OWNER_DECISION_REQUIRED` 로 보고하고 정지
3. **최소 차단 패치** — 식별된 writer 의 write path 를 workspace 외부 또는 ignored state 경로로 분리. 최소 변경만. 주변 리팩터링 금지
   - ★ 원인 writer 가 **명확할 때만** 최소 패치 허용
   - ★ **source/test 파일 write 를 중단시키는 패치만** 허용
   - ★ **unrelated daemon 구조개편 금지** · **owner_trigger / divergence_guard / finish-task 추가 개선 금지**
4. **10분 이상 linecount/sha256 안정성 검증**

## ★ 절대 금지 (회장 verbatim 9 지시 박제)

1. 이 2개 Python 파일(`utils/replacement_pr_runner.py`·`tests/regression/test_replacement_pr_runner_2510.py`)에 **skip-worktree 추가 금지**
2. **skip-worktree 로 source/test 손상을 숨기지 말 것** (증상 은폐 금지)
3. 현재 skip-worktree 15개 상태 파일은 **임시 noise 억제로 인정**하되, **source/test 파일에는 적용 금지**
4. 이 작업 외 **추가 메타 개선 금지**
5. mutating git 광범위 조작 금지 — 진단은 read-only, 패치는 식별된 writer write-path 분리 최소 변경만
6. PR #158 / PR #159 / PR #160 / task-2700 stale branch / task-2700+1 branch 수정 금지
7. local main **reset 금지 · git clean 금지 · stash 금지 · checkout 금지 · main push 금지** (★ 회장 verbatim · task-2701+1 정합 상태 보존: HEAD=origin/main=35e81f01)
8. manual `.done` 생성 금지 · G4 marker 삭제 금지
9. dispatch.py 변경 금지 · settings.json(live) / hooks(live) 직접 변경 금지 (식별된 writer 가 hook 이면 write-path 분리안을 보고 후 회장 결재)
10. **추가 메타 개선 금지** · unrelated daemon 구조개편 금지 · owner_trigger/divergence_guard/finish-task 추가 개선 금지

## ★ 진단 단서 (ANU read-only 사전 관측 — 검증 대상이지 결론 아님)

- 현재(09:24 KST) 두 파일 **정본 상태**: rpr 718줄(sha256 95809c89…) / test 493줄(sha256 57ebdc51…) · git status clean(HEAD 일치)
- ★ 두 파일 mtime **나노초까지 완전 동일** = `2026-05-28 08:58:35.472434414` → **단일 writer 가 두 파일을 한 번에 재기록**한 강한 신호 (git checkout/reset/stash 계열 동작이 working-tree 일괄 재기록할 때의 전형 패턴)
- flapping 은 **간헐적** (상시 아님) — 특정 데몬/watcher/hook 의 주기적 트리거 의심
- HEAD blob: rpr=1fa8b2d2… / test=cb01bc6d…
- writer 후보 참조 파일(grep "replacement_pr_runner" — ★ import/참조이지 truncate writer 확정 아님): utils/real_merge_hooks.py · utils/merge_queue_executor.py · anu_v2/gemini_stale_prevention_runner.py · scripts/run_auto_pr_merge_readiness_dry_run_2609.py 등. **실제 truncate writer 는 봇이 read-only 진단으로 특정**

## ★ 진단 권장 기법 (read-only)

- `stat` mtime 나노초 비교로 일괄 재기록(git checkout 계열) vs 개별 write 구분
- 실행 중 데몬/watcher/cron 프로세스 목록 + 각 프로세스 cwd/오픈파일 (`ps`, `ls -l /proc/<pid>/cwd`, `lsof`/`fuser` read-only)
- group_chat / done-watcher / taskctl / finish-task / replacement_pr_runner 자신을 호출하는 스케줄·cron 점검
- inotify 계열 관측(`inotifywait`)으로 누가 두 파일에 write/truncate 이벤트를 내는지 실시간 캡처 (read-only)
- git reflog / 최근 checkout·reset·stash 흔적으로 일괄 재기록 주체 역추적

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "/home/jay/workspace (★ 진단 read-only · 패치는 식별된 writer write-path 분리 최소 변경만)"
    - ".gitignore (식별된 데몬 state write-path 분리 시)"
    - "memory/events/task-2702.* · memory/reports/task-2702.md (보고)"
  forbidden_paths:
    - "utils/replacement_pr_runner.py · tests/regression/test_replacement_pr_runner_2510.py 에 skip-worktree 적용"
    - "PR #158 / PR #159 / PR #160 / task-2700 / task-2700+1 branch"
    - "dispatch.py · settings.json(live) · hooks/**(live · 식별 시 분리안 보고 후 회장 결재)"
  commands:
    - "read-only 진단: ps / lsof / fuser / stat / ls -l /proc/<pid> / inotifywait / git reflog,log,status,reflog (mutating 0)"
    - "최소 차단 패치: 식별된 writer 의 write-path 분리(코드/.gitignore/state-path) — 최소 변경"
    - "★ git reset/clean/push 금지 · skip-worktree(source/test) 금지 · main commit/push 금지"
  merge_policy: "diagnosis_then_minimal_writepath_separation_no_main_push"
  ttl_hours: 6
```

## ★ 완료 조건 / 검증 (회장 verbatim)

- flapping writer **원인 특정** (증거 기반 · 어떤 daemon/hook/watcher) — 못 하면 `OWNER_DECISION_REQUIRED` 보고
- write path 를 **workspace 외부 또는 ignored state 경로로 분리** (최소 차단 패치)
- `replacement_pr_runner.py` linecount **718 유지**
- `test_replacement_pr_runner_2510.py` linecount **493 유지**
- 두 파일 sha256 이 **HEAD/origin 정본과 10분 이상 안정**
- **git status flapping 0**
- **regression 최소 관련 테스트 PASS**
- **손실 0 manifest** 작성
- source/test 파일에 skip-worktree **미적용** 확인
- forbidden_action_count

## ★ 보고 필드

1. flapping writer 정체 (프로세스/스케줄/hook · 증거)
2. truncate 메커니즘 (왜 0바이트가 되는지 — git checkout/reset/stash/직접 write 중 무엇)
3. write-path 분리 패치 내역 (변경 파일 · diff 요약 · 최소성 근거)
4. 차단 후 10분+ 안정성 측정 (linecount/sha256 시계열)
5. source/test skip-worktree 미적용 확인
6. 현재 skip-worktree 15개 상태 파일 목록 (source/test 미포함 재확인)
7. forbidden_action_count

## 종결 (회장 verbatim)

성공: **`DAEMON_SOURCE_FILE_FLAPPING_BLOCKED_WRITE_PATH_SEPARATED`**

완료 후 보고:
- **`META_INFRA_PHASE1_CLOSEOUT_BLOCKED_ONLY_BY_FLAPPING_WRITER`** 해소 여부 보고
- 해소되면 ANU 가 10분+ 안정성 **독립 재확인** 후 메타 1차 종료선 체크리스트 **1회만** 정리
- 이후 **InsuWiki·InsuRo·보험 사업 작업으로 복귀**

★ 회장 verbatim 2026-05-28. read-only 진단 → 원인 writer 특정 → 최소 차단 패치 → 10분+ 안정성 검증 4단계 한정. source/test skip-worktree 금지. 원인 미특정 시 추정 패치 금지·OWNER_DECISION_REQUIRED. 추가 메타 개선 금지. `not META_INFRA_CLOSED_UNTIL_10MIN_STABILITY_PASS`.

끝

## 자동 요약
세션 task-2702이 CRITICAL 임계값(85%)에 도달하여 자동으로 요약되었습니다.
토큰 사용량: 7971.7%

## 재시작 안내
이 요약 파일을 기반으로 새 세션이 자동 시작됩니다.
팀: dev2-team
