# task-2666 — BACKLOG_SEPARATION_PACKET_TRIAGE_4_ITEMS 보고서 (Track D-1)

## SITUATION

PR #148 (task-2661 Phase 2b · callback normal fire delay → absolute timestamp · merge commit `2752182a`) merge 이후 회장 결정 대기 중인 4 backlog 이슈가 누적. 회장 verbatim 2026-05-25 결정: "4건을 실제 처리하지 말고 분리 처리안만 작성" + executor 지정 = dev8 라.

- task: task-2666 (Track D-1)
- chair_authorization_id: `CHAIR-AUTH-BACKLOG-SEPARATION-PACKET-20260525-JJONGS-TRIAGE-001`
- task_md_sha256: `3f68ea50fe5a990a1f7c782350b41f4a8d813b836af8191510dd0f6f18ab6c1f`
- base: `origin/main` HEAD `2752182a`
- worktree: `/home/jay/workspace/.worktrees/task-2666-dev8` (branch `task/task-2666-dev8`)

## COMPLICATION

- 본 task는 **packet/spec only** — 실 cleanup / push / PR / merge / branch 삭제 / local main reset 0 강제 (★ task md 금지 7 verbatim).
- Track A-1 (PR #149) / B-1 (Axis 3 observer chain) / C-1 (v3.6 shadow-mode) 파일 충돌 0 anchor 강제. `memory/specs/v3_6_pretooluse_*.md` / `memory/events/task-2657*~2665*` / `memory/tasks/task-2641*~2665*` forbidden_paths.
- Axis 3 RUNNING 자동선언 0 · HARNESS_ENFORCED 전체 선언 0 · full rollout 0 · policy 승격 0 · BLOCK 정책 확대 0 · live settings.json 변경 0 · dispatch.py 변경 0 · hooks/* 변경 0 · auto-merge 0 — 공통 금지 verbatim 유지.

## QUESTION

4 backlog 이슈를 각각 분리 가능한 처리안으로 박제하면서, 한 item 처리가 다른 item 처리를 강제하지 않는 구조를 어떻게 spec/packet 형태로 박제할 것인가? 그리고 Track A/B/C 파일 충돌 0 + forbidden_action_count 0을 어떻게 검증할 것인가?

## ANSWER

### 1. 5 spec packet 작성 (★ 신규 4 + 통합 1)

| 파일 | 내용 | 라인 |
| --- | --- | --- |
| `memory/specs/backlog_item_1_task_2642_d4098b04_separation_260525.md` | task-2642 d4098b04 별도 PR 생성안 + dependency + risk | 82 |
| `memory/specs/backlog_item_2_task_2660_c6425611_cleanup_260525.md` | task-2660 c6425611 worktree cleanup 시점 + forensic chain anchor | 91 |
| `memory/specs/backlog_item_3_pr_147_separation_260525.md` | PR #147 merge vs 폐기 분석 + CI/Gemini 현황 + 의존 task | 99 |
| `memory/specs/backlog_item_4_local_main_divergent_260525.md` | local main 5/66 divergent 원인 + 정리 옵션 (A/B/C/D) + 손실 위험 | 126 |
| `memory/specs/backlog_separation_packet_4_items_260525.md` | 통합 packet (요약 표 + 상호 관계 매트릭스 + 금지 점검 + ANCHOR 6) | 110 |

### 2. 핵심 측정 결과 (★ git log / git rev-list / git ls-remote / read_only_reference 직접 확인)

- **task-2642 d4098b04**: commit `2026-05-23 20:12:34 KST`, parent `0e172435`, 26 files / 3053+ insertions / 0 deletions, branches=`task/task-2642-runner` (★ origin 미반영) + 후속 task branches(2659/2660/2661). ★ local main HEAD 5a29d3ee의 reachable chain에는 **미포함** — task md item 1 표현 "local main 잔류"는 표현 보정 필요 (★ result marker `discrepancy_note_chair_facing_recommended` 박제).
- **task-2660 c6425611**: commit `2026-05-25 15:29:02 KST`, parent `d4098b04`, 5 files / 495+/5-, branch=`task/task-2660-dev1`, worktree 보존, **SUPERSEDED by PR #148 `2752182a`** (★ pr-148-merged 마커 field 8 박제).
- **PR #147**: source `2de8118e` (`refs/pull/147/head`), merge ref `5cc91c4d`, branch `task/task-2659-dev6` (★ origin 반영), 6 files, source task=task-2658 (★ chair_verified · regression 7/7 PASS · forbidden_action_count 0). `utils/anu_spawn_visibility_guard/` 5 + `tests/anu_spawn_visibility_guard/test_regression_6.py` 1 추정.
- **local main divergent**: `/home/jay/workspace` HEAD `5a29d3ee` · origin `2752182a` · 5 ahead 66 behind. 5 ahead = task-2568/2569 chain (★ task-2642/2660과 무관 · 별도 chain). working tree DIRTY (runtime state 5 modified + .acked/.notified/.escalated 대량 D).

### 3. 4 Items 상호 관계 (★ 통합 packet 박제)

```
              task-2642 d4098b04    task-2660 c6425611   PR #147 2de8118e   local main 5/66
task-2642     —                     parent of c6425611   미관련             미관련 (★ chain 분리)
task-2660     child of d4098b04     —                    미관련             미관련
PR #147       2de8118e가 d4098b04 위 chain (참고)         —                  미관련
local main    미포함                 미포함                미포함             —
```

★ 4 items 모두 독립 정리 가능.

### 4. 보고 필수 7 (task md verbatim)

1. **track_id**: D-1
2. **task_id**: task-2666
3. **expected_files**: 8 (★ 5 specs + done + result + report)
4. **overlap 여부 (Track A-1 / B-1 / C-1)**: **0** (★ 본 task 산출 파일 모두 `memory/specs/backlog_*.md` + `memory/events/task-2666.*` + `memory/reports/task-2666.md` · A/B/C forbidden_paths 0 위반)
5. **forbidden_action_count**: **0** (★ 금지 7 + 공통 금지 9 모두 0)
6. **status**: **`BACKLOG_SEPARATION_PACKET_READY`**
7. **recommended next action (4건별)**:
   - Item 1 (task-2642): 사전 충돌 scan → 별도 PR (rebase/cherry-pick) → Gemini → squash merge · 시점: Track B/C 종료 후 또는 별도 회장 결정
   - Item 2 (task-2660): forensic tag 박제 → worktree prune → branch 삭제 · 시점: ttl 48h 만료(2026-05-27 15:29:02 KST) 또는 회장 결정
   - Item 3 (PR #147): `gh pr checks 147` + reviews 점검 → Pyright false positive `[DISMISS]` 박제 → squash merge · 시점: Axis 3 real_t0+24h 도달 후 권장
   - Item 4 (local main): 옵션 C (backup branch + stash + reset --hard origin/main) + 5 commits PR 매핑 분석 · 시점: working tree dirty 정리와 함께 별도 task 분할

### 5. ANCHOR 6 점검 (★ 6/6 OK · 통합 packet 표 박제)

- ANCHOR-1 packet only · 실 cleanup/push/PR/merge 실행 0 ✅
- ANCHOR-2 Track A-1 / B-1 / C-1 파일 충돌 0 ✅
- ANCHOR-3 4건 각각 분리 처리안 · 통합 처리 0 ✅
- ANCHOR-4 live settings.json / dispatch.py / hooks/* / Axis 1·2·3 runtime 변경 0 ✅
- ANCHOR-5 Axis 3 RUNNING 자동선언 0 · HARNESS_ENFORCED 전체 선언 0 ✅
- ANCHOR-6 task-2642/2660/PR147 실제 처리 0 (★ packet 만) ✅

## 머지 판단

- **머지 필요**: **No** (★ 회장 verbatim 금지 7: actual push / PR create / merge / branch delete / local main reset 모두 0)
- **브랜치**: `task/task-2666-dev8` (★ origin/main 기준)
- **워크트리 경로**: `/home/jay/workspace/.worktrees/task-2666-dev8`
- **base commit**: `2752182a` (★ PR #148 merge)
- **머지 의견**: 본 task는 backlog triage packet/spec only. commit/push/PR/merge **전면 금지**(★ task md 금지 7 + 공통 금지 9 verbatim). result marker + report + .done + 5 specs만 박제하며 코드 자체는 staging 상태로 격리. **회장 verbatim 후속 결정 강제** (★ Item 1~4 각 packet의 recommended next action 참조).

## 발견 이슈 및 해결

- **이슈 1 (★ INFO · 표현 보정 권장)**: task md `## 처리 대상 4건` item 1 "task-2642 d4098b04 (★ CI_WATCH_HANDOFF_RUNNER · local main 잔류 unmerged commit · origin/main 미반영)" 표현이 본 packet 측정 시점 실제 상태와 차이.
  - **측정 사실**: `/home/jay/workspace` HEAD `5a29d3ee`의 reachable chain `git log origin/main..HEAD` 5건은 task-2568/2569 chain. d4098b04는 본 chain 미포함, `task/task-2642-runner` branch + 후속 task branches에만 잔류.
  - **원인 추정**: task md 작성 시점(★ pr-148-merged 마커 field 9에서 'local main HEAD = d4098b04' 표현)과 본 packet 측정 시점 사이 main HEAD 이동(★ task-2568/2569 commits 적용) 발생.
  - **해결**: Item 1 packet 본문 + result marker `discrepancy_note_chair_facing_recommended` 박제. ★ 별도 PR 생성안은 "task/task-2642-runner branch tip에서 cherry-pick onto origin/main"으로 가정. 회장 verbatim 표현 보정 권장.
- **이슈 2 (★ 차단 0)**: `allowed_resources.commands`에 `gh` 미포함 + task md "실 처리 0" anchor → PR #147 직접 CI/Gemini 조회 0. **해결**: read_only_reference (task-2658 chair_verified marker)와 `git ls-remote origin refs/pull/147/*` 기반으로 source commit/merge ref/branch label 박제. Gemini 사전 점검은 회장 결정 시 적용 절차로 packet 박제.

## 모델 사용 기록

- 본 task: Opus 4.7 (1M context) 직접 수행 — 회장 verbatim executor 지정 (dev8 라) + Lv.3 critical packet/spec triage. Sonnet sub-agent 위임 없음 (★ 5 spec packet 모두 회장 verbatim anchor·forbidden 7·공통 금지 9를 1:1 박제해야 하므로 main 페르소나 직접 작성 정당).

## 종결

회장 verbatim 완료 상태: **`BACKLOG_SEPARATION_PACKET_READY`**

끝
