# task-2484 — main workspace hygiene cleanup / external close blocker 제거

- 작업 유형: **workspace hygiene / lifecycle close blocker 해소**
- 작업 레벨: **Lv.2** (분류 + 정리, 광역 위험 있음)
- 위임팀: **(아누 추천 → 회장 승인 대기)**
- 우선순위: **★★ blocking** — task-2483 MERGED_CLOSE_BLOCKED_EXTERNAL 해소 의존
- 일시: 2026-05-07
- 선행: task-2483 PR #45 MERGED, dev1 task-2479 MERGED, dev1 task-2472+2 진행 중
- 후행: 본 task 완료 → dev3 task-2483 finish-task.sh 재실행 → MERGED_DONE/DONE 정리

## ⚠️ 본 task의 본질 — 회장 명시

> 메인 workspace의 dev1 task-2479 영역 잔여물 및 systemd 운영 복사본으로 인해 다른 task의 git_evidence가 오염되는 문제를 제거한다.
> 광역 파괴 명령 금지. 분류 후 적절한 처리.

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "memory/tasks/task-2484*"
    - "memory/reports/task-2484*"
    - "memory/plans/tasks/task-2484/**"
    - "memory/events/task-2484*"
    - ".gitignore"
    - "memory/runtime-config*.json"  # 신설 가능 (운영 복사본 위치 명시)
    - "logs/.gitignore"               # 운영 로그 ignore
  forbidden_paths:
    - "scripts/refresh_bot_token.py"  # task-2483 산출물, 임의 삭제 금지
    - "tests/regression/test_refresh_bot_token*.py"
    - "utils/state_repair.py"          # task-2472 본질
    - "utils/g3_fail_classifier.py"
    - "scripts/taskctl.py"             # 본질 로직
    - "scripts/dispatch.py"
    - "scripts/finish-task.sh"
    - ".github/workflows/**"           # task-2472+2 영역
    - "memory/events/task-2472*"        # task-2472 시리즈 영역
    - "memory/events/task-2479*"        # task-2479 영역
    - "memory/events/task-2481*"
    - "memory/events/task-2483*"        # task-2483 close 마커는 본 task 완료 후 재실행 시점에 처리
    - ".secrets/**"
  forbidden_actions:
    - admin_override
    - branch_protection_bypass
    - force_merge
    - "git reset --hard"               # ★ 광역 파괴 금지
    - "git checkout --"                # 광역 파괴 금지
    - "git clean -f"                   # 광역 파괴 금지
    - delete_dev1_task2479_artifacts   # dev1 task-2479 변경 임의 삭제 금지
    - delete_pr107_artifacts           # PR #107 관련 산출물 삭제 금지
    - misclassify_source_as_runtime    # source/test/workflow 파일을 runtime noise로 오분류 금지
