# task-2480 — git_evidence runtime noise 격리

- 작업 유형: **infrastructure / git_evidence dirty check 정합화**
- 작업 레벨: **Lv.2**
- 위임팀: **dev3-team** (다그다)
- Track: **dev_workspace**
- 우선순위: **★★ high** — daemon noise로 git_evidence verifier가 verifier 3회 연속 FAIL 트리거 (task-2476 ESCALATED 사유)
- 일시: 2026-05-07
- 선행: task-2476 verifier 3회 연속 FAIL: git_evidence (runtime noise 원인)
- 후행: 모든 PR의 git_evidence 검증 신뢰성 회복

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

> daemon heartbeat/log/runtime 파일이 QC dirty check를 오염시키지 않도록 한다.

## 0. 배경

- task-2476 ESCALATED 사유: `same_fail_count=5, failed_verifiers=["git_evidence"]`
- daemon이 만든 heartbeat/log/runtime 파일이 git status dirty로 잡혀 verifier 반복 실패
- 본 task는 ignore 패턴 정합화 + git rm --cached + git_evidence 검사 로직 보강

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

1. `logs/` ignore
2. `memory/events/heartbeat*` ignore
3. `memory/runtime/` ignore
4. `memory/state/` ignore
5. 이미 tracked 상태인 runtime 파일은 `git rm --cached`로 추적 해제
6. git_evidence dirty check에서 runtime-only path 제외

## 2. 엄격 주의 (회장 명시)

- `memory/` 전체 ignore 금지
- `memory/reports/` 제외 금지
- `.done`, `.escalate`, `.qc-result` 등 evidence 산출물 제외 금지
- source, tests, scripts, workflows dirty 변경은 계속 fail 처리

## 3. allowed_resources

```yaml
allowed_resources:
  paths:
    - ".gitignore"  # ★ 회장 명시 본 task 한정 허용
    - "scripts/git_evidence_check.py"  # 또는 g3 verifier 모듈
    - "scripts/g3_independent_verifier.py"
    - "utils/git_evidence_filter.py"  # 신설 가능
    - "tests/scripts/test_git_evidence*.py"  # 신설
    - "tests/regression/test_git_evidence*.py"  # 신설
    # 본 task 자체
    - "memory/tasks/task-2480*"
    - "memory/reports/task-2480*"
    - "memory/plans/tasks/task-2480/**"
    - "memory/events/task-2480*"
  forbidden_paths:
    # task 영역 (다른 작업)
    - "server/main.py"  # task-2475/2477 영역
    - "server/scripts/keyword_pool_refresh.py"  # task-2476 영역
    - "scripts/taskctl.py"  # task-2472 / task-2472+1 / task-2478 영역
    - "scripts/finish-task.sh"  # task-2472 영역
    - "scripts/done-watcher.sh"  # task-2472 영역
    - ".github/workflows/**"  # task-2479 영역
    - "utils/silent_corruption_guard.py"  # task-2472 영역
    # 보안
    - "memory/specs/allowed_bot_accounts.json"
    - "memory/specs/allowed_approvers.json"
    - "memory/orchestration-audit/admin-override.jsonl"
    - ".env.keys"
    - ".secrets/**"
  forbidden_actions:
    - "memory/ 전체 ignore 금지"
    - "memory/reports/ 제외 금지"
    - ".done/.escalate/.qc-result 등 evidence 산출물 ignore 금지"
    - "source/tests/scripts/workflows dirty 검사 약화 금지"
    - "admin override 금지"
    - "보고서만으로 완료 금지"
    - "git push --force 금지"
  bot_authentication:
    - "BOT_GITHUB_TOKEN .env.keys 자동 로드 (50분 systemd timer 자동 갱신)"
    - "PR author = jeon-jonghyuk-taskctl-bot[bot]"
  merge_policy: "★ runtime noise 격리 → git_evidence 안정화 → green path 자동 머지"
  ttl_hours: 4
```

## 4. 검증 (회장 명시)

- daemon running 상태에서 git_evidence PASS
- 실제 source dirty 변경은 여전히 FAIL (예: `tests/` 또는 `server/` 수정 → git_evidence FAIL 그대로)

## 5. 회귀 테스트

1. daemon heartbeat 변경 → git_evidence PASS
2. logs/ 변경 → git_evidence PASS
3. memory/runtime/ 변경 → git_evidence PASS
4. memory/state/ 변경 → git_evidence PASS
5. memory/reports/ 변경 → git_evidence PASS (evidence 산출물)
6. memory/events/*.done 변경 → git_evidence PASS (evidence 산출물)
7. **server/ 또는 src/ 또는 tests/ 변경 → git_evidence FAIL** (true positive 보존)
8. **scripts/ 변경 → git_evidence FAIL** (true positive 보존)
9. **.github/workflows/ 변경 → git_evidence FAIL** (true positive 보존)

## 6. 완료 조건

1. ✅ `.gitignore`에 4개 패턴 추가 (logs/ + memory/events/heartbeat* + memory/runtime/ + memory/state/)
2. ✅ tracked runtime 파일 git rm --cached 처리
3. ✅ git_evidence verifier에서 runtime-only path 제외 로직
4. ✅ 회귀 테스트 9건 PASS
5. ✅ daemon running 상태에서 git_evidence PASS evidence
6. ✅ source dirty 검사 보존 (true positive 9건 PASS)
7. ✅ PR 머지 + origin/main 반영 + DONE

## 7. ESCALATED 조건

- memory/ 전체 ignore → 즉시 reject
- evidence 산출물 ignore → 즉시 reject
- source/tests dirty 검사 약화 → 즉시 reject
- admin override → 즉시 reject
- 회귀 테스트 9건 미충족 → ESCALATED
- 보고서만으로 완료 → ESCALATED

## 8. 보고서 필수 항목 (`memory/reports/task-2480.md`)

1. `.gitignore` diff (4개 패턴)
2. tracked runtime 파일 git rm --cached 로그
3. git_evidence verifier 모듈 변경 diff
4. 회귀 테스트 9건 코드 + 실행 로그
5. daemon running 상태 git_evidence PASS evidence
6. source dirty 보존 evidence (true positive 9건)
7. PR merge commit SHA + origin/main ancestry

## 9. 위임 완결성 4대 규칙

1. 수신 확인: dispatch 출력
2. 빌드+배포: PR 생성 + CI/Gemini/G3 PASS + merge + main HEAD 갱신
3. 실 E2E: daemon running 상태 git_evidence PASS + source dirty 보존
4. 구조 선행 파악: 현재 git_evidence verifier 코드 + .gitignore 구조 + tracked runtime 파일 목록

## goal_assertions
- `git check-ignore logs/test.log memory/events/heartbeat-test memory/runtime/test memory/state/test` (모두 ignored)
- `git check-ignore server/main.py tests/test.py scripts/x.sh` (모두 NOT ignored — true positive 보존)
- `pytest /home/jay/workspace/.worktrees/task-2480-dev3/tests/scripts/test_git_evidence_filter.py /home/jay/workspace/.worktrees/task-2480-dev3/tests/regression/test_git_evidence_runtime_noise.py -v` (19 PASS — 단위 10 + 회귀 9)
- `gh pr view <PR> --json state,mergedAt,mergeCommit` (state=MERGED)