# task-3055 — 시스템 스펙 자동 업데이트 (2026-08-29 12:15)

## 실행
```
python3 /home/jay/workspace/scripts/update-system-spec.py
EXIT=1
```

수집 결과: skills OK · services OK · projects OK · scripts OK · task_stats OK · **cron FAIL**
변경 감지: `['skills', 'cron', 'task_stats']`

## 결과 요약

| 항목 | 판정 |
|---|---|
| 문서 갱신 | 성공 |
| changelog 기록 | 성공 (12:15 항목 3줄) |
| exit code 1 | cron 섹션 단독 실패 — 데이터 손실 0, Critical 7 아님 |
| `AUTO:cron` 블록 | **16회 연속 보존** (md5 before=after=`af7090fa…`, diff 0줄) |

## 전문 diff — 16줄 / 2 hunk

1. **skills 104 → 103, `gpt-image` 삭제**
2. **task_stats** 2295→2297 (완료 2230→2231, 완료율 97.2%→97.1%)

### skills 델타는 거짓 양성이 아니다 (실측 확인)
```
~/.claude/skills/gpt-image      심볼릭 링크 부재 (실측)
~/.claude/skills 실제 개수       103  = 스펙 103  일치
링크 대상 /home/jay/tools/gpt-image-skill/  디렉터리는 잔존 (내용 온전)
/home/jay/tools 디렉터리 mtime   08-29 11:01  (갱신 1시간 14분 전)
```
즉 스킬 본체가 아니라 **`~/.claude/skills` 등록 링크만** 제거됐다.

### ★ 이번 회차 특이점 — skills 가 처음으로 왕복(round-trip)했다
```
t3050 (08-29 00:15)  skills 103 → 104   gpt-image 추가 (링크 생성 08-28 22:29)
t3055 (08-29 12:15)  skills 104 → 103   gpt-image 삭제 (~08-29 11:01)
```
추가 → 12시간 45분 만에 삭제. 지금까지 왕복 사례는 세션 종속 user 유닛
(`at-spi-dbus-bus`·`dbus`·`gpg-agent`)뿐이었고, 그건 세션 유무로 자동으로 뜨고 진다.
**이 건은 세션 종속이 아니라 사람이 만든 심볼릭 링크다** — 자동 플래핑으로 분류하면 안 된다.
판정: 두 회차 모두 **실제 변경**이며, 원인은 수동 조작으로 추정(설치 시도 후 회수).
gpt-image 스킬을 쓰실 의도였다면 링크가 사라졌으니 재등록이 필요하다 → **회장님 확인 필요**.

### 행번호 이동 주의
파일 1235→1234행이라 cron 마커가 602→**601**로 1행 밀렸다. 블록 변경 아님(md5 동일).

## AUTO:cron 보존 검증
```
before  sed -n '/AUTO:cron:START/,/AUTO:cron:END/p'  602~659행  af7090faa1da20f713b9f6e31ae7eb8c
after   sed -n '/AUTO:cron:START/,/AUTO:cron:END/p'  601~658행  af7090faa1da20f713b9f6e31ae7eb8c
블록 diff  0줄
created_at  "2026-04-16 11:16:10"  동결
```
(`awk` range 폭주 회피 — 마커 명시 방식 유지)

원인은 기존과 동일: `scripts/update-system-spec.py:29` 의 `ANU_CHAT` 환경변수가
크론 환경에 주입되지 않음. `detect_changes()` 가 수집 실패(new=None)를 변경으로
계산해 changelog 에만 `[cron] 데이터 변경`이 남고, 문서 갱신 루프는 건너뛴다.
→ **13회 연속 동일**(t3015 이래). 이 로그를 "cron 스케줄 변경" 근거로 쓰면 안 된다.
→ 팀 봇 키로 대체 수집 금지(키 소유자 스코프 → 부분집합 덮어쓰기로 문서 퇴행).

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

## ★ 잠복 정지 추적 — cloudflared-whisper.service (8회차)
```
ActiveState=inactive  SubState=dead  ExecMainStatus=0
ExecMainExitTimestamp = 2026-08-27 14:35:05 KST
```
```
t3038 포착 → t3041 9h40m → t3043 15h40m → t3045 21h40m
→ t3047 27h40m → t3050 33h40m → t3053 39h40m → t3055 45h40m
```
단조 증가 = 왕복 없는 델타. `Restart=on-failure` 는 exit 0 에 구조적으로 미발동하므로
**자동 복구는 일어날 수 없다.**
실피해 여전히 0건 — `whisper-gpu.service` active, 프로브 HTTP 405(메서드 불일치 = 생존),
canonical 소비자 `scripts/youtube-transcribe.py:32` 는 `localhost:8200` 직접 호출이라 터널 무관.

## 백업 격자 (08-25_00 ~ 08-29_12)
```
19슬롯 중 18 존재
결번  2026-08-26_12  (모드B = 레코드 자체 부재)  1건 그대로
신규 결번  0
직전 백업  2026-08-29_12  정상 생성
```

## 자기참조 주의
`task_stats` 증가분 +2 중 1건은 **본 task 자신**의 타이머 start 다.
외부 활동량으로 읽지 말 것.

## 판정
정상 완료. 회장님 개입 필요 사항은 아래 "판단 대기" 2건뿐이며 둘 다 긴급도 낮음.

### 판단 대기
1. **gpt-image 스킬 링크 삭제** — 의도된 회수인지, 사고인지 확인 필요. 본체는 잔존.
2. **cloudflared-whisper 45시간 40분 정지** — 실피해 0건이나 자동 복구 불가.
   선행 질문 유지: 이 터널의 외부 소비자가 실재하는가?