```

## 0. 배경 — 차단 evidence

- task-2483 PR #45 MERGED (commit 37e26ed4) — 본질 PASS, forbidden 0
- post-merge `finish-task.sh`에서 `git_evidence: NO_UNCOMMITTED` FAIL
- 잔여물: 4 unstaged + 9 staged 파일 (메인 workspace `task/task-2479-dev1` 브랜치)
- 봇이 retry 3회 초과 escalate, `.close-blocked-external` 박제됨
- 회장 분류: `MERGED_CLOSE_BLOCKED_EXTERNAL`

## 1. 작업 범위 (회장 명시 6단계)

### Step 1. git status 식별
- 메인 workspace `git status`에서 4 unstaged + 9 staged 파일 정확한 목록 확보
- 각 파일 path + 수정 유형(M/?? /D /A) 정리

### Step 2. 파일별 owner 분류
각 파일을 다음 카테고리 중 하나로 분류:
- (a) dev1 task-2479 산출물 — 보존, 적절한 위치로 이동/staged 정리
- (b) systemd 운영 복사본 (예: `scripts/refresh_bot_token.py` 운영본) — 운영 중단 방지 목적, repo 외부 runtime 위치로 이동 또는 ignore 처리
- (c) 시스템 활동 파일 (heartbeat, bot-activity.json 등) — git_evidence 검사 제외 (.gitignore 추가)
- (d) 다른 task 정리 흔적 (`.done.acked`, `.notified` rename) — dev1 영역, 임의 변경 금지
- (e) 실제 source 변경 — 식별 후 회장 보고, 본 task 범위 외

### Step 3. 분류별 적절한 처리
- (a) 보존: 적절한 artifact/report 경로로 이동 또는 staged 유지
- (b) repo 외부 runtime: `~/.local/var/cokacdir/runtime/` 또는 명시 위치로 심볼릭 링크 + repo는 .gitignore
- (c) `.gitignore` 추가 (단, source/test/workflow 파일을 noise로 오분류 금지)
- (d) 그대로 유지, 임의 변경 금지
- (e) 별도 보고 후 본 task 범위 제외

### Step 4. unstage 또는 정리
- 잘못 staged된 파일 unstage
- 운영 복사본은 untracked로 이동 또는 .gitignore 적용
- daemon running 상태에서 git status가 clean 또는 무관한 변경만 남도록 정리

### Step 5. 검증 (필수 4건)
- main workspace `git status` clean (또는 본 task 외 변경만 잔존)
- daemon running 상태에서 `git_evidence` PASS 시뮬레이션
- 실제 source dirty 변경(있다면)은 git_evidence FAIL 유지 (false negative 금지)
- task-2483 finish-task.sh 재실행 시뮬레이션 PASS 또는 close-blocked 해제 가능 검증

### Step 6. 보고 (필수)
- 분류 결과 표 (파일 path / owner / 처리 방식 / evidence)
- 검증 결과 4건 (PASS / FAIL / N/A)
- forbidden_actions 위반 0건 검증
- task-2483 finish-task.sh 재실행 가능 여부 명시

## 2. 합격 조건 (회장 명시 7건)

1. ✅ 메인 workspace `git status` clean (본 task 외 변경 0)
2. ✅ daemon running 상태에서 git_evidence PASS
3. ✅ 실제 source dirty 변경은 git_evidence FAIL 유지 (false negative 금지)
4. ✅ task-2483 finish-task.sh 재실행 가능 (close-blocked 해제 가능)
5. ✅ dev1 task-2479 산출물 보존 (임의 삭제 0)
6. ✅ PR #107 산출물 보존
7. ✅ forbidden_actions 위반 0건

## 3. 금지 (회장 명시 7건)

- ❌ dev1 task-2479 변경 임의 삭제
- ❌ PR #107 관련 산출물 삭제
- ❌ source/test/workflow 파일을 runtime noise로 오분류
- ❌ `git reset --hard`, `git checkout --`, `git clean -f` 같은 광역 파괴 명령
- ❌ admin override / branch protection bypass / force merge
- ❌ task-2483 마커(.done/.escalate/.close-blocked-external) 임의 변경
- ❌ task-2472+1 / task-2479 / task-2481 영역 침범

## 4. 보고 형식

- SCQA 4섹션
- Step 1~6 각 결과 (PASS / FAIL / N/A)
- 합격 조건 7가지 evidence 포함
- 분류 결과 표 (파일별 owner + 처리 방식)
- forbidden_actions 위반 0건 검증

## 5. 시스템 3문서 참조 (필수)

- 시스템 청사진: `/home/jay/.claude/projects/-home-jay--cokacdir-workspace-autoset/memory/system_bot_orchestration_blueprint_260506.md`
- MERGED_CLOSE_BLOCKED_EXTERNAL 분류 룰: `/home/jay/workspace/memory/feedback/feedback_merged_close_blocked_external_classification_260507.md`
- task-2483 close-blocked-external 마커: `/home/jay/workspace/memory/events/task-2483.close-blocked-external`
- Phase B 통합 항목: `/home/jay/workspace/memory/orchestration/phase_b_integration_items_260507.md`

## 6. 후속 (회장 명시 — 본 task 범위 외)

- 본 task 완료 후 dev3 task-2483 finish-task.sh 재실행
- 성공 시: task-2483 `.close-blocked-external` 해제, MERGED_DONE/DONE 정리, `.escalate`에 final_state_resolved=true 추가
- 실패 시: 남은 blocker 보고, 자동 retry 금지

## goal_assertions (auto-generated)
- `git status --porcelain | grep -v '^?? memory/runtime' | wc -l` → 0 (또는 본 task 외 변경만)
- `python3 scripts/check_git_evidence.py` 또는 동등 시뮬레이션 → PASS
