# Backlog Item 2 — task-2660 c6425611 Cleanup Packet (★ spec only · 실 처리 0)

- task: task-2666 (Track D-1)
- chair_authorization_id: `CHAIR-AUTH-BACKLOG-SEPARATION-PACKET-20260525-JJONGS-TRIAGE-001`
- scope: worktree cleanup 시점 결정안 + forensic chain 보존 anchor (★ 실 cleanup 0)
- ttl_hours: 48

## 1. Current State (★ git log + read_only_reference 직접 확인)

- commit sha: `c6425611f5def45c45b3eeb4cd655afe03d27033`
- commit title: `task-2660 Phase 2 — normal callback fire delay 10m → 10s`
- author: `jeon-jonghyuk-taskctl-bot[bot]`
- committed_at: `2026-05-25 15:29:02 +0900`
- parent: `d4098b042822728d6b09ee235e8d2f8f6a3fff1f` (★ task-2642 commit · 본 packet Item 1)
- branches containing: `task/task-2660-dev1` (★ local-only · origin 미반영)
- worktree path: `/home/jay/workspace/.worktrees/task-2660-dev1` (★ 보존 中)
- diff scale: 5 files / 495 insertions / 5 deletions
- supersession status: **SUPERSEDED by PR #148 merge `2752182a`** (★ task-2661 Phase 2b absolute timestamp 30s)

## 2. Supersession Evidence (★ read_only_reference 박제)

`memory/events/pr-148-merged-callback-normal-fire-delay-remediation-p2b-merged-260525.json` 참조 (★ field `8_task_2660_c6425611_superseded_marker_required`):

```
status: "★ task-2660 commit c6425611 (worktree task-2660-dev1) = SUPERSEDED by PR #148 merge commit 2752182a"
task_2660_branch: "task/task-2660-dev1 (★ 보존 · 회장 결정 대기)"
task_2660_worktree_path: "/home/jay/workspace/.worktrees/task-2660-dev1 (★ ttl 48h 만료 시 자동 정리 또는 회장 결정 cleanup)"
task_2660_anchor_chair_verbatim_preservation: "★ task-2660 산출물 삭제 금지 anchor 유지 (★ forensic chain)"
```

## 3. Affected Paths (★ supersession 대응 분석)

| path | c6425611 변경 | PR #148(2752182a) 대체 변경 | supersession 정합성 |
| --- | --- | --- | --- |
| `dispatch/normal_fallback_callback_helper.py` | 10m → 10s 상대시각 | now+30s 절대시각 + helper 확장 | ★ PR #148이 상위호환 (10s 자체 정책도 무력화) |
| `scripts/finish-task.sh` | callback `--at "10s"` | callback `--at "$T2661_NORMAL_ABSOLUTE_AT"` | ★ PR #148이 cokacdir grammar 'Xs' 미지원 우회 |
| `tests/callback_fire_delay_remediation/test_regression_6.py` | 10s 기준 회귀 | PR #148 R1~R8 + R9 신규 3 (★ 29 passed) | ★ PR #148 회귀 suite가 c6425611 회귀를 포섭 |
| `tests/callback_fire_delay_remediation/__init__.py` + `conftest.py` | 신규 | PR #148이 동일 package 재사용 | ★ 동일 |

★ 결론: c6425611의 모든 변경이 PR #148에 의해 기능적으로 흡수됨. **재반영 불필요**.

## 4. Worktree Cleanup 시점 결정안

- **commit 기준 ttl 48h 만료 시각**: `2026-05-25 15:29:02 KST` + 48h = `2026-05-27 15:29:02 KST` (★ commit_at 기준 추정 · worktree 마지막 mtime 기준 적용 시 별도)
- **task md allowed_resources.ttl_hours = 48** (★ 본 task 자체 ttl과 동일 시각 권장)

### 옵션 A — TTL 자동 cleanup (worktree_manager TTL 정책 의존)
- 장점: 인적 개입 0 · 자동화 우선
- 위험: forensic chain 보존 anchor 위반 가능 (★ 자동 cleanup이 branch까지 삭제하면 c6425611 reachable 0 → git GC)

### 옵션 B — 수동 cleanup (★ 회장 결정 시점) **(권장)**
- 절차:
  1. forensic tag 박제 (★ 본 packet 범위 외 · 회장 결정 시 적용):
     ```
     git tag forensic/task-2660-c6425611-superseded-by-pr-148-260525 c6425611
     git push origin forensic/task-2660-c6425611-superseded-by-pr-148-260525
     ```
  2. worktree prune: `git worktree remove /home/jay/workspace/.worktrees/task-2660-dev1`
  3. branch 정리: `git branch -D task/task-2660-dev1` (★ tag로 reachable 보장 후)
- 장점: forensic chain 영구 보존 + 디스크 회수
- 위험: 0 (★ tag prefix `forensic/`가 GC 차단)

### 옵션 C — 무기한 보존
- 장점: 안전 최대화
- 위험: worktree 누적 (★ task-2660-dev1는 25818+ files 체크아웃 상태 · 디스크 압박)

### 권장: **옵션 B** + 회장 결정 대기

## 5. Forensic Chain 보존 Anchor

- **anchor 1**: PR #148 result marker(`pr-148-merged-...-260525.json`)에 c6425611 SUPERSEDED 박제 — **완료**
- **anchor 2**: 본 packet(`memory/specs/backlog_item_2_task_2660_c6425611_cleanup_260525.md`)에 commit metadata + diff scale + supersession evidence 박제 — **본 파일로 완료**
- **anchor 3 (★ 권장 · 본 packet 범위 외)**: `forensic/task-2660-c6425611-superseded-by-pr-148-260525` tag (★ 회장 결정 시 적용)
- **anchor 4 (★ 본 packet 범위 외)**: task-2660 worktree 내부 artifact (memory/events/task-2660.* / memory/reports/task-2660.md) 별도 archive

## 6. Recommended Action Sequence (★ 본 task 범위 외 · 회장 결정 위임)

1. 회장 verbatim 결정 수신
2. forensic tag 박제 (anchor 3)
3. worktree artifact archive (anchor 4)
4. worktree prune
5. branch 삭제
6. result marker 박제 (cleanup-completed)

## 7. forbidden_action_count

**0**. 실 worktree prune / branch 삭제 / tag 박제 — 전 0. 본 packet 작성만 수행.

## 8. ANCHOR 6 점검

ANCHOR-1~6 모두 ✅ — 본 파일은 Item 2 단독 spec, Track A/B/C 파일 충돌 0, task-2660 실제 처리 0.
