---
task_id: task-3050
scope: task
team: dev8 (라/Ra)
title: update-system-spec.py 정기 실행 (2026-08-29 00:15 KST 회차)
status: 완료
exit_code: 1
result: success (데이터 손실 0건 — exit 1 은 알려진 cron 수집 실패 1섹션)
---

# task-3050 — update-system-spec.py 정기 실행 보고서

실행 시각 `2026-08-29 00:15:43 KST` · 종료 `00:15:48` · exit code **1**

## 1. 결론

문서 갱신은 **정상 완료**했고 데이터 손실은 없다. exit 1 은 `cron` 섹션
수집 실패 한 건 때문이며 알려진 거짓 양성이다(Critical 7 아님).

이번 회차는 **최근 6회차 중 처음으로 `task_stats` 외 실제 변경이 있었다** —
`skills` 103 → 104, 신규 `gpt-image` 추가. 디스크에서 실재를 확증했으므로
거짓 양성이 아니다.

## 2. 실행 결과 (원문)

```
[update-system-spec] 데이터 수집 시작...
  [OK] skills / services / projects / scripts / task_stats
  [FAIL] cron: ANU_CHAT 환경변수가 설정되지 않았습니다.   (stderr)
[update-system-spec] 변경 감지: ['skills', 'cron', 'task_stats']
[update-system-spec] /home/jay/workspace/memory/specs/anu-system-spec.md 업데이트 완료.
[update-system-spec] 변경 로그 기록 완료: .../anu-system-spec-changelog.md
```

## 3. 검증 — 실행 전후 대조

실행 전 `cp` 스냅샷 확보 → 실행 → 전문 `diff` + `AUTO:cron` 마커 구간 md5 대조.
(`awk` range 폭주를 피해 `sed -n '/AUTO:cron:START/,/AUTO:cron:END/p'` 마커 명시)

- 전체 파일: 1234행 → 1235행, 전문 diff **33행 / 2 hunk**
- `AUTO:cron` 블록 md5 **before = after = `af7090faa1da20f713b9f6e31ae7eb8c`**
  → **14회 연속 보존**. `created_at` 은 `2026-04-16 11:16:10` 동결 유지.
- changelog prepend 확인(`head`): `[2026-08-29 00:15]` 항목 3줄 정상 기록.

### hunk ① skills (실제 변경 — 확증)

```
-**총 103개 스킬**
+**총 104개 스킬**
+- `gpt-image`
```

실재 확인: `/home/jay/.claude/skills/gpt-image` → `/home/jay/tools/gpt-image-skill/gpt-image`
심볼릭 링크, 생성 시각 **2026-08-28 22:29:23 KST**. 스펙 갱신 3시간 46분 전 추가된
신규 스킬이므로 정상 반영이다.

### hunk ② task_stats (자기참조 포함)

총 작업 수 2290 → 2293 (+3), 완료 2225 → 2228. 증가분 3건 중 1건은
**본 task-3050 자신**의 타이머 start 다. 이 수치를 외부 활동량으로 읽지 말 것.

## 4. services — 무변화

- 변경 감지 목록에 `services` **없음**
- 스펙 17 = `systemctl --user list-units --state=running --type=service` 실측 17,
  **집합 diff 0줄**
- 플래핑 3종(`at-spi-dbus-bus`·`dbus`·`gpg-agent`) **10회 연속 present** —
  그래도 승격하지 않는다. 승격 조건은 회차 수가 아니라 *세션 재시작을 관통한 생존*이다.

## 5. ★ 잠복 정지 — `cloudflared-whisper.service` 6회차 연속 머무름

```
ActiveState=inactive / SubState=dead / ExecMainStatus=0 / Restart=on-failure
ExecMainExitTimestamp=Thu 2026-08-27 14:35:05 KST
```

경과 추적(단조 증가 = 왕복 없는 델타 확증):

- t3038 포착 → t3041 9h40m → t3043 15h40m → t3045 21h40m → t3047 27h40m →
  **t3050 33h40m**

`Restart=on-failure` 는 exit 0 정상종료에 구조적으로 미발동하므로
**수동 개입 전까지 자동 복구는 일어나지 않는다.**

실피해는 **여전히 0건**: `whisper-gpu.service` active, 프로브 HTTP **405**
(생존 판정은 코드 절대값이 아니라 응답 유무 — 404/405 차이는 메서드 불일치일 뿐).
canonical 소비자 `scripts/youtube-transcribe.py:32` 는 `http://localhost:8200/v1/transcribe`
직접 호출이라 튜널과 무관하다. 긴급도 낮음.

## 6. 백업 격자 (별개 스케줄 `EE825F5E`)

08-25_00 ~ 08-29_00 **17슬롯 중 16 존재**.

- 결번 **`2026-08-26_12` 모드B(레코드 부재 = 미발화) 1건 그대로**, 신규 결번 **0**
- 이번 회차 직전 백업 `2026-08-29_00` **정상 생성 확인**

## 7. 미해소 잠복결함 (계류)

1. `collect_cron()` — `ANU_CHAT`/`ANU_KEY` 미주입으로 매회 실패.
   근본 해소 2안: (a) 크론에 ANU 소유 환경변수 주입, (b) `detect_changes()` 가
   수집 실패 섹션을 변경으로 계산하지 않도록 수정. **팀 봇 키 대체 수집은 금지**
   (`--cron-list` 는 key 스코프 → 부분집합으로 문서 퇴행).
2. `collect_services()` **returncode 미검사** — 세션버스 실패 시 services 블록
   21줄 → 2줄 소실 가능(재현 완료, 실발생 0회). 위임 대상 계류.
3. `cloudflared-whisper.service` 영구 정지 — 처방 전 선행질문:
   **이 튜널의 외부 소비자가 실재하는가?**(repo 내 `trycloudflare` 실참조 0건)

## 8. 증거

`memory/reports/task-3050-evidence/` — 실행 전 스냅샷 `anu-system-spec.before.md`,
`full.diff`, `run.stdout.txt`, `run.stderr.txt`
