---
task_id: task-2701
type: context
scope: task
created: 2026-05-28
updated: 2026-05-28
status: completed
---

# 맥락 노트: task-2701 (Phase A read-only)

**task**: task-2701

---

## 결정 근거

### [핵심 결정 1] task 전제(ahead 68/behind 6)가 현재 사실(ahead 6/behind 69)과 역전됨 — 보고에서 최우선 명시
- 측정(2026-05-28 00:09 KST): local main=f14b3850, origin/main=f3550d9f, merge-base=6220f5b5 → ahead **6** / behind **69**.
- task 작성 시점 origin/main(a2a20f94, PR#155)은 현재 origin/main의 **조상**(merge-base --is-ancestor YES) → 과거 "ahead 68" 미push 산물 대부분이 PR 파이프라인(#135~#159, task 2632~2699)으로 upstream 반영됨.
- 기각된 해석: "여전히 ahead 68" → rev-list 실측으로 부정.

### [핵심 결정 2] ahead 6 commit 손실 위험 = 0 (실측 기반)
- 6개 commit 전부 `refs/remotes/origin/task/task-2699-dev1` + `task/task-2691-dev8`에서 도달 가능(for-each-ref --contains) → 이미 push됨.
- f14b3850은 추가로 PR #154(OPEN)로도 보존.
- 따라서 `reset --hard origin/main`을 해도 6 commit 자체는 손실 0. 단, **추적 working-tree 수정(M 21·D 44)은 reset 시 소실**되므로 별도 보존 필수.

### [핵심 결정 3] dirty 재발 근본 원인 = 데몬 상태 파일이 tracked + gitignore 미적용
- bot-activity.json / member-status.json / task-timers.json / token-ledger.json / pipeline-status.json / whisper/* 모두 tracked & not-ignored → 데몬이 추적 파일을 계속 재기록 → 영구 dirty.
- 정리만 하면 즉시 재발. 근본 해결은 .gitignore 추가 또는 데몬 write 경로 분리(Phase B, task-2700 힌트와 일치).

## 3 Step Why 자문 (설계 검토)
- 1st Why (왜 read-only 분석 선행이 필요한가?): A = git 상태 변경은 되돌리기 어렵고 ahead/dirty 손실 시 복구 불가 → 사실 확정 후 회장 결재가 안전.
- 2nd Why (왜 A가 최선인가?): B = task 전제가 이미 역전된 상태(ahead 68→6)였음을 read-only 측정으로 발견 → 잘못된 전제로 reset 실행했다면 불필요/위험. 분석 선행이 오판을 차단.
- 3rd Why (왜 B가 대안보다 나은가?): C = "즉시 reset 정리" 대안은 ahead-commit은 안전했어도 추적 수정 8건(spec +42, replacement_pr_runner 718줄 삭제 등)을 소실시킴. 분석 선행만이 이 보존 대상을 사전 식별. → A-B-C 일관(사실확정→오판차단→보존누락방지).

## 참조 자료
- task 지시서: `memory/tasks/task-2701.md`
- divergence_guard/dirty_registry(미머지): `.worktrees/task-2700-dev6/utils/{divergence_guard,dirty_registry}.py`
- 보고서: `memory/reports/task-2701.md`

## 주의사항
- ★ Phase A는 read-only. mutating git 0회 유지(forbidden_action_count=0).
- ★ Phase B(실제 정리)는 회장 승인 + 별도 범위 확정 후에만. 본 task로 reset/clean/stash 실행 금지.
- reset --hard origin/main은 ahead 6은 안전하나 추적 working-tree 수정 21M·44D 소실 → 반드시 보존(stash/preserve branch/patch archive) 선행.
- untracked 821은 origin/main과 충돌 0건 → reset로 소실되지 않음(보존됨). 단 `git clean` 사용 시 소실되므로 Phase B에서 clean 금지/선별.
